PHP和AJAX中的cookie问题

我在脚本上遇到一些问题,我使用PHP和jquery来创建登录系统。

首先,我有PHP页面包含登录表单。 当用户点击提交时,我使用jquery将数据发送到服务器

$.post('server_login.php', {username:username.val(), password:password.val()}, function(data){ alert(data); }); 

在server_login.php中我有做登录用户的function。

 if($_POST['username']=='username' && $_POST['password']=='1234'){ $expire = time() + 60*60*24*30; //1 month expired. setcookie("user_id", $_POST['username'], $expire); echo true; } 

和jquery在我的登录页面上提醒“1”。

问题是当我刷新我的网站并收回cookie时,它没有告诉我。

 print_r($_COOKIE); 

哪里不对了?

如果您调用的脚本位于服务器上的另一个文件夹中(或通过url重写,它看起来好像在另一个路径下),请确保设置cookie的path参数。

默认情况下, setcookie()仅为当前路径设置cookie。

如果您的页面是www.domain.com并且您对www.domain.com/auth/login.php进行了ajax调用,则cookie将被设置为/auth并且在/auth之外将不可用。

所以尝试改为:

 setcookie("user_id", $_POST['username'], $expire, '/'); 

我在我的脚本中尝试下面的代码。 如果您获得的cookie值超过了代码中的错误,请尝试使用此代码,但是如果此代码也不起作用,请检查您的浏览器Cookie选项是否启用。 如果浏览器禁用cookie,也不能获得任何cookie值。

要启用浏览器cookie, 请访问以下链接http://www.blogpatrol.com/enable-cookies.php 。

测试代码1:

 $expire = time() + 60*60*24*30; //1 month expired. setcookie("TestCookie", "shashank patel here", $expire); print_r($_COOKIE); 

测试代码2:

同时使用您的脚本检查此代码,此代码告诉您是否启用了浏览器cookie。

 error_reporting (E_ALL ^ E_WARNING ^ E_NOTICE); // Check if cookie has been set or not if ($_GET['set'] != 'yes') { // Set cookie setcookie ('test', 'test', time() + 60); // Reload page header ("Location: test.php?set=yes"); } else { // Check if cookie exists if (!empty($_COOKIE['test'])) { echo "Cookies are enabled on your browser"; } else { echo "Cookies are NOT enabled on your browser"; } }