【发布时间】:2014-01-20 02:41:22
【问题描述】:
我有一个带有 ajax 的登录表单,如果选中了“记住我”复选框,我正在尝试设置 cookie。我已经有代码在用户选中“记住我”框但未设置 cookie 时运行。执行var_dump($_COOKIE) 输出array(1) { ["PHPSESSID"]=> string(26) "xxxxxxxxxxxxxxxxxxxxxxxxxx" } 并且即使在执行secookie() 之后它也输出相同的东西。
登录.php
<?php
require_once (dirname(__FILE__) . '/../../inc/inc.all.php');
$username;
$password;
$remember;
$token;
if (!isset($_POST['username'])) {
echo "Username field must be set!";
die();
}
$username = $_POST['username'];
if (!isset($_POST['password'])) {
echo "Password field must be set";
die();
}
$password = md5($_POST['password']);
$remember = $_POST['remember'];
if (!isset($_POST['token'])) {
echo "There was a problem logging you in securly, Prehaps you are trying to log in from a different window?";
die();
} else {
$token = $_POST['token'];
}
// Validate token
if (!isset($token) || $token != $_SESSION['token']) {
echo "Invalid token: There was a problem logging you in securley, Prehaps you are trying to log in from a different window?";
die();
}
// Log the user in
$sql = "SELECT ID FROM cs_users WHERE username = '{$username}' AND password = '{$password}'";
$query = $db -> query($sql);
if ($query -> num_rows) {
list($id) = @array_values($query -> fetch_assoc());
if ($remember) {
$expire = time() + 60 * 60 * 24 * 180;
echo $id.'<br>'.$username.'<br>'.$password.'<br>';
setcookie("id", $id, $expire);
setcookie("username", $username, $expire);
setcookie("password", $password, $expire);
// header("LOCATION:{$_SERVER['PHP_SELF']}");
} else {
$_SESSION['id'] = $id;
$_SESSION['username'] = $username;
$_SESSION['password'] = $password;
}
echo true;
} else {
echo "Invalid username/password";
die();
}
?>
【问题讨论】:
-
为什么不用jQuery Cookie之类的东西在客户端设置cookie?这样你就可以在 AJAX
.done()上设置它。 -
@r3mus 我不想通过 javascript 设置 cookie。否则需要做大量工作才能保存 cookie(我需要保存一个用 password_hash() 加密的密码 cookie)
-
您可以在 php 端执行所有必要的散列等(无论如何您都必须这样做?)并将结果返回给 jQuery,然后弹出 cookie。
-
所以你的意思是条件 if ($remember) 被执行为真,并且 (echo $id.'
'.$username.'
'.$password.'
';) 正在回显但 setcookie("id", $id, $expire);实际上并没有在浏览器中创建 cookie,对吗? -
您使用的是an unsuitable hashing algorithm,需要take better care的用户密码。
标签: javascript php jquery ajax cookies