0

ユーザー名とパスワードを含むフォームがあり、ユーザー名とパスワード (空白のまま)、 isset($_POST["username"]) および isset($_POST["password "]) は true を返します。これは、何も設定していないため、そうあるべきではありません。しかし、 empty($_POST["username"] は期待どおり true を返します。誰かが isset のこの動作を説明できますか?

ありがとう

4

3 に答える 3

2

フォーム要素を送信すると...

<input name='username'...

...しかし、それらは空です。デフォルトでは、$_POST配列に空の値が入力されます。したがって、変数は設定されていますが、空です ( "")。

この場合、私が通常行うことは次のようなものです

if (isset($_POST['username'] && $_POST['username']) { ... }

その場合、それが設定されている (つまり、送信されたフォームである) かどうか、および値が空でないかどうかがチェックされます。それらが空 ( "") の場合、PHP は と解釈しfalse、条件は満たされない。

于 2013-05-03T05:36:12.873 に答える
1

これは、 $_POST['username'] が設定されていて空である可能性があるためである可能性があるため、このようなチェックを克服するには

if ((isset($_POST["username"]) && ($_POST["username"]!=""))
于 2013-05-03T05:36:39.663 に答える
0

isset — Determine if a variable is set and is not NULL. 変数が unset() で設定解除された場合、それは設定されなくなります。isset() は、NULL に設定された変数をテストすると FALSE を返します。また、NULL バイト ("\0") は PHP の NULL 定数と同等ではないことに注意してください。

複数のパラメータが指定されている場合、 isset() は、すべてのパラメータが設定されている場合にのみ TRUE を返します。評価は左から右に進み、設定されていない変数が検出されるとすぐに停止します。参照:- http://php.net/manual/en/function.isset.php

于 2013-05-03T05:38:45.580 に答える