1

私はphpが初めてで、これがここでの最初の投稿であるため、投稿を書くのも初めてです。スクリプトを使用してフォーム入力を検証しています。スクリプトの一部は次のとおりです。

$data=$_POST;
print_r($data); 

if(($data['dm']="No") and (!empty($data['dmsince']))):
    $error=$error." dm mismatch N";  
endif;  

if(($data['dm']="Yes") and (empty($data['dmsince']))):
    $error=$error." dm mismatch Y";  
endif;

if ($error):
    print $error;
    $error="";   
    print $form;
else:
    print "OK";

$_POST['dm']はいまたはいいえのいずれかとして、選択ステートメントを使用して受け入れています。

発生する問題は、フォームが処理されるときです。

$_POST['dm']='No'$_POST['dmsince']空白です。としてエラーが発生し'dm mismatch Y'ます。

$_POST['dm']=Yesとして$_POST['dmsince']='some valid date' エラーが発生し'dm mismatch N'ます。

論理的には、これらの両方のケースでエラーが発生することはありません。無理矢理ループに突入しているようです。私もelseifで試しましたが、結果はありませんでした。このコードの何が問題になっていますか?

4

1 に答える 1

3

条件比較演算子 (==または など===) を実際に使用するように条件を更新します。現在、$data['dm'] を最初の条件で「いいえ」に、2 番目の条件で「はい」に割り当てています。

また、次のように比較を書く習慣をつけたいと思うかもしれません:

if(true === $var)
if("Yes" === $var2)

左側の変数と比較しているアイテムを使用します。このようにして、誤って次のようなことをした場合:

if(true=$var)

PHP は、このようなケースではなくエラーをスローします

if($var=true)

$var = true を設定し、常に条件を true として評価します。

コードのデバッグがずっと簡単になります。

于 2012-09-07T16:33:58.417 に答える