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 刷新整个页面?我真的不知道从这里去哪里。

4

1 回答 1

0

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

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

于 2011-05-23T01:53:28.433 回答