我们有一个由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刷新整个页面吗?我真的不知道该何去何从。
您可能想要使用Post Redirect-Get模式;成功验证用户身份后,使用重定向将其发送到新页面。
正如我上面提到的,请研究修复代码中的SQL注入和会话固定漏洞。