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

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


■やりたいこと
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)フォームからの値を変数に格納する際、何か注意する点があるのでしょうか?



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

A 回答 (2件)

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



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

この回答への補足

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

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


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



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

補足日時:2011/01/17 15:59
    • good
    • 0

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



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

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

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

ここに書いてあるプログラムは間違ってないと思います。
    • good
    • 1
この回答へのお礼

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

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


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

お礼日時:2011/01/17 17:39

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