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"; } }