• ベストアンサー

header(Location: next.php) だとPOSTした値が渡らない?

文末は(だいぶ端折ってますが), (1) エラーがあればエラー表示, (2) エラーがなければnext.phpに飛ぶ という動作をするのですが, next.php 内に echo $_POST["Name"]; とか echo $_POST["reg"]; とか書いても valueの中身が渡ってきていません. header("Location: next.php"); で飛ばすとだめなのでしょうか. http://oshiete1.goo.ne.jp/qa2706500.html でも,#2さんのアドバイスのようにしようとしましたが, #1さんのご教示のように,セッションを利用するしかないですか? ちょっとセッションで値の渡し方がチンプンカンプンなのですが・・・ <?php session_cache_limiter('none'); session_start(); header("Cache-control:no-cache"); header("Pragma:no-cache"); $errFlg=false; if ( $_POST["reg"] == "" ) $errFlg = true; if ( !$errFlg ) { if ( $_POST["Name"] == "" ) { $errFlg = true; $errStr["Name"] = "未入力"; } } if ( $errFlg ) { ?> <html><body> <form method="post" action="<?php $_SERVER["PHP_SELF"] ?>"> <?= $errStr["Name"] ?></td> <input type="text" name="Name" value="<?php echo $_POST["Name"]; ?>"> <input type="submit" name="reg" value="登録"></td> </form> </body></html> <?php } else { header("Location: next.php"); } ?>

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

LocationではPOSTデータは渡せません セッションでやる方法もありますがそのプログラムなら else { header("Location: next.php"); } を else { require "next.php"; } にすればいいのではないでしょうか

litton101
質問者

お礼

php504さん 早速のご回答ありがとうございました. シンプルな解決方法で,直ぐに飛びつきました. 早速ご教示のとおりに組み込んでみたのですが, (1) $_POST["Name"];は渡ってくるのですが  $_POST["reg"];(登録ボタンのvalue)が渡ってこないことと, > else { > require "next.php"; > } の下に書いてある $con = mysql_close($con); が 「Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource ....」 などとエラーを吐いてしまいます(原因突き止められず) 引き続き調査しているところですが, もし他に方法があったらよろしくお願い致します.

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • umota
  • ベストアンサー率46% (150/324)
回答No.2

入力チェックならば JavaScript で可能ですが... 検証していないがサンプルです。 // javascript function check(){  if (document.getElementById("Name").value == ""){   documennt.getEleMentById("msg").innerHTML =    "名前を入力してください";   document.getElementById("Name").focus();   return false;  } else{   documennt.getEleMentById("msg").innerHTML =    "送信しました";   document.getElementById("subm").disabled = true;   return true; } // html <form ... onSubmit="return check()"> <input id="Name" name="Name" ...> <div id="msg"></div> <input id="subm" type="submit" ...> </form>

litton101
質問者

お礼

umotaさん,JSによるサンプルありがとうございました. せっかくご教示いただいて申し訳ないですが, 諸事情で,今回はクライアント側でなくサーバー側で 入力チェックをかけたいと思っていますので, PHPの基本構成はあまり変えずにいきたいと思っています. もちろん,ご提示いただいたものはご提示いただいたものとして 活用させていただきます. ありがとうございました.

すると、全ての回答が全文表示されます。

関連するQ&A