1

少し前、私はインターンシップに参加し、ジュニア Web 開発者として働いていました。isset($_POST/GET/REQUEST["var"])仕事と学習をしているときに、ページを変更するときに、単に使用するのではなく、使用していることに気付きました$_POST/GET/REQUEST["var"]

それで、後で家に帰って、同じことを試しました。何が起こるのですか ?if()それを確認するためにa に出くわすたびに、 を使用する必要isset()があります。そうしないと、エラーが発生します。ただし、1 つ注意してください。私の URL は次のとおりです。

?p=sub_artigo&id=2

したがって、if()条件を実行すると:

if(isset($_REQUEST["p"])=="procurar" && $_REQUEST['cont']){

エラーは表示されませんが、 を取得するとisset()、フォーラムやここで見られる通常のエラーが表示されます。

私の質問は、なぜ 2 番目の変数のエラーが表示されないのですか?

注: p->string;id->int

4

3 に答える 3

7

彼らはerror_reporting断りました。

if ($_POST['whatever']) { ... }

それ以外の

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

ただし、他の関連する可能性のあるエラーが表示されなくなります。

この設定はphp.ini、変数の下のファイルにありますerror_reporting

ini ファイルの詳細については、http: //php.net/manual/en/ini.phpを参照してください。

また、isset($_REQUEST["p"])=="procurar"構文的には正しいですisset()が、ブール値を返すため、true を返すことはありません。

あなたが欲しいのはisset($_REQUEST['p']) && $_REQUEST['p'] == 'procurar'

于 2013-07-03T17:32:05.120 に答える
5

RTM: http://php.net/isset

isset() はブール値の TRUE/FALSE を返します。文字列を返すことはないため、このステートメントは

if(isset($_REQUEST["p"])=="procurar" && $_REQUEST['cont']){ 

isset() が と等しくなることは決してないため、決して成功することはありません。procurarそのため、['cont']チェックは決して評価されません。

于 2013-07-03T17:32:47.340 に答える
0

最初のステートメントが false の場合、PHP は残りの if ステートメントを試行しません。

$_REQUEST、$_POST、または $_GET キーごとに、常に次のチェックを使用します。

function ifSet($key) {   
    return (isset($_REQUEST[$key]) && $_REQUEST[$key])?$_REQUEST[$key]:'';
}

error_reporting が E_ALL に設定されていても、警告は表示されません。

「isset」は、$key が設定されているかどうかをチェックし、その後、$key に値があるかどうかをチェックします。

于 2013-07-03T17:49:19.187 に答える