2012-04-28 16 views
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変数の値が空でないことを確認するためにチェックしますか?

ありがとうございます。

答えて

1

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

(PHPモードの切り替え時に)その構文(コロン)は通常、テンプレートで使用されます読むのが難しい。

1

まずは、これを適切に再フォーマットしてみましょう:

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

それでは、冗長性を出してみましょう。 emptyには、基本的にissetのチェックが含まれています。 empty"0"を「空」と認識します。 emptyは、の値または存在しない値を "空"と認識します。このコードかもしれない値を確認しようとするとintvalを使用して数値です。だから、要約し、これはより理解する必要があります:

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

はい、あなたは「doRegCheck」が設定されている場合、正しい考えを持っているが、「0」に等しいか、それはにリダイレクトされます「」値を持ちません'index.php?do = users'。だから、基本的には、確認なしに登録ページを言うと、登録プロセスが完了しないことを確認していると言えます。

0

現在の形はそのまま、それがあるべき困難可読性を行います

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"); 
    } 
} 
に変換

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