在AJAX请求中设置Cookie?

我正在使用对PHP的jQuery AJAX调用来验证登录表单。在php中,我创建一个会话,如果他们选中了“ remember

me”复选框,我想创建一个cookie。这是php代码:

<?php

include '../includes/connection.php';

date_default_timezone_set('GMT');

$name = $_POST['username'];

$pass = $_POST['password'];

$query = mysql_query("SELECT id, username, password FROM users WHERE username = '$name' LIMIT 1");

if(mysql_num_rows($query) == 0) {

echo 'error';

exit;

}

while($row = mysql_fetch_array($query)) {

if($row['username'] == $name && $row['password'] == $pass) {

session_start();

$_SESSION['username'] = $row['username'];

$_SESSION['usrID'] = $row['id'];

echo 'success';

if($_POST['remember']) {

setcookie('username', $row['username'], $exp);

setcookie('password', $row['password'], $exp);

setcookie('usrID', $row['id'], $exp);

}

} else {

echo 'error';

exit;

}

}

?>

会话设置成功,但是cookie完全没有设置。我尝试设置所有值(域,路径等),但没有任何改变。有什么明显的我想念的吗?

回答:

以下是一些建议:

  • 确保您指定了正确的日期到期格式
  • 在重定向页面上设置cookie时,必须在调用以下命令后设置cookie header('Location: ....');

header('Location: http://www.example.com/'); setcookie('asite', $site,

time()+60*60, '/', 'site.com');

  • 如果您有类似的人工网址www.domain.com/path1/path2/,则必须将cookie路径设置为/才能适用于所有路径,而不仅仅是当前路径。

setcookie('type_id', $new_type_id, time() + 60*60*24*30, '/');

注意/参数中的最后一个。

从PHP手册:

Cookie在服务器上可用的路径。如果设置为“ /”,则cookie将在整个域中可用。如果设置为’/ foo /’,则cookie仅在/ foo

/目录以及domain的所有子目录(如/ foo / bar /)内可用。默认值为正在设置Cookie的当前目录。

  • setcookie()定义要与其余HTTP标头一起发送的cookie。像其他标头一样,必须在脚本的任何输出之前发送cookie,这意味着在此之前不应有任何html / code echo语句。

以上是 在AJAX请求中设置Cookie? 的全部内容, 来源链接: utcz.com/qa/436181.html

回到顶部