2012-06-05 304 views
0

我想编写一个登录脚本,用户输入电子邮件ID和密码,并在电子邮件和密码都正确的情况下转到其他页面。 此外,如果电子邮件和密码是正确的;这些值被存储在数据库中。php sql登录脚本

这里就是整个校正后的工作代码:

<?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'); 
       } 
      } 
     } 
    } 
?> 
+0

给我们展示了一些代码。 – pixeline

+3

你想喝杯茶吗? – Benjamin

+1

听起来像个好主意。我同意。 – Mike

回答

6

有一个教程here等几十个地方。

但是你查看教程,检查出OWASP Authentication cheat sheet之前。

太多人构建不安全的系统。 不要成为那些家伙之一。 OWASP是一个很好的资源,所有的Web开发人员应该非常熟悉。

而且当你在这,你可能要考虑Jeff Atwood's excellent advice。从杰夫的文章

摘录:

它总是心疼我大大的 整个互联网上的每一个rinky,丁克网站要求我创建一个特殊的用户名,只是他们的密码 。是的,如果你是一个怪胎阿尔法,那么你很可能是使用特殊的软件和USB密钥 组合从你的工具皮带 产生安全的用户名和密码的几十个网站,你 频繁。但对于广大而沉默的大多数普通人来说,他们知道安全性并不重要,但最重要的是希望方便,这意味着一个问题:一遍又一遍地使用相同的用户名和密码。它也是 ,可能也是一个简单的密码。

杰夫还有另外一篇关于OpenId的文章,值得在开始你的探索之前阅读。

最后,或许也是最重要的是,Don't Store Your Passwords Incorrectly!鉴于大多数人在任何地方使用相同的用户名/密码,如果您的网站被攻破,那么所有的帐户可能会受到影响。

enter image description here

+1

真的是一个真棒帖子! – xan

+0

请不要低估我的问题。我忘了粘贴我的代码匆忙。 – xan

1

这可能不是最好的方式,但它是我做到了。

与登录表单创建一个简单的HTML页面,当他们按提交,送他们进入数据库。如果存在,则将您创建的全局会话varibale(假设它被称为validUser)设置为true;然后,使用javascript将它们发送到主页。为了以防万一,他们尝试没有登录访问的页面,把下面的代码片段在每个安全页面的顶部:

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

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

+0

谢谢,我解决了。前一阵我很苦恼。但是要感谢SO&你的人。 :) – xan