プロが教えるわが家の防犯対策術!

【index.php】というファイルで、画像のURLとテキストデータを【img.php】へ値を受け渡すプログラムを記述しています。

【index.php】では
<form action="index.php" method="POST">
 <textarea name="intxt" rows="10" cols="30"></textarea>
 <input type="radio" name="image" value="4.jpg">
</form>

<?php
  $imgfile=$_POST['image'];
  $text=$_POST['intxt'];

  print "<img border='0' src='img.php?imgfile=$imgfile&text=$text'>";
?>
と記述し、

【img.php】ファイルで値を受け取るために、

  $text=$_GET['text'];
  $imgfile=$_GET['imgfile'];

と記述しました。

しかし、値が受け渡されていません。
 $text=$_POST['text'];
 $imgfile=$_POST['imgfile'];
でも試してみましたが、結果は同じく値が受け渡されていませんでした。
何か足りないのでしょうか?

開発環境は、PHP5.2.5、Apache2.2、WindowsXPです。

知恵をお貸しください。
お願いします。

A 回答 (3件)

ソース上は問題なさそうですよ。



まずは問題を切り分けて不具合が起きている箇所を特定すると良いです。
[index.php] -> [index.php]
[index.php] -> [img.php]
この二つのパターンについて値が正常に渡っているか確認しましょう。

まず値を受け取ったindex.phpで
print_r($_POST);
を記述し、値が取れているか確認しましょう。

次にimg.phpですが、
まずは<img>で呼び出しているURLをindex.phpで生テキストとして吐き出し、正常なURLになっているか確認しましょう。
GETで値が取れない場合、ここの記述が崩れている可能性が高いです。
日本語をそのまま渡していたりしませんか?マルチバイト文字列はrawurlencode()を噛まさねば渡すことが出来ません。
http://jp2.php.net/rawurlencode

最後にimg.phpで生テキストをcontents-type:text/plainで取得しエラーを確定しましょう。
getの最大長を超えていた場合は正常に取得できない場合があります。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>[index.php] -> [index.php]
>[index.php] -> [img.php]
の2パターンで考え、[index.php] -> [index.php]はうまく渡されていました。
[index.php] -> [img.php]に原因があるのがわかり、
回答してくださった順に確認していったところ、
【img.php】に 
 header("contents-type:text/plain");
を追加したところ、値が受け渡され、私が欲しかった結果が表示されました。

詳しく記述してくださり、ありがとうございました。

お礼日時:2007/12/07 16:03

この例だと、ただindex.phpを実行しただけでは、$_POSTの中身は空っぽですよね。


ので、1回目の実行時は、img.phpは何も値を受け取れません。

たとえは、index.phpのformタグの中に、
<input type="submit" value="実行">
のボタンがあれば、コレを押すことで、img.phpは値を受け取れると思います。

そういうことでよいですか?
    • good
    • 0
この回答へのお礼

ソースにはボタンの記述をしていましたが、質問には記述していませんでした。
ご指摘ありがとうございます。

お礼日時:2007/12/11 08:52

表示と処理が一緒になってるからでしょ?


formは別表示にしておかないとうまく受け取れないよ

どうしても一緒にしたいなら頭の方で表示なのかform受け取りなのかを判別しないとだめだよ
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
解決できました!

お礼日時:2007/12/07 16:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!