理论上php不可以跨域设置cookie;
php设置cookie流程:返回的信息携带信息,然后靠浏览器来执行写入到cookie,一般浏览器安全机制已经限制跨域写入;
如果你想伪造cookie,可以使用浏览器管理cookie的插件
$s="东篱映雪";
//赋值
$_COOKIE['s']=$s;
//取值
$_COOKIE['s'];
//这里输出的值就是“东篱映雪”
echo $_COOKIE['s'];
//php里cookie的使用就是直接用$_COOKIE就行了
以
setcookie('name', "Garen");echo $_COOKIE['name'];
为例;第一次访问在执行setcookie('name', "Garen");之前, PHP 已经从请求体重获取所有的 cookie(在$_COOKIE中),然后到setcookie('name', "Garen");的时候,只是设置了名为name 的 cookie;这部只是保存进浏览器,但是并没有赋值给$_COOKIE,$_COOKIE并没有变化,所有也就没有$_COOKIE['name'],执行到echo $_COOKIE['name'];就会报错第2次访问获取浏览器中所有的 cookie 时,已经有了上次添加的这个名为name 的 cookie 了,所以可以显示
这样是不会刷新的,你必须在通过ajax设置cookie后由后端返回设置结果(成功/失败)
然后在前端通过js更新页面
因为网页在显示时已经下载完毕,不会改变了,你需要改变网页内容,就要用js修改,ajax取回来数据,然后前端用js根据数据来修改页面
你的后端将cookie删除了,但前端页面已经被浏览器解析,所以浏览器不会自己修改登录信息
解决方法:
ajax发送请求→PHP接到退出请求→PHP删cookie→PHP返回成功码{"success":1}或失败码{"success":0}→前端接受到返回码→如果是1,则通过js将用户名改掉(如documentgetElementById('username')innerHTML='请登录')等
一般退出是直接用一个链接,用户访问连接后,后端清理cookie,然后用302或301跳转到原来页面或首页,目前大部分网站都是跳转的方式退出的
虽然ajax不刷新页面的方式理论上用户体验更好,但个人认为,退出账户这类 *** 作不会经常使用,没有必要用ajax,通常是网页中动态展示的数据(如天气、抽奖结果、活动参与信息)等经常需要变动的数据用ajax
以上就是关于PHP 设置跨域 域名cookie全部的内容,包括:PHP 设置跨域 域名cookie、php怎么把一个值放到cookies里,这个值也不用从数据库读取,然后再怎么读取cookie值、使用php创建cookie 以后为什么需要刷新才会生效等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)