1

ユーザーがパスワードを変更できるようにフォームを作成しました。セキュリティを強化するために、ユーザーが古いパスワードを新しいパスワードに変更する前に入力するようにします。単純な if ステートメントに問題があります。

if ($row['password'] = $old_encrypt)

パスワードは md5 暗号化されているため、この if ステートメントに到達する前に、ユーザーが入力したパスワードを md5 で実行します。

私が確認したいのは、ユーザーが入力したパスワードがデータベースに保存されているものと同じであることです。ただし、上記のコードは、データベースに格納されている値と等しい値を受け入れます...したがって、誰かが私に問題が何であるかを教えてもらえますか?

前もって感謝します

4

2 に答える 2

5

代入演算子を使用しました===比較演算子を使用するか、厳密な比較演算子を使用する必要があります===

if ($row['password'] === $old_encrypt)
于 2013-05-10T15:34:25.573 に答える
2

=比較演算子==またはの代わりに代入演算子を使用してい===ます。

if'falsey' 値が割り当てられていない限り、内で代入演算子を使用すると、通常は true と評価されます。右辺に定数またはリテラル値がある場合、代入演算子もエラーを引き起こす可能性があります。

if(true = $variable)
    // will cause an error

でも、

if($variable = true)
   // will always be true

$varibale がtruefalse72.3または現在'sunshine'であるかどうかは関係ありませんtrue

于 2013-05-10T15:34:37.417 に答える