2011-05-23 56 views
0

我们有一个由php和ajax处理的登录表单。 ajax发送一个请求到登录的用户名和密码的php页面。它得到一个响应,如果它是正确的并且工作信息,它将它们记录在:“动态”会话

接受请求的php页面有这样的代码:

 echo (checkLogin($_POST['user'], $_POST['pass']) ? 'true' : 'false'); 
     if(checkLogin($_POST['user'], $_POST['pass']) == true) 
     logIn($_POST['user'], $_POST['pass']); 

在语句中使用的功能:

function logIn($user, $pass) 
    { 
      $_SESSION['sid'] = md5(md5($user) . md5($pass)); 
      $_SESSION['username'] = $user; 
      $_SESSION['password'] = $pass; 
    } 

    function checkLogin($user, $pass) 
    { 
     $user = strtolower($user); 
     $pass = strtolower($pass); 

     $res = mysql_query("SELECT * FROM users WHERE username='".$user."'"); 
     if(mysql_num_rows($res) == 1) 
     { 
      $data = mysql_fetch_assoc($res); 
      if($data['pass'] == aCrypt($pass)) 
      { 
       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 
     else 
     { 
      return false;   
     } 
    } 

现在,似乎在会话开始,只能够在用户重新加载页面待观察。我们需要它在页面上开始会话......我们需要用ajax刷新整个页面吗?我不知道该从哪里出发。

+0

请查找SQL注入(http://stackoverflow.com/questions/332365/xkcd-sql -injection-please-explain),也可以考虑在登录后使用'session_regenerate_id'来防止会话修复攻击(http://en.wikipedia.org/wiki/Session_fixation)。 – 2011-05-23 01:51:23

回答

0

它不工作,我需要这让我访问这些变量,而无需客户端刷新浏览器:S

0

您可能想要使用Post-Redirect-Get模式;在用户通过身份验证后,使用重定向将其发送到新页面。

正如我上面提到的,请考虑修复代码中的SQL注入和会话修复漏洞。

+0

SQL注入已经修复。在userActions页面的顶部,所有的发布数据都使用我编写的自定义函数进行消毒。不过谢谢。 – 2011-05-23 16:51:52

+0

从长远来看,这样做会导致你的痛苦(主要是因为你必须始终这样做)。使用PDO查看准备好的语句,它更简单,更安全。 – 2011-05-23 22:04:19