0

おめでとう。asp.net から PHP に正式に切り替えました。

今、私は立ち往生しています。:-)

いくつかのコード スニペット サイトで見つけたコードがあり、次の部分について質問があります。

if (isset($_POST['doRegCheck']))
    : if (intval($_POST['doRegCheck']) == 0 || empty($_POST['doRegCheck']))
    : redirect_to("index.php?do=users");
 endif;

endif;

誰かがここで何が起こっているのか正確に教えてもらえますか? このコードは、doRegCheck POST 変数の値をチェックして、空でないことを確認しますか?

前もって感謝します。

4

4 に答える 4

1

doRegCheckコードは、HTTP ヘッダーに という変数が含まれており、その変数が 0 ( ?doRegCheck=0) または何も設定されていない ( ) に設定されている場合にのみリダイレクトされます?doRegCheck=。それは私には逆に思えます。変数が存在し、次のような偽の値に設定されていない場合は、リダイレクトすると思います0,false,F

この構文 (コロン) は通常、テンプレートで (PHP モードを切り替えるとき) 使用されるため、読みにくくなっています。

于 2012-04-28T01:05:01.240 に答える
1

まず、これを適切に再フォーマットしましょう。

if (isset($_POST['doRegCheck'])) :
    if (intval($_POST['doRegCheck']) == 0 || empty($_POST['doRegCheck'])) :
        redirect_to("index.php?do=users");
    endif;
endif;

次に、冗長性を取り除きましょう。emptyのチェックを基本的に含みますissetempty"0"「空」として認識します。偽の値または存在しない値を「空」としてempty認識します。このコード、 を使用して値が数値であることを確認しようとする場合があります。要約すると、これはより理解しやすいはずです。intval

if (empty($_POST['doRegCheck']) || !is_numeric($_POST['doRegCheck'])) {
    redirect_to("index.php?do=users");
}
于 2012-04-28T01:07:10.437 に答える
0

現在の形式では読みにくくなっています。次のようにする必要があります。

if (isset($_POST['doRegCheck'])):
     if (intval($_POST['doRegCheck']) == 0 || empty($_POST['doRegCheck'])):
     redirect_to("index.php?do=users");
     endif;
endif;

つまり、次のようになります。

if (isset($_POST['doRegCheck'])){
     if (intval($_POST['doRegCheck']) == 0 || empty($_POST['doRegCheck'])){
     redirect_to("index.php?do=users");
     }
}

意味:

//is $_POST['doRegCheck'] set
if (isset($_POST['doRegCheck'])){
     //intval will return (int)0 even if its abc,
     // perhaps it should be is_numeric() as it will
     // pass if the value is 0 or the value is abc or empty
     if (intval($_POST['doRegCheck']) == 0 || empty($_POST['doRegCheck'])){
     //some user function to redirect
     redirect_to("index.php?do=users");
     }
}
于 2012-04-28T01:13:16.980 に答える
0

はい、「doRegCheck」が設定されているが、「0」に等しいか、「値がない」場合、「index.php?do=users」にリダイレクトされます。私が知る限り、基本的には、確認せずに登録ページにアクセスすると、登録プロセスが完了しないようにしています。

于 2012-04-28T01:08:31.617 に答える