0

ユーザーが電子メール ID とパスワードを入力し、電子メールとパスワードの両方が正しい場合に別のページに移動するログイン スクリプトをコーディングしたいと考えています。また、電子メールとパスワードが正しい場合。値は DB に格納されます。

修正された作業コード全体は次のとおりです。

    <?php
    if($_POST['submit']){
        $email = protect($_POST['email']);
        $password = protect($_POST['password']);
        $md5password=MD5($password);

        if(!$email || !$password){
            echo '<span style="color: red;" /><center>You need to fill in your <b>User Name</b> and <b>Password</b>!</center></span>';
        }else{
            $res = mysql_query("SELECT * FROM `employer` WHERE `email` = '".$email."'");
            $num = mysql_num_rows($res);

            if($num == 0){
                echo '<span style="color: red;" /><center>The <b>E Mail ID</b> you supplied does not exist!</center></span>';
            }else{
            $res = mysql_query("SELECT * FROM `employer` WHERE `email` = '".$email."' AND `password` = '".$md5password."'");
            $num = mysql_num_rows($res);

            if($num == 0){
                echo '<span style="color: red;" /><center>The <b>Password</b> you supplied does not match the one for that E Mail ID!</center></span>';}else{
                $row = mysql_fetch_assoc($res);

                $_SESSION['uid'] = $row['id'];
                echo "<center>You have successfully logged in!</center>";

                $time = date('U')+50;
                mysql_query("UPDATE `employer` SET `online` = '".$time."' WHERE `id` = '".$_SESSION['uid']."'");
                mysql_query("UPDATE employer (date) VALUES (NOW())");

                header('Location: loggedin_employer.php');
                }
            }
        }
    }
?>
4

2 に答える 2

6

ここにチュートリアルがあり、他の数十の場所があります。

ただし、そのチュートリアルを表示する前に、 OWASP 認証チート シートを確認してください。

安全でないシステムを構築する人が多すぎます。それらの人の一人にならないでください。 OWASP は、すべての Web 開発者がよく知っておくべき優れたリソースです。

その際、Jeff Atwood の優れたアドバイスを参考にしてください。

ジェフの記事からの抜粋:

インターネット全体のすべての危険なウェブサイトが、それらのためだけに特別なユーザー名とパスワードを作成するように要求することは、常に私を大いに悩ませていました. はい、あなたがアルファ オタクなら、ユーティリティ ベルトの特別なソフトウェアと USB キーの組み合わせを使用して、頻繁に使用する多数の Web サイトの安全なユーザー名とパスワードを生成するでしょう。しかし、セキュリティについて何も知らず、何よりも利便性を求めている無言の大多数の通常の人々にとって、これは 1 つのことを意味します。それは、同じユーザー名とパスワードを何度も使用することです。また、おそらく単純なパスワードでもあります。

Jeff はまた、あなたの探求に着手する前に読む価値のあるOpenIdに関する別の素晴らしい記事を持っています。

そして最後に、おそらく最も重要なのは、パスワードを間違って保存しないことです! ほとんどの人がどこでも同じユーザー名/パスワードを使用していることを考えると、あなたのサイトが侵害された場合、すべてのアカウントが侵害される可能性があります.

ここに画像の説明を入力

于 2012-06-05T22:00:25.520 に答える
1

これは最善の方法ではないかもしれませんが、私がやった方法です。

ログイン フォームを含む単純な html ページを作成し、送信ボタンを押すと、エントリがデータベースに送信されます。そこにある場合は、作成したグローバル セッション変数 ( と呼ばれるとvalidUserします) を true に設定します。次に、javascript を使用してホームページに送信します。ログインせずにページにアクセスしようとした場合に備えて、次のスニペットをすべての安全なページの上部に配置します。

<?php
   if (!$_SESSION["validUser"])
      // redirect them to the login page however you want...
?>

スニペットは基本的に、変数が true に設定されているかどうかを確認するだけvalidUserです。これは、ログインした場合に設定する必要があります。

于 2012-06-05T21:57:28.860 に答える