0

私は何年もの間、$_POST 変数のテストと $var への値の割り当てを同時に行うこの方法を使用してきました。

今日、これの処理が異なるように見えるサーバーに出くわしました。

ページを読み込んでいます http://site.com/foo.php?var=bar No form post made... $_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 (isset($_POST['foo'])) {
    $var = $_POST['foo'];
...

設定解除の動作を取り除きました。

だから私の質問は、これif ($var= $_POST['foo']) {が悪い形であるかどうかです?

4

2 に答える 2

1

=比較演算子の代わりに代入演算子 i を使用してい==ます。E_STRICTまた、未定義の配列要素にアクセスすると、PHP は警告をスローすることに注意してください。したがって、最善の策は通常次のとおりです。

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

または整数の場合:

$age = intval(isset($_POST['age']) ? $_POST['age'] : '');

于 2012-05-10T19:47:14.763 に答える
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"; //
于 2012-05-10T19:47:41.037 に答える