【PHP】下らねぇ質問はここに書き込みやがれ 52
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/08/11(土) 10:08:03ID:???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カテゴリ)の各スレで
0069nobodyさん
2007/08/12(日) 17:54:27ID:???0070nobodyさん
2007/08/12(日) 19:20:37ID:j64D1d5e0072火炎放射器
2007/08/12(日) 19:27:21ID:???クラス図を具体化するとすると、こういう感じになるよ。
http://pukapuka.sakura.ne.jp/cgi-bin/upload/puka/img-box/1186914131822.jpg
007370
2007/08/12(日) 19:46:02ID:j64D1d5eif($pos != false){
}
これでおk?
007470
2007/08/12(日) 19:46:42ID:j64D1d5eif($i != false){
}
これでおk?訂正した
0075nobodyさん
2007/08/12(日) 19:49:13ID:???007670
2007/08/12(日) 19:55:44ID:j64D1d5e0077nobodyさん
2007/08/12(日) 19:57:15ID:???0078nobodyさん
2007/08/12(日) 19:59:13ID:???0079nobodyさん
2007/08/12(日) 19:59:42ID:???0080nobodyさん
2007/08/12(日) 20:27:59ID:???0082nobodyさん
2007/08/12(日) 20:53:37ID:???不完全な根拠
不完全な根拠
0083nobodyさん
2007/08/12(日) 21:35:39ID:uKEYsiuY0084nobodyさん
2007/08/12(日) 21:37:55ID:???0085nobodyさん
2007/08/12(日) 22:19:57ID:???0086nobodyさん
2007/08/12(日) 22:37:52ID:???0087nobodyさん
2007/08/12(日) 23:37:49ID:evcdChbT0088nobodyさん
2007/08/13(月) 00:12:02ID:gsXJmo44例えば file(*****,"w") の*****部分に"直ファイル名"入れると動くのに、
$moge = "直ファイル名" とかにしてfile($moge,"w") ってすると動かなくなるのは
仕様なのですかね?マニュアルとか結構眺めたのですけど分からなくて・・
教えていただきたいと思います。
その部分に直ファイル名をランダムに入れて動かしたいのですけど・・
0089nobodyさん
2007/08/13(月) 00:13:36ID:gsXJmo440090nobodyさん
2007/08/13(月) 00:28:10ID:???マニュアルでは普通にstrとしか書いてないし特に例外的な事は書いてないな
一応(string)でキャストしてみたらどうだろ?
それでだめなら多分仕様。
defineで定義したら普通に出来た記憶があるが
0092nobodyさん
2007/08/13(月) 00:45:26ID:???http://jp.php.net/apache
0093nobodyさん
2007/08/13(月) 00:54:43ID:gsXJmo44//開こうとする
$lines = file("ad.txt");
$ad_key = array_rand($lines);
$datefile = $lines[$ad_key];
$handle = file($moge);
.
.
.
っでこの後読み込んだファイルでゴリゴリするつもりなのですけど
ここまでですでにエラーが出るもので・・
変数一個一個をechoとかで表示させていくと
最後の$handleのとこで表示されなくなってたもので・・
ad.txtには1行に一つファイルパスを入れてあります。
キャストはだめでした・・・orz
0095nobodyさん
2007/08/13(月) 00:59:42ID:???$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にしてもどっちにしろ表示ができなくて。。
0100nobodyさん
2007/08/13(月) 01:12:02ID:gsXJmo44ぁ、すいませんそれ,でしたorz
>>98
ですかね?file()を使った場合は一行ちゃんと抜き出してくれるかなと思ったのですが。。
fopen の後はfgetsで抜き出す形をとってます。
ちなみにここ以降の部分は$datefileの部分を直アドでするとどちらの場合でも動いてますので。。
0103nobodyさん
2007/08/13(月) 01:18:52ID:gsXJmo44$handle = fopen($datefile,"r"); の行で。。。
print($datefile)すると 1.txt もしくは"1.txt" って表示されるんですけどね・・
0104nobodyさん
2007/08/13(月) 01:34:14ID:???0105nobodyさん
2007/08/13(月) 01:39:25ID:gsXJmo44Warning: 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:gsXJmo440108nobodyさん
2007/08/13(月) 01:43:33ID:???改行というより勤行が足りないせいだと思うよ。
試しに、創価学会の集会に顔出してみれば?
ちなみに、芸能人もたまに顔を出すよ。
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:???文字コードの話じゃなくて、
1.txtはあるんだろうけど
1.txt\nはないから開けてないんじゃねーのって話。
trimでもかけて試してみそ。
0114nobodyさん
2007/08/13(月) 02:12:25ID:???それよりsisadoが気になる
0115nobodyさん
2007/08/13(月) 02:31:01ID:???ローカルでのチェックでは期待通りの動きをしたのですが、
サーバーへアップロードしてチェックすると、違う動きをしてしまいます。
==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の設定だとは思うのですが、どこを変更したらいいかが分かりません。
どなたかご教示の程お願い致します。
0117nobodyさん
2007/08/13(月) 02:33:38ID:???まず君はどういうふうに動いてほしいのか。
現状、おかしくなってることを詳しく説明するところからはじめようか
0119nobodyさん
2007/08/13(月) 02:37:41ID:???php.iniの設定でもないし、ローカルチェックで上手く言ってるわけでもないだろそれ。
もう一回確認しなさい。
0120nobodyさん
2007/08/13(月) 02:40:23ID:???>>115
少ない情報から推測させてもらえば、おそらく文字コードの問題かと。
0121115
2007/08/13(月) 03:00:47ID:???レスありがとうございます。
現状、ローカルでは画像をアップせずに更新ボタンを押すと、元々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>
申し訳ございませんが、ご教授のほどよろしくお願い致します。
0123nobodyさん
2007/08/13(月) 03:10:58ID:???0124115
2007/08/13(月) 03:15:02ID:???<?=$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>
0126115
2007/08/13(月) 03:20:31ID:???ローカルでは、
Array ( [IMG1] => img1 )
サーバーでは
Array ( )
です。
すみません。ローカルはPHP5でサーバーはPHP4でした、、、
ローカルをPHP4にするとやはりサーバーと同様の結果が返ってきましたorz
ですが、解決方法は解らないままです、、もともとPHP4では望んでいる処理はできないのでしょうか
0127nobodyさん
2007/08/13(月) 03:27:20ID:???あとifブロックの中に入っているのかいないのかを確認したほうがいいかも。
0128nobodyさん
2007/08/13(月) 03:32:06ID:???<input type="file" name="IMG1" value="" />
これvalue=""ってなってるの消したらどうなる?
解決法としてはhiddenタグ消してファイルがアップロードされたかどうか
チェックして無ければ$basedataを入れ込めばいいんじゃまいか?
0129115
2007/08/13(月) 03:34:51ID:???PHPのバージョンは4.4です。
ifブロック無いにはデータは入って来ていませんでした。
試しにファイルを参照しない状態で送信して
<?PHP print_r($_POST); ?>を実行すると
配列内に何も入っておりませんでした、、、
0130115
2007/08/13(月) 03:37:38ID:???valueを消しても動作は同様でした。
hiddenの値を消す、もしくはnameの値を違うのにするのは最終手段で有るのですが、
今後の為にも、出来ればそれ以外の方法をとれればと考えております。
0131nobodyさん
2007/08/13(月) 04:28:28ID:???なんじゃこれ。
同じnameを持ったデータを2個送信して、一方で自動的に値が上書きされることを期待してるわけ?
その場合の動作は保証されてないからやめた方がいいよ。
多くの環境で、それはtype=file側(後ろに記述した側)の方のデータしか残らず、
ファイルを何も選択しなければデータが空っぽになるだけで終わる。
期待した通りに動いているというローカルの環境の方がかなり特殊。
0132nobodyさん
2007/08/13(月) 06:42:57ID:???まずfileにvalue指定は効かないので要りません。
そしてhiddenの値も簡単に書き換えれるのでフォームでの指定は止めましょう、fileだけでいいです。
if(isset($_FILES['IMG1'])) {
switch($_FILES['IMG1']['error']) {
case UPLOAD_ERR_NO_FILE:
// アップロードされなかった時の処理
break;
case UPLOAD_ERR_OK:
// 正常にアップロードされた時の処理
break;
default:
// エラーが起きた時の処理
}
}
こんな感じで。
0133115
2007/08/13(月) 08:01:44ID:???非常に参考になりました。
皆さんのレスを参考にさせて頂き、hiddenの値はHTML上には出さない事に致しました。
遅い時間にも関わらずレスをいただき、ありがとうございました。
0134nobodyさん
2007/08/13(月) 10:44:52ID:k/wdFyv9ctype〜とis〜の違いって何でしょ?
013770
2007/08/13(月) 12:38:14ID:06TZUW9Q0138nobodyさん
2007/08/13(月) 12:40:51ID:???0139nobodyさん
2007/08/13(月) 12:41:04ID:???0140nobodyさん
2007/08/13(月) 12:41:51ID:???0141nobodyさん
2007/08/13(月) 12:42:03ID:???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アップロードしたあとアップ済み画像一覧みたいなのでどのページに
表示させるか選択、削除するのってどーすれば出来るんですか?おしえてくれ
0147nobodyさん
2007/08/13(月) 14:08:18ID:???テンプレート側で分岐ができません。
どのようにすればいいでしょうか?
0148nobodyさん
2007/08/13(月) 14:08:53ID:pjyFI4EnDid not understand the completion status returned from msdev.exe.
とエラーがでます。2つ前のスレに「コンパイラがない」と回答がありましたが
コンパイラはどうやったらインストールできるんでしょうか。
0149nobodyさん
2007/08/13(月) 14:11:17ID:???0152nobodyさん
2007/08/13(月) 15:19:38ID:???概略は、.htpasswdと.htaccessを使用し、phpでログインページを作りたい
のですが、解説されているページがなく、にっちもさっちもいきません。
0154nobodyさん
2007/08/13(月) 15:24:00ID:???0155nobodyさん
2007/08/13(月) 15:27:29ID:???どうもhtpassのために別ウィンドウを出すのが好きではなく、だったら認証ページで
って思ったです。
参考になるページなどがありましたら、教えてもらえると助かります。
0157nobodyさん
2007/08/13(月) 15:30:55ID:???ディレクトリ毎に認証させたいためです。
あと、元々はhtaccessとhtpassで認証させていたので、あまりそこを
いじりたくないんです。
各ページにphpのフックをかぶせるのもありなんでしょうけど・・・
0158nobodyさん
2007/08/13(月) 15:31:33ID:???仕事に役立てたいので普及しているPerlという選択が無難なのかな
個人的にはJSPとかpythonのが魅力的なんだけど
0160nobodyさん
2007/08/13(月) 15:40:08ID:???0164nobodyさん
2007/08/13(月) 16:10:45ID:???■ このスレッドは過去ログ倉庫に格納されています