我们有一个由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刷新整个页面吗?我不知道该从哪里出发。
请查找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