0

ユーザー名とパスワードのみのログインフォームです。うまく機能しますが、情報で大文字と小文字を区別したいです。たとえば、データベースのユーザー名は David、パスワードは PooPoo です。ユーザー名: daVid とパスワード: PoOPOo を挿入すると、フォームが解析されます。

私のコードは次のようになります。

<?php 
    session_start();
    if (isset($_SESSION["manager"])) {
        header("location: index.php"); 
        exit();
    }
?>
<?php 
    if (isset($_POST["username"]) && isset($_POST["password"])) {

        $manager = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["username"]); 
        $password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password"]); 
        include "../storescripts/connect_to_mysql.php"; 
        $sql = mysql_query("SELECT id FROM admin WHERE username='$manager' AND password='$password' LIMIT 1"); // query the person
        $existCount = mysql_num_rows($sql); // count the row nums

        if ($existCount == 1) { // evaluate the count
             while($row = mysql_fetch_array($sql)){ 
                 $id = $row["id"];
             }
             $_SESSION["id"] = $id;
             $_SESSION["manager"] = $manager;
             $_SESSION["password"] = $password;
             header("location: index.php");
             exit();     
        }else{
            print '<script type="text/javascript">'; 
            print 'alert("wrong info")'; 
            print '</script>'; 
        }            
    }
?> 

私の検証スクリプト

<script type="text/javascript" language="javascript"> 
    function validateMyForm ( ) { 
        var isValid = true;
        if ( document.adminlogin.username.value == "" ) { 
            alert ( "Please enter your username" ); 
            isValid = false;
        } else if ( document.adminlogin.password.value == "" ) { 
            alert ( "Please enter password" ); 
            isValid = false;            
        }
        return isValid;
    }
</script>

私のエラーはどこですか?

4

2 に答える 2

0

エラーはそもそも大文字と小文字の区別を心配していると思います。パスワードで大文字と小文字を区別することを主張することは、通常、誇張されています。はい、特定の長さのパスワードに強度を追加しますが、その長さを長くすることもできます. どちらの場合も、パスワードを覚えるのが少し難しくなりますが、大文字と小文字が混在するパスワードの方がスパイしやすいでしょう。

Caps Lock をオンのままにしておくことは非常に一般的であるため、多くのサインイン画面 (Windows など) で警告が表示されるようになりました。Caps Lock がオンになっているためにパスワードを拒否すると、一般的な 40 ~ 80 ビットのうち合計で 1 ビットの余分なエントロピーが得られますが、その見返りに、不満を抱いている隣の同僚に、あなたが入力するのをもう一度見る機会が与えられます。 . 'PooPoo' (キーボードで隣り合った 2 つの文字) を入力している場合、キーボードのクリック音を聞いたり、タッチ スクリーンで指の汚れを探したりするだけで、これを検出できる可能性があります。

大文字と小文字が混在するパスワードとそれがユーザーにもたらす不便さにより、ほとんどの人は入力速度が遅くなり、慎重に入力するようになります。多くのタッチ タイピストがケース間を切り替えるのがぎこちなく (ほとんどの携帯電話ではさらに悪い)、スパイしやすいため、2 本指のアプローチに頼っているのを見てきました。

于 2014-05-16T19:38:08.147 に答える
-3

md5() 関数を使用してユーザーのパスワードを保存する必要があります (検証でも同じことを行います)。md5() はそれ自体で大文字と小文字を区別するため、自動的にジョブを実行します。

md5()

これにより、ケースの問題が解決され、パスワードの保存がより安全になります

于 2013-09-07T17:52:19.003 に答える