0

我想编写一个登录脚本,用户在其中输入电子邮件 ID 和密码,如果电子邮件和密码都正确,则会转到另一个页面。此外,如果电子邮件和密码正确;这些值存储在数据库中。

这是整个更正的工作代码:

    <?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 的出色建议

杰夫的文章摘录:

整个互联网上的每个 rinky-dink 网站都要求我为他们创建一个特殊的用户名和密码,这总是让我非常痛苦。是的,如果您是 Alpha 极客,那么您可能会使用实用工具带中的特殊软件和 USB 密钥的组合来为您经常访问的数十个网站生成安全的用户名和密码。但是对于绝大多数沉默的普通人来说,他们对安全一无所知,但最重要的是希望方便,这意味着一件事:一遍又一遍地使用相同的用户名和密码。它也可能是一个简单的密码。

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...
?>

该代码段基本上只是检查validUser变量是否已设置为 true,如果他们已经登录,它应该有。

于 2012-06-05T21:57:28.860 回答