• ベストアンサー

別のファイルへ値を受け渡す方法

【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です。 知恵をお貸しください。 お願いします。

  • PHP
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

ソース上は問題なさそうですよ。 まずは問題を切り分けて不具合が起きている箇所を特定すると良いです。 [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の最大長を超えていた場合は正常に取得できない場合があります。

yukari87
質問者

お礼

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

その他の回答 (2)

  • eitetsu
  • ベストアンサー率64% (22/34)
回答No.3

この例だと、ただindex.phpを実行しただけでは、$_POSTの中身は空っぽですよね。 ので、1回目の実行時は、img.phpは何も値を受け取れません。 たとえは、index.phpのformタグの中に、 <input type="submit" value="実行"> のボタンがあれば、コレを押すことで、img.phpは値を受け取れると思います。 そういうことでよいですか?

yukari87
質問者

お礼

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

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

表示と処理が一緒になってるからでしょ? formは別表示にしておかないとうまく受け取れないよ どうしても一緒にしたいなら頭の方で表示なのかform受け取りなのかを判別しないとだめだよ

yukari87
質問者

お礼

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

関連するQ&A

  • 画像処理での文字の処理について

    formのtextareaから文字を受け取り、その文字を画像に書き込むプログラムを作成しています。 処理手順は、 1.[a.php]にあるtextareaに文字を入力   <textarea name="intxt" rows="10" cols="30"></textarea> (FORMのmethodはPOST)    2.submitで値を送信し、[b.php]で処理   [a.php]:print "<img border='0' src='b.php?imgfile=$imgfile&txt=$txt'>";      [b.php]:$imgfile=$_GET['imgfile'];/*画像*/        $txt=$_GET['txt'];    /*入力文字*/        文字を画像に書き込むときに、  aaa  bbb という風に画像に書き込みたいのですが、処理をすると  aaabbb  となります。 そこで私が考えた方法は、改行コードで文字列を切り取り、【 $text=explode("\n",$txt); 】 for文で書き込むという方法でしているのですが、うまく文字列を切り取れません。 改行コードが間違っているのでしょうか? それとも、改行コードでは切り取れないのでしょうか? 検索をかけてみたり、他の質問を見てみたのですが、うまく出来ませんでした。 それと、日本語で文字列を渡すためにはどのような関数を使えばよいのでしょうか? マルチバイト文字列はrawurlencode()を噛まさねば渡すことが出来ないというのはわかったのですが、 どういう風に噛ませるのかわかりません。 いろいろと試したのですが、表示されませんでした。 他にも方法があるのでしょうか? 開発環境は、PHP5.2.5、Apache2.2、WindowsXPです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • テキストエリア内にPHPのソースコードを書く

    <form action="" method="post"> <textarea name="img" cols=40 rows=4 readonly> <?php echo"<?php echo"masao"; ?>"; ?> </textarea></form> このプログラムの結果 <?php echo"masao"; ?> と表示したかったのですが案の定できませんでした。 どのようにしたら表示させることができるでしょうか?

    • ベストアンサー
    • PHP
  • formに複数ボタンを配置し、それぞれのボタンに対して、別の複数の値を

    formに複数ボタンを配置し、それぞれのボタンに対して、別の複数の値をPHPに受け渡したいのです。 例としは下記のような命令をしたいのですが、どうしても解決策がわかりません。 1.jpgで作成したボタンをクリックすると、textの"コンニチワ"、textの30、1.jpgが1.phpへ送られる。 2.jpgで作成したボタンをクリックすると、textの"コンバンワ"、textの50、2.jpgが1.phpへ送られる。 下記は、一応自分で作成したものです。 ●sample.html <form method="post" action="1.php"> <input name="namae"type="text"value="コンチニワ"> <input name="namae"type="text"value="コンバンワ"><br> <BUTTON type ="submit"name="submit1"> <IMG src="1.jpg"> </BUTTON> <BUTTON type ="submit"name="submit2"> <IMG src="2.jpg"> </BUTTON><br> <input name="price"type="text"value="30"> <input name="price"type="text"value="50"> -------------------------------- 【sample.htmlの希望表示】 namaeテキスト  namaeテキスト ボタン画像    ボタン画像 priceテキスト  priceテキスト -------------------------------- ●1.php <?php $namae=$_POST['namae'] $kakaku=$_POST['price'] $image=&_POST['image'] ?> もしかしたら、imageについては表示させないテキストに隠して値だけ送るという 手もあるかもしれません。やり方がわかりませんが。

    • 締切済み
    • PHP
  • PHPで求めた変数をHTMLで使う方法

    HTMLのformタグで与えた引数を元に、ある値をPHPで求めた後、その求めた変数をHTMLに戻って使う方法をご教授下さい。 例えば、 index.html ↓↓↓ <form action="submit.php" method="post"> <input type="text" name="xxxxx"> <input type="text" name="yyyyy"> <input tyoe="submit" value="実行"> </form> <textarea name="answer"> 実行後ここに、下のPHPで求めた$zzzzzを表示したい。 </textarea> 上のHTMLでxxxxxとyyyyyを入力して実行ボタンを押します。 そしてPHP側は、 submit.php  ↓↓↓ $zzzzz = $_POST["xxxxx"] . "は、" . $_POST["yyyyy"] . "です。"; このように求めた$zzzzzを上のHTMLに戻って表示したいのですが、しばらく調べてみても見つかりませんでした。 どなたかご教授下さい、お願いします。

  • 複数のsubmitボタンを使い値を送信する

    <form action="/サーブレットへ" method="post"> <input type ="TEXT" NAME="text1"> <input type ="TEXT" NAME="text2"><br> <textarea name="zzzz" cols="100" rows="10"> </textarea> <input type="hidden" name="a1" value="3"> <input type="submit" name="a1" value="作成"> <input type="hidden" name="a1" value="2"> <input type="submit" name="a1" value="修正"> </form> 複数のsubmitを使用してそれぞれ違う、値又は変数を渡し処理をしたいのですが、わかりません。 分かる方がいましたら教えてください。よろしくお願いします。

    • ベストアンサー
    • Java
  • 複数のプログラムを1ページで行えますか?

    PHP始めたばかりです。 下記の事で困っています。 単体ではうまく動くのに二つ並べると動作しません。 どうしたら複数のプログラムを1ページで行えますか? どこかに番号を付けて同じにならないようにするのかなとは思いますが分かりません。 ご教示お願い致します。 <?php $file = 'txt/a0001.txt'; if ($_POST['button_save']) { //POSTされたときは書き込み処理をする $fp = @fopen($file, 'w'); if ($fp == false) { print "このファイルには書き込みできません。<br>\n"; } else { $contents = htmlspecialchars($_POST['textBox_contents']); fwrite($fp, $contents); fclose($fp); print "書き込み完了しました。<br>\n"; } } $text = file_get_contents($file); $text = htmlspecialchars($text); ?> <textarea name="textBox_contents" cols="40" rows="2"><?php echo($text); ?></textarea> <br/> <input type="submit" name="button_save" value="保存"> </form> <p> <p> <?php $file = 'txt/b0001.txt'; if ($_POST['button_save']) { //POSTされたときは書き込み処理をする $fp = @fopen($file, 'w'); if ($fp == false) { print "このファイルには書き込みできません。<br>\n"; } else { $contents = htmlspecialchars($_POST['textBox_contents']); fwrite($fp, $contents); fclose($fp); print "書き込み完了しました。<br>\n"; } } $text = file_get_contents($file); $text = htmlspecialchars($text); ?> <textarea name="textBox_contents" cols="40" rows="2"><?php echo($text); ?></textarea> <br/> <input type="submit" name="button_save" value="保存"> </form>

    • ベストアンサー
    • PHP
  • Formでの値の取得後、変数での表示ができない

    環境は; RedhatLinux7.1.2 Apache PHP PostgreSQL(今回は関係ないかな) 問題は、フォームにて値を渡した後$xxxxとして変数として表示できるはずなのにできないことです。 ちなみにPostの代わりにGetで行うとアドレス部分に確かに値が渡されたことが認められます。 同じファイルをPHPが使用できるレンタルサーバーで試したところ問題はありませんでした。 **** form.html ***** <form name="a" action="test.php" method="post"> <input type="text" name="a"> <input type="submit" value="submit" name="submit"> </form> **** test.php **** <? print $a; ?> 何が悪いのか全くわからないので、どうぞよろしくお願いします。

    • ベストアンサー
    • PHP
  • CCを使わず複数の人にメールを出せる記述方法がありますか?

    フォームによるメール送信でccを使わず複数の人にメールを出せる記述方法がありますか? ちなみに、今こんな感じで記述しています。 <form name="FormName" action="mailto:***@**.ne.jp" method="post" enctype="text/plain"> 名前<input type="text" name="名前" size="24"> <p>住所<input type="text" name="住所" size="24"></p> <p>コメント<textarea name="コメント" cols="40" rows="4"></textarea></p> <p><input type="submit" name="submitButtonName"></p> </form> 分かるかた教えてください。

    • ベストアンサー
    • HTML
  • ブログフォームが表示されない!

    いつも大変お世話になり誠にありがとうございます。 標記の件。 form.htmlだと表示はされます。 しかし、その後のインプットの表示がされません。 index.phpでOKだったのですが、ソースコードが 表示されるようになってしまいました。 index.phpのソースコードは下記です。 どこが間違っているのでしょうか? ご回答のほど宜しくお願い申し上げます。 <?php if( $mode=='input'){ ?> <h2>ブログフォーム</h2> <form action="blog_create.php" method=_POST> <input type="text" name="address" value="" /> <input type="text" name="name" value="ペンネーム"/> <input type="text" name="title" value="タイトル"/> <input type="text" name="name" value="カテゴリー"/>   <textarea name="content" id="content" cols="50" rows="80">ブログ本文</textarea><br> <input type="submit" value="確認画面へ"> </form>

    • ベストアンサー
    • PHP
  • POSTに対しての認識は下記でよいでしょうか?

    POSTに対しての認識は下記でよいでしょうか? http://www.phpbook.jp/appli/form/index3.html ・<form method="POST" action="./kaitou2.php">' action指定のphpファイルに入力した情報が渡される。 ・method="POST POSTという転送方法を採用 ・<form method="POST" name="text1"> <input type="submit" name="btn1" value="回答"> </form> </body> </html> name="text1" どのようその値を取得するか。getelementbyidと同じこれがついている要素の値を取得して下記に渡される。 $input_data = (int)$_POST['text1'];

    • ベストアンサー
    • PHP

専門家に質問してみよう