こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

PHPの質問:フォームから受け取った値がNULL

あまりに基本的過ぎるのか、検索しても、参考書を読んでも分かりませんでした。


■やりたいこと
index.htmlのフォームで入力した値を、output.phpで変数$nameとして受け取りたい。
(この後$nameをstrstr関数の引数として使いたい)


■作ったソース

【index.html】
<form action="output.php" method="post">
<input type="text" name="name">
<input type="submit" value="入力">
</form>


【output.php】
<?php
$name = $_POST['name'];
var_dump($name);
?>




■困っていること
output.phpをブラウザで開くと、以下の通りに表示されます。
string(4) "abcf"
しかし、ブラウザで「ソースを表示」すると、[NULL]となってしまいます

この変数$nameは、strstr関数の引数として使いたいのですが、
そこで値がNULLのため、上手くいきません。




■お聞きしたいこと

(1)フォームから受け取った値をvar_dump()を使い、ブラウザのソース表示をすると
NULLになるのは、そういった仕様なのなのでしょうか?

(2)フォームからの値を変数に格納する際、何か注意する点があるのでしょうか?



何か根本的なことから理解していないようでお恥ずかしいのですが、
教えて頂けると大変助かります。
よろしくお願いいたします。

投稿日時 - 2011-01-17 14:57:27

QNo.6454351

困ってます

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

どのブラウザをお使いかわかりませんが、「ソースを表示」を指示したときにリロードされてるのだと思います。

フォームに入力した値は「入力」ボタンを押したときに、POSTという方式でサーバに送信され処理されます。

このブラウザでソースを表示したときは値の送信は行われない状態でoutput.phpを再取得しているため
(ブラウザのアドレス欄にoutput.phpと入力して表示させたときと同じ状態)
$_POSTには何もないということになります。

通常、POST後にソース表示させても「string(4) "abcf"」が表示されるはずと思いますので、
ブラウザの問題か、または特別に何かキャッシュさせないような仕組みになっているのかもしれません。

ここに書いてあるプログラムは間違ってないと思います。

投稿日時 - 2011-01-17 16:50:09

お礼

なるほど!!
おっしゃるとおりでした。

当方、chromeを使って検証していたのですが、IE及びFireFoxでは期待通りの結果となりました。
どうやら、chromeのみがソースを表示する際に、リロードしてしまうようです。
サーバーサイドスクリプトが、ローカルのブラウザに影響されることは考えが及びませんでした。


ご回答頂いた両名さま。
お忙しい中、見ず知らずの人間に親切にお答え頂き、本当にありがとうございました。

投稿日時 - 2011-01-17 17:39:51

ANo.2

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

型を明示的に処理してみては?

<?php
$name = (string) $_POST['name'];
var_dump($name);
?>

投稿日時 - 2011-01-17 15:29:27

補足

ご回答ありがとうございます。
やってみましたが、上手くいきませんでした。

・ブラウザでの表示
string(4) "abcd"


・ブラウザで「ソースを表示する」
string(0) ""



なぜブラウザで見えるものと、「ソースを表示」で見えるものが
異なってしまうのでしょうか・・・

投稿日時 - 2011-01-17 15:59:19

あなたにオススメの質問