2012-05-10 19 views
0

私は$ _POST varをテストして同時に$ varに値を代入するこのメソッドを使いました。

今日、私はこの処理の点で異なると思われるサーバーに入りました。

私はページhttp://site.com/foo.php?var=barに行われませフォームポストをロードしていないんだ...と私は

if (isset($_POST['foo'])) { 
    $var = $_POST['foo']; 
... 

に切り替えると$ _POST VARのためのテストは私が得た私の初期割り当て

$var= $_GET['var']; 

echo "var is $var\n"; // correctly echos $_GET['var'] 

if ($var= $_POST['foo']) { 
    echo "POST foo seen\n"; // does not fire, condition not met 
} 

echo "var is $var\n"; // does not echo $_GET['var'] 

の設定を解除するようです設定を外す行動を取り除く。

私の質問は、このif ($var= $_POST['foo']) {が悪いフォームかどうかですか?

+0

を試してみてください。どちらの回答も本質的に「はい」と言われ、あなたは答えを意図的に「前に働いた」と守ります。なぜあなたは助けを欲しがらないのですか? – kingcoyote

+0

あなたのコードはうまく動作します: '$ _POST ['foo'] = '1'; if($ var = $ _POST ['foo'])echo "POST fooが表示されました\ n"; ' – webbiedave

答えて

1

比較演算子==の代入演算子= iinsteadを使用しています。また、未定義の配列要素にアクセスすると、PHPはE_STRICTという警告をスローします。従って、最も良い賭けは典型的なものです:

$ name = trim($ _ POST ['name'])?$ _POST ['name']: '');

または整数の:

$年齢= INTVAL(ISSET($ _ POST [ '年齢'])$ _POST [ '年齢']:? '');

+0

私は故意に代入演算子を使用しています。私がこれまで使用してきた他のすべてのサーバでこのように機能するのは、post ['foo']が定義されていれば、その値に$ varを設定した場合は何もしません。 " – jerrygarciuh

+0

正直言って、条件付きステートメントで変数を代入する際に、比較を提供することを意図しています。あなたはこれの目的が何であるかをもっと明確に説明できますか? – itachi

+0

こちらのフローは編集フォームの一部です。ユーザーが編集するリンクをクリックすると、$ _GET varがこれによって設定されます。フォームは$ _GET varに基づいて作成されます。フォームがPOSTされ、fooがフォームに設定されるかもしれません。アクションは、fooがフォームに設定されているかどうかに関して条件付きで行われます。設定されていない場合は、ルーチンが実行されて新しいfooおよびpopulateフォームが生成されます。 fooが既に設定されている場合は、その値がフォームの設定に使用されます。 – jerrygarciuh

0

それは悪いフォームの場合は、尋ねる

$var = isset ($_GET ['var']) ? $_GET ['var'] : null; 
$foo = isset ($_GET ['foo']) ? $_GET ['foo'] : null; 

echo "var is $var\n"; // correctly echos $_GET['var'] 

if ($var === $foo) { 
    echo "POST foo seen\n"; // does not fire, condition not met 
} 

echo "var is $var\n"; // 
+0

私がここで意図しているのは、 "post ['foo']が定義されている場合、その値に$ varを設定すると、何もしません。私は前にこれが失敗するのを見たことがない。 – jerrygarciuh

+0

定義された 'isset($ _GET ['foo'])'が必要なものだけであるかどうかを知りたければ – Baba

関連する問題