当前位置: 首页 > 面试题库 >

在AJAX请求中设置Cookie?

燕智
2023-03-14
问题内容

我正在使用对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语句。


 类似资料:
  • 本文向大家介绍如何在JavaScript中使用AJAX请求设置Cookie值?,包括了如何在JavaScript中使用AJAX请求设置Cookie值?的使用技巧和注意事项,需要的朋友参考一下 我们需要使用AJAX请求或以任何AJAX请求将这些cookie发送到服务器的方式来设置cookie。 这里要注意的一件事是,对任何远程服务器的每个AJAX请求都会自动将所有cookie发送到该服务器,而无需我

  • 问题内容: 在使用XMLHttpRequest进行AJAX调用时,似乎无法从JavaScript更改大多数请求标头。请注意,必须在Gecko浏览器中调用when。设置_Referer时_ ,它没有设置(我查看了使用Firebug和Tamper Data发送的请求标头)。当我设置User-Agent时,它完全搞砸了AJAX调用。但是,设置接受和_内容类型_确实可以。我们是否无法在Firefox 3中

  • 问题内容: 我已经用谷歌搜索了一段时间,只能找到能做什么。我找不到遇到相同问题的任何人。 我将JSON传递回服务器,并且不希望jQuery自动将数据转换为查询字符串,因此我将pr​​ocessData设置为false。如果我取出processData,则可以看到请求触发,但是一旦将其放入,就看不到正在发出任何请求(使用Firebug和Chrome开发工具)。 我最初发出的请求比这个要复杂一些,但是

  • 问题内容: 我有一个网页,可通过Ajax处理机器的远程控制。当用户离开页面时,我想自动与机器断开连接。所以这是代码: 断开连接功能只是将HTTP GET请求发送到PHP服务器端脚本,该脚本完成了断开连接的实际工作: 在FireFox中可以正常工作。但是使用Chrome,根本不会发送ajax请求。有一个不可接受的解决方法:向回调函数添加警报: 添加警报呼叫后,请求将成功发送。但是正如您所看到的,这根

  • 问题内容: 尝试实施ajax登录/注册过程(不带身份验证的刷新站点)。使用Cookie来保存状态。我以为我现在就拥有此功能,但是由于某种原因,浏览器在从服务器取回cookie后仍未设置cookie。有人可以帮忙吗?这是请求和响应头: 请求标题 响应标题 我还在服务器返回的Chrome网络工具中看到了cookie: 响应Cookie 问题答案: 必须通过将“ withCredentials”设置设置

  • 我使用curl命令调用我的REST服务 我试图使用Python的请求库映射相同的代码 我的问题是,如何在代码中设置我的TOKEN值?