-5

ユーザーが登録フォームに入力したパスワードの長さを確認しようとしています。しかし、予期しない出力が得られます。これが私のスクリプトです。

 <?php
 if($_SERVER['REQUEST_METHOD'] == 'POST') 
  {

  if(strlen(trim($password)) > 8)
   {
   echo"Password must be 8characters";
   }
   }
 ?>
4

2 に答える 2

9

変数$passwordに値が割り当てられていないため、コードは失敗します。次に、パスワードが8 文字を超えているかどうかを確認しています。つまり、小なり記号ではなく大なり記号を使用しています変数$passwordが空であるため、8 より大きい長さのチェックは常に false です。

これを試して:

if(!array_key_exists('password', $_POST))
    die('no password specified');

$password = trim($_POST['password']); // <--- this is not a good idea!
if(strlen($password) < 8)
    die('Password must be at least 8 characters');

要約すると、予期しない出力は次の 2 つの要因によって発生します。

  • 間違った比較演算子
  • 空の変数

dieプロダクション コードでは、よりユーザー フレンドリーなことを行う必要があります。

ドキュメンテーション

于 2012-11-29T15:19:44.913 に答える
2

自動グローバルを使用する$_POST['password']のは間違っています (そして、多くのホスティングで無効になっていることを願っています)。

また、パスワードを 8 文字に制限するのは悪い考えのように思えます。とにかくハッシュ化する必要があり、長さは問題ではありません。

于 2012-11-29T15:19:59.907 に答える