我在脚本中遇到一些问题,该问题使用PHP和jquery创建登录系统。
首先,我有PHP页面包含用于登录的表格。当用户单击提交时,我使用jQuery将数据发送到服务器
$.post('server_login.php', {username:username.val(), password:password.val()}, function(data){ alert(data); });
在server_login.php中,我具有执行登录用户的功能。
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。
setcookie()
如果您的页面是www.domain.com且您进行了ajax调用,www.domain.com/auth/login.php则cookie将被设置为,/auth并且将无法在外部使用/auth。
www.domain.com
www.domain.com/auth/login.php
/auth
因此,尝试更改为:
setcookie("user_id", $_POST['username'], $expire, '/');