PHP 设置跨域 域名cookie

PHP 设置跨域 域名cookie,第1张

理论上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 以后为什么需要刷新才会生效等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9697848.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存