0

すべてのフィールドが入力されていない場合にエラーがエコーされる条件を設定しようとしています。私が書いたコードは常に true を出力するようです。

私は何を間違っていますか?

if (empty($oldpassword)||empty($newpassword)||empty($repatnewpassword))
4

2 に答える 2

2

それらの 1 つをチェックしています。つまり、フィールドの 1 つが空の場合、結果は になりtrueます。and に変更すると、すべてのフィールドが空のtrue場合にのみ取得されます。

if ( empty($oldpassword) && empty($newpassword) && empty($repatnewpassword) )   

すべてのフィールドが入力されていることを確認する必要があり、1 つのフィールドが入力されていないことを確認する必要がある場合は、もう少し長いコードを実行します。

# check first if old password is filled
if ( $oldpassword )  {

    # now, if that works, check if new passwords are filled ( and match too )
    if ( $newpassword && ( $newpassword == $repatnewpassword) ) {

        // do whatever password checks here, now you know that oldpassword is
        // filled and newpassord is filled and matches repatnewpassword

    } else {
        // new password is not filled or passwords don't match
    }

} else {
    // old password is not filled out
}
于 2012-07-19T11:41:47.910 に答える
0

$oldpassword が空で、$newpassword が空でない場合、コードは true を返します。¦¦ をすべて && に変更します。

于 2012-07-19T11:45:21.403 に答える