トップページ⇒php
1001コメント269KB

【PHP】下らねぇ質問はここに書き込みやがれ 52

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/08/11(土) 10:08:03ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 51
http://pc11.2ch.net/test/read.cgi/php/1185521566/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

◆質問後の注意
・偽者防止に必ずIDを表示させること。(メール欄に何も記述しない)
・2回目以降は最初に質問した際のレス番号を名前欄に入れること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0067nobodyさん2007/08/12(日) 16:30:42ID:???
>>66
ワロタ
0068nobodyさん2007/08/12(日) 16:56:48ID:xP9NpWGA
>>49
>>42です。
そうですね。クラス図だけなら生成させちゃうのが一番早いですね。
助言ありです。
0069nobodyさん2007/08/12(日) 17:54:27ID:???
僕、助言蟻です
0070nobodyさん2007/08/12(日) 19:20:37ID:j64D1d5e
ifで「$AAAにXXXという文字列が含まれていれば、」ってどうすればいいですか
0071nobodyさん2007/08/12(日) 19:25:27ID:???
>>70
strpos
0072火炎放射器2007/08/12(日) 19:27:21ID:???
>>68
クラス図を具体化するとすると、こういう感じになるよ。
http://pukapuka.sakura.ne.jp/cgi-bin/upload/puka/img-box/1186914131822.jpg
0073702007/08/12(日) 19:46:02ID:j64D1d5e
$i = strrpos($AAA, "XXX");
if($pos != false){

}



これでおk?
0074702007/08/12(日) 19:46:42ID:j64D1d5e
$i = strrpos($AAA, "XXX");
if($i != false){

}



これでおk?訂正した
0075nobodyさん2007/08/12(日) 19:49:13ID:???
!==
0076702007/08/12(日) 19:55:44ID:j64D1d5e
elseのほうがいいのかな
0077nobodyさん2007/08/12(日) 19:57:15ID:???
何が?
0078nobodyさん2007/08/12(日) 19:59:13ID:???
$iに入れる意味がわからない
0079nobodyさん2007/08/12(日) 19:59:42ID:???
入れちゃだめな意味が分からない
0080nobodyさん2007/08/12(日) 20:27:59ID:???
普通不必要な定義は管理性、可読性が悪くなるだろ
0081nobodyさん2007/08/12(日) 20:49:39ID:???
>>80
不完全な根拠で普通などと一般化して、学者気分にのぼせ上がっているわけかw
0082nobodyさん2007/08/12(日) 20:53:37ID:???
不完全な根拠
不完全な根拠
不完全な根拠
0083nobodyさん2007/08/12(日) 21:35:39ID:uKEYsiuY
今日もばかばっか。
0084nobodyさん2007/08/12(日) 21:37:55ID:???
83が一番な
0085nobodyさん2007/08/12(日) 22:19:57ID:???
じゃあ俺二番な
0086nobodyさん2007/08/12(日) 22:37:52ID:???
そこまで言うなら二番は譲る。だが俺が三番めだって言う事は忘れるなよ
0087nobodyさん2007/08/12(日) 23:37:49ID:evcdChbT
phpの中からAPACHEの設定を知る方法を教えて下さい
0088nobodyさん2007/08/13(月) 00:12:02ID:gsXJmo44
ファイルを読み込む系の関数についてなのですが
例えば file(*****,"w") の*****部分に"直ファイル名"入れると動くのに、
$moge = "直ファイル名" とかにしてfile($moge,"w") ってすると動かなくなるのは
仕様なのですかね?マニュアルとか結構眺めたのですけど分からなくて・・
教えていただきたいと思います。
その部分に直ファイル名をランダムに入れて動かしたいのですけど・・
0089nobodyさん2007/08/13(月) 00:13:36ID:gsXJmo44
失礼しました fileじゃなくfopenですよね・・・
0090nobodyさん2007/08/13(月) 00:28:10ID:???
>>89
マニュアルでは普通にstrとしか書いてないし特に例外的な事は書いてないな
一応(string)でキャストしてみたらどうだろ?
それでだめなら多分仕様。
defineで定義したら普通に出来た記憶があるが
0091nobodyさん2007/08/13(月) 00:44:53ID:???
>>88
嘘だぁ。何か違うところでミスってる気が。コード見せてよ。
0092nobodyさん2007/08/13(月) 00:45:26ID:???
>>87
http://jp.php.net/apache
0093nobodyさん2007/08/13(月) 00:54:43ID:gsXJmo44
<?php

//開こうとする
$lines = file("ad.txt");
$ad_key = array_rand($lines);
$datefile = $lines[$ad_key];
$handle = file($moge);
.
.
.
っでこの後読み込んだファイルでゴリゴリするつもりなのですけど
ここまでですでにエラーが出るもので・・
変数一個一個をechoとかで表示させていくと
最後の$handleのとこで表示されなくなってたもので・・

ad.txtには1行に一つファイルパスを入れてあります。
キャストはだめでした・・・orz
0094nobodyさん2007/08/13(月) 00:59:01ID:???
>>92
おお!こんなのがあったとは
早速インストールしてみます
ありがとうございました
0095nobodyさん2007/08/13(月) 00:59:42ID:???
>>93
$mogeに何が入ってるか分からない。っつか1〜3行目と4行目は関係ないじゃん・・・。
$handleってことはfopenと勘違いしてるのでは?ちなみにハンドラをechoしても何も出ないだろ。
echoなんかよりvar_dump使ったほうが確実だよ
0096nobodyさん2007/08/13(月) 01:04:18ID:gsXJmo44
ぁ、なんか試行錯誤くりかえしてる段階ののっけちゃいましたすいません・・
こちらです。
srand((float) microtime() * 1000000);

$lines = file("ad.txt");
$ad_key = array_rand($lines);
$datefile = $lines[$ad_key];
$handle = fopen($datefile."r");

ad.txt中身
1.txt (試行錯誤段階で"1.txt"に変えてみたり)
2.txt
3.txt
延々

で、fopenにしてもfileにしてもどっちにしろ表示ができなくて。。
0097nobodyさん2007/08/13(月) 01:05:44ID:???
>>96
$datefile."r"
文字列連結してるため
0098nobodyさん2007/08/13(月) 01:05:47ID:???
>>96
それ改行コードはいってんじゃね?
0099nobodyさん2007/08/13(月) 01:11:30ID:???
>>58
perl全盛期と今を考えてみればわかるよな
0100nobodyさん2007/08/13(月) 01:12:02ID:gsXJmo44
>>97
ぁ、すいませんそれ,でしたorz
>>98
ですかね?file()を使った場合は一行ちゃんと抜き出してくれるかなと思ったのですが。。
fopen の後はfgetsで抜き出す形をとってます。
ちなみにここ以降の部分は$datefileの部分を直アドでするとどちらの場合でも動いてますので。。
0101nobodyさん2007/08/13(月) 01:12:16ID:???
>>60
え?コンビニの人のことを考えてますよね?
0102nobodyさん2007/08/13(月) 01:13:01ID:???
>>100
っつーかいずれにせよwarning出てるんじゃねーのそれだと・・・
0103nobodyさん2007/08/13(月) 01:18:52ID:gsXJmo44
直アドなら出ないですけど、↑だとwarning出ちゃってます。
$handle = fopen($datefile,"r"); の行で。。。

print($datefile)すると 1.txt もしくは"1.txt" って表示されるんですけどね・・
0104nobodyさん2007/08/13(月) 01:34:14ID:???
だからさ、warningの内容を読もうよ
0105nobodyさん2007/08/13(月) 01:39:25ID:gsXJmo44
たびたびすいません(泣
Warning: file("1.txt" ) [function.file]: failed to open stream: Invalid argument in C:\xampp\htdocs\naoki\sisado.php on line 20
です。。。
0106nobodyさん2007/08/13(月) 01:41:11ID:???
改行コードのせいじゃねーの
0107nobodyさん2007/08/13(月) 01:42:41ID:gsXJmo44
全てEUCで作っていますけどそれもイロイロ変えたりしました・・
0108nobodyさん2007/08/13(月) 01:43:33ID:???
>>106
改行というより勤行が足りないせいだと思うよ。
試しに、創価学会の集会に顔出してみれば?
ちなみに、芸能人もたまに顔を出すよ。
0109nobodyさん2007/08/13(月) 01:44:28ID:???
フルパスで指定すればいいぢゃないか、なおき君
0110nobodyさん2007/08/13(月) 01:45:48ID:gsXJmo44
やはり突っ込んできましたねと。
んーもうちょい自力で頑張ることにしますどうもお騒がせしました。。。
0111nobodyさん2007/08/13(月) 01:52:50ID:???
ファイルが存在してないからだろ
0112nobodyさん2007/08/13(月) 01:54:50ID:???
ファイル名が数字だけだからってオチじゃないのか?
file1.txt とかにしないと。
0113nobodyさん2007/08/13(月) 02:04:12ID:???
>>107
文字コードの話じゃなくて、
1.txtはあるんだろうけど
1.txt\nはないから開けてないんじゃねーのって話。
trimでもかけて試してみそ。
0114nobodyさん2007/08/13(月) 02:12:25ID:???
まあtrimだろうな。
それよりsisadoが気になる
0115nobodyさん2007/08/13(月) 02:31:01ID:???
PHPで初めてファイルをアップロードするプログラムを作っておりますが、
ローカルでのチェックでは期待通りの動きをしたのですが、
サーバーへアップロードしてチェックすると、違う動きをしてしまいます。

==HTML==
<form method="post" enctype="multipart/form-data" action="index.php">
<input type="hidden" name="IMG1" value="demo.jpg" />
<input type="file" name="IMG1" value="" />
画像を上書きする場合は、画像を選択してください。<br />
<input type="submit" value="上書き" />
</form>

==PHP==
<?PHP
$data=$_POST;

if($_FILES["IMG1"][tmp_name]){
アップロードの処理〜
//アップロードしたファイル名を$data["IMG1"]に上書き
$data["IMG1"]="ガゾウのファイル名";
}

〜〜ファイルへ$data["IMG1"]の書き込み〜〜
?>

上記のようなプログラムです。
画像をアップする場合は問題ないのですが、画像をアップせずに上書きボタンを押すと、$data["IMG1"]の値が何も入らなくなってしまいます。

php.iniの設定だとは思うのですが、どこを変更したらいいかが分かりません。
どなたかご教示の程お願い致します。
0116nobodyさん2007/08/13(月) 02:31:46ID:???
>>112
ファイル名は数字のみでもつかえるよ。
変数名のつけかたとごっちゃにしないで
0117nobodyさん2007/08/13(月) 02:33:38ID:???
>>115
まず君はどういうふうに動いてほしいのか。
現状、おかしくなってることを詳しく説明するところからはじめようか
0118nobodyさん2007/08/13(月) 02:37:15ID:???
>>100
file()は各行に改行コード付きっぱなし。
基本中の基本。
0119nobodyさん2007/08/13(月) 02:37:41ID:???
>>115
php.iniの設定でもないし、ローカルチェックで上手く言ってるわけでもないだろそれ。
もう一回確認しなさい。
0120nobodyさん2007/08/13(月) 02:40:23ID:???
もしかしてシスアドの勉強だったりしたのかな。

>>115
少ない情報から推測させてもらえば、おそらく文字コードの問題かと。
01211152007/08/13(月) 03:00:47ID:???
>>117
レスありがとうございます。
現状、ローカルでは画像をアップせずに更新ボタンを押すと、元々hiddenで入れておりましたデータがファイルへ書き込まれます。
ですが、サーバーへアップして動作確認をすると、画像をアップせずに更新ボタンを押すと、hiddenでに入れていたデータが書き込めず、$data["IMG1"]=""の状態になってしまいます。
>>119
ローカルではエラー無く動いてます。一応以下に簡略化していないデータを載せさせて頂きます。
<?PHP
$basedata="demo.jpg";
if($_POST){
$data=$_POST;
//画像をアップ
if($_FILES["IMG1"][tmp_name]){
$acp[1][0]=UPIMG();//ファイルをアップロードしてアップロードしたファイル名を返すユーザー定義関数です。
$acp[1][0]="アップ";
$data["IMG1"]=$acp[1][0];
}
//$data["IMG1"]をファイルへ書き込むユーザー定義関数です。
DataCHANGE($data["IMG1"]);

print "アップロードしたファイル名は".$data["IMG1"];
}
?>
<form method="post" action="index.php" enctype="multipart/form-data">
<input type="hidden" name="IMG1" value="<?=$basedata?>" />現在の画像<br />
新しく画像を選択して更新ボタンを押す、古い画像が置き換わります。<br />
<input type="file" name="IMG1" /><br />
<input type="submit" value="更新" />
</form>

申し訳ございませんが、ご教授のほどよろしくお願い致します。
0122nobodyさん2007/08/13(月) 03:09:47ID:???
>>121
<?=$basedata?>
まず鯖側の設定がこれで動くのかどうかチェック。
0123nobodyさん2007/08/13(月) 03:10:58ID:???
short_open_tagに対応してないに100ウォン
01241152007/08/13(月) 03:15:02ID:???
>>122
<?=$basedata?>は動作致します。ソースでもデータが入っておりました。
以下のようなテストファイルを作って動作確認をしてみましたが、やはり同様の結果でした。
<?PHP
$data=$_POST;
if($_FILES["IMG1"][tmp_name]){
$data["IMG1"]=$_FILES["IMG1"][tmp_name];
}
print_r($data);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
<html xmlns="http://www.w3.org/1999/xhtml";>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
<title>テスト</title>
</head>

<body>
<form method="post" enctype="multipart/form-data" action="index.php">
<input type="hidden" name="IMG1" value="img1" />
<input type="file" name="IMG1" value="" />
<input type="submit" />
</form>
</body>
</html>

0125nobodyさん2007/08/13(月) 03:16:25ID:???
>>124
それを実行するとローカルとサーバ側でどう出力されんの?
01261152007/08/13(月) 03:20:31ID:???
>>125
ローカルでは、
Array ( [IMG1] => img1 )
サーバーでは
Array ( )
です。

すみません。ローカルはPHP5でサーバーはPHP4でした、、、
ローカルをPHP4にするとやはりサーバーと同様の結果が返ってきましたorz
ですが、解決方法は解らないままです、、もともとPHP4では望んでいる処理はできないのでしょうか
0127nobodyさん2007/08/13(月) 03:27:20ID:???
うーん、バージョン4.いくつ?
あとifブロックの中に入っているのかいないのかを確認したほうがいいかも。
0128nobodyさん2007/08/13(月) 03:32:06ID:???
>>124
<input type="file" name="IMG1" value="" />
これvalue=""ってなってるの消したらどうなる?

解決法としてはhiddenタグ消してファイルがアップロードされたかどうか
チェックして無ければ$basedataを入れ込めばいいんじゃまいか?
01291152007/08/13(月) 03:34:51ID:???
>>127
PHPのバージョンは4.4です。
ifブロック無いにはデータは入って来ていませんでした。

試しにファイルを参照しない状態で送信して
<?PHP print_r($_POST); ?>を実行すると
配列内に何も入っておりませんでした、、、
01301152007/08/13(月) 03:37:38ID:???
>>128
valueを消しても動作は同様でした。
hiddenの値を消す、もしくはnameの値を違うのにするのは最終手段で有るのですが、
今後の為にも、出来ればそれ以外の方法をとれればと考えております。
0131nobodyさん2007/08/13(月) 04:28:28ID:???
>>115
なんじゃこれ。
同じnameを持ったデータを2個送信して、一方で自動的に値が上書きされることを期待してるわけ?
その場合の動作は保証されてないからやめた方がいいよ。
多くの環境で、それはtype=file側(後ろに記述した側)の方のデータしか残らず、
ファイルを何も選択しなければデータが空っぽになるだけで終わる。

期待した通りに動いているというローカルの環境の方がかなり特殊。
0132nobodyさん2007/08/13(月) 06:42:57ID:???
>>115
まずfileにvalue指定は効かないので要りません。
そしてhiddenの値も簡単に書き換えれるのでフォームでの指定は止めましょう、fileだけでいいです。
if(isset($_FILES['IMG1'])) {
switch($_FILES['IMG1']['error']) {
case UPLOAD_ERR_NO_FILE:
// アップロードされなかった時の処理
break;
case UPLOAD_ERR_OK:
// 正常にアップロードされた時の処理
break;
default:
// エラーが起きた時の処理
}
}
こんな感じで。
01331152007/08/13(月) 08:01:44ID:???
皆さんレスありがとうございました。
非常に参考になりました。
皆さんのレスを参考にさせて頂き、hiddenの値はHTML上には出さない事に致しました。

遅い時間にも関わらずレスをいただき、ありがとうございました。
0134nobodyさん2007/08/13(月) 10:44:52ID:k/wdFyv9
しょうもない質問すみません。
ctype〜とis〜の違いって何でしょ?
0135nobodyさん2007/08/13(月) 11:13:47ID:???
>>134
マニュアルに書いてある
0136nobodyさん2007/08/13(月) 11:21:58ID:???
>>122
わけわかめ。
今回の質問と的はずれてるし
0137702007/08/13(月) 12:38:14ID:06TZUW9Q
htmlの任意のタグの間の文字列を抜き出すのはどうすれば
0138nobodyさん2007/08/13(月) 12:40:51ID:???
htmlの任意のタグの間から文字列を取り出すのはどうすれば
0139nobodyさん2007/08/13(月) 12:41:04ID:???
Pear XML_HTMLSax
0140nobodyさん2007/08/13(月) 12:41:51ID:???
htmlの任意のタグの間の文字列をとりだすのはどうすれば
0141nobodyさん2007/08/13(月) 12:42:03ID:???
htmlの任意のタグの間から文字列を取り出すのはどうすれば
0142nobodyさん2007/08/13(月) 12:42:46ID:???
重複スマソ・・・
0143nobodyさん2007/08/13(月) 12:56:25ID:???
スマソってレベルじゃねーぞ
0144nobodyさん2007/08/13(月) 13:01:48ID:???
ごめんなさい、一部の重複は俺が加担してました
0145一日駅長2007/08/13(月) 13:07:24ID:uksFyExO
御久しぶりです。
アップロードしたあとアップ済み画像一覧みたいなのでどのページに
表示させるか選択、削除するのってどーすれば出来るんですか?おしえてくれ
0146nobodyさん2007/08/13(月) 13:11:23ID:???
>>145日本語でおk
0147nobodyさん2007/08/13(月) 14:08:18ID:???
php側でたてたフラグによってテンプレート側の表示を変えたいのですが
テンプレート側で分岐ができません。
どのようにすればいいでしょうか?
0148nobodyさん2007/08/13(月) 14:08:53ID:pjyFI4En
peclコマンドで何をインストールしようとしても
Did not understand the completion status returned from msdev.exe.
とエラーがでます。2つ前のスレに「コンパイラがない」と回答がありましたが
コンパイラはどうやったらインストールできるんでしょうか。
0149nobodyさん2007/08/13(月) 14:11:17ID:???
テンプレートって何?Smarty?分岐って何?
0150nobodyさん2007/08/13(月) 14:15:23ID:???
>>148
Visual C++ 6を買う
0151nobodyさん2007/08/13(月) 14:53:26ID:???
>>147
英語でおk
0152nobodyさん2007/08/13(月) 15:19:38ID:???
phpを使用したBASIC認証ページを作りたいのですが、できるのでしょうか?
概略は、.htpasswdと.htaccessを使用し、phpでログインページを作りたい
のですが、解説されているページがなく、にっちもさっちもいきません。
0153nobodyさん2007/08/13(月) 15:20:39ID:???
>>152
できます
0154nobodyさん2007/08/13(月) 15:24:00ID:???
そこでphpを使う意味が分からない
0155nobodyさん2007/08/13(月) 15:27:29ID:???
>154
どうもhtpassのために別ウィンドウを出すのが好きではなく、だったら認証ページで
って思ったです。
参考になるページなどがありましたら、教えてもらえると助かります。
0156nobodyさん2007/08/13(月) 15:28:39ID:???
>>155
そこで.htaccessを使う意味が分からない
0157nobodyさん2007/08/13(月) 15:30:55ID:???
>156
ディレクトリ毎に認証させたいためです。
あと、元々はhtaccessとhtpassで認証させていたので、あまりそこを
いじりたくないんです。
各ページにphpのフックをかぶせるのもありなんでしょうけど・・・
0158nobodyさん2007/08/13(月) 15:31:33ID:???
php関係ねーけど、これから勉強するならCGI(perl)・JSPどっちがお勧め?
仕事に役立てたいので普及しているPerlという選択が無難なのかな
個人的にはJSPとかpythonのが魅力的なんだけど
0159nobodyさん2007/08/13(月) 15:36:24ID:???
>>158
ここは”PHP”のくだスレです
0160nobodyさん2007/08/13(月) 15:40:08ID:???
BASIC認証のダイアログ出さないで認証させるのは今は無理じゃなかったっけ?
0161nobodyさん2007/08/13(月) 15:41:00ID:???
>>159
関係ねーって書いてるじゃん
0162nobodyさん2007/08/13(月) 15:43:17ID:???
>>161
関係ないのをなんでわざわざPHPスレで聞くんだ?
あと、お前は>>1すら読めないのか?
0163nobodyさん2007/08/13(月) 15:46:03ID:???
>>160
pearの認証を勉強してからこいクズ
0164nobodyさん2007/08/13(月) 16:10:45ID:???
「彼籠球的巨乳」之遍羅・吊金具、全裸時入浴的写人我電網是流出的
0165nobodyさん2007/08/13(月) 16:11:19ID:???
>>162
だってこのスレ大したことないじゃん
0166nobodyさん2007/08/13(月) 16:13:22ID:???
>>165
大したことないスレにくんなよwwwwwwww
■ このスレッドは過去ログ倉庫に格納されています