写入$ _SESSION的PHP问题

时间:2014-11-13 15:46:07

标签: php jquery ajax session

我最近实现了一个简单的PHP登录系统,它具有以下逻辑:

  1. 用户通过电子邮件提交表格&密码
  2. jQuery向外部PHP文件发布请求。
  3. PHP文件检查用户名和密码,
  4. A.)如果登录正常,则设置会话变量,返回重新加载页面的SUCCESS代码(在设置新会话之后)。 B.)如果登录错误,则返回错误代码。
  5. 问题(不是浏览器特定的)有时(在成功代码被发送回来之后,随机地,大约每2或3次中有1次)页面重新加载,会话尚未设置或更改。

    jQuery帖子请求:

     function tryLogin() {
         $.post( "/assets/lib/lib_actions.php?action=login", {email: $(".login-email").val(), passwor$
             if (data == "success") {
                 window.location.replace("url to homepage - don't wish to reveal website");
             } else {
                 $(".login-alert").css("display", "block");
                 $(".login-alert").html(data);
             }       
         });
      }
    

    PHP登录检查:

    我试图通过在会话设置的位置插入while循环来解决问题,但仍然没有运气。

     public function login($email, $password) { //will update to prepared statements when done
                $row = self::$db->query("SELECT * FROM members WHERE email='".$email."'");
                if (mysqli_num_rows($row) == 1) {
                        $row = self::$db->fetchArray($row);
                        $savedPassword = $row['password'];
                        $salt = $row['salt'];
                        $hash = crypt($password, $salt);
                        if ($savedPassword == $hash) {
                                while (!isset($_SESSION['uid']) || $_SESSION['uid'] == "Guest") {
                                        session_regenerate_id();
                                        $_SESSION['uid'] = $row['UID'];
                                        session_write_close();
                                        self::$db->query("UPDATE members SET lastActive=now() WHERE UID='".$row['UID$
                                }
    
                                return "success";
                        }
                }
                return "Incorrect E-mail or Password";
        }
    

    这会检查每个新页面加载:

     if (isset($_SESSION['uid']) && $_SESSION['uid'] != "Guest") {
    

    我感谢对此问题的任何帮助或见解。如果需要,我也可以发布任何其他代码。

0 个答案:

没有答案