跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

javascript - 谁和我说说,php 接受cookie 是怎么回事,涉及那些函数?

我是业务爱好者,都是比较好奇什么事,学什么。 我问问这个cookie是怎么回事, 是不是就是从服务器,验证了对方的用户名,密码之后,返回一个加密的字符串,并且把这个字符串存到服务器数据库。 以后用户登录的时候,就不需要验证id和密码了,只验证这个字符串和数据库的对不对的起来。过一段时间,就把数据库的这个字符串删了。 原理应该就是这么回事吧。但是我不懂的是,这个cookie怎么从前段发过去的,我会用action提交post和get,也会用ajax传数了。也会用url传值。 请问在前段提交cookie的jQuery或者 html 代码的相关函数有哪些。 立即学习 “ PHP免费学习笔记(深入) ”; 还有从 php 服务器端收cookie的相关函数有哪些,大家帮忙提供个关键字,我去搜搜,或者简单讲讲注意事项,谢谢了。 回复内容: 我是业务爱好者,都是比较好奇什么事,学什么。 我问问这个cookie是怎么回事, 是不是就是从服务器,验证了对方的用户名,密码之后,返回一个加密的字符串,并且把这个字符串存到服务器数据库。 以后用户登录的时候,就不需要验证id和密码了,只验证这个字符串和数据库的对不对的起来。过一段时间,就把数据库的这个字符串删了。 原理应该就是这么回事吧。但是我不懂的是,这个cookie怎么从前段发过去的,我会用action提交post和get,也会用ajax传数了。也会用url传值。 请问在前段提交cookie的jQuery或者html代码的相关函数有哪些。 还有从php服务器端收cookie的相关函数有哪些,大家帮忙提供个关键字,我去搜搜,或者简单讲讲注意事项,谢谢了。 服务器通过HTTP响应头
Set-Cookie
来告诉用户代理cookie的名、值、对应的路径、有效期等等,用户代理(一般就是浏览器)保存下来后,当向后端请求数据时,就会把对应的cookie放到请求头中发给服务器。 前端也可以通过JS来设置cookie。 所以只要设置好cookie之后,浏览器会自动在请求时附上cookie,并不需要你主动提交。 PHP中设置cookie PHP中设置Cookie的函数是
setcookie
(还有个
setrawcookie
并不常用)。
setcookie('hello', 'world', time()+3600, '/test/', 'example.com');
这样就设置了一个名为
hello
值为
world
,有效期为当前时间加上3600秒(也就是1个小时),域名为
example.com
,路径为
/test/
(代表只能在诸如
http://example.com/test/a.php
这样的路径下有效)的cookie。 具体参数请参考文档 http://php.net/manual/zh/func... 。 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载 服务器发送cookie 服务器会在响应的HTTP头中包含一个
Set-Cookie
头:
Set-Cookie: hello=world; Expires=Sun, 13 Nov 2016 11:30:00 GMT; Domain=example.com; Path=/test/
其中过期时间(
Expires
)是使用GMT来表示,这里我假设我是在北京时间2016年11月13日18:30:00(也就是GMT 2016年11月13日10:30:00)设置的Cookie,有效期是1个小时。 如果有多个cookie就会有多个
Set-Cookie
头。 具体可参考 http://www.cnblogs.com/hdtian... 。 浏览器发送cookie 浏览器就会把这个Cookie保存下来。当下次你再请求符合Cookie条件的地址时,浏览器就会在请求头中包含一个
Cookie
头:
Cookie: hello=world
如果有多个cookie还是只有一个
Cookie
头,各个cookie的名值对使用分号和空格
;
来分隔。 不管你是AJAX请求,还是普通的POST和GET,只要cookie有效,浏览器就会发送给服务器。 PHP接收处理cookie PHP会解析头信息,并把cookie解析到
$_COOKIE
数组中。我们就可以这样访问名为
hello
的cookie的值:
$_COOKIE['hello'];
JS中操作cookie JS中访问cookie有点麻烦,因为并没有方便的接口来读取、设置cookie。我们只能通过
document.cookie
来操作cookie。具体请参考: https://developer.mozilla.org... 。 JS中读取cookie直接用
document.cookie
,但是得到的确实和上面 浏览器发送cookie 中的格式类似的字符串,就是用分号和空格隔开的名值对。 比如
hello=world; PHPSESSID=web5~toqn2au0krlholat9c2c4aast3
这样的。我们需要自己解析。 JS中设置cookie则是和上面 服务器发送cookie 类似,都要设置各个参数。比如:
document.cookie="hello=kitty; expires=Sun, 13 Nov 2016 12:00:00 GMT"
这样就把
hello
的值改成了
kitty
,并且把过期时间延长了半个小时。 虽然看起来好像修改了
document.cookie
整个值,但实际上并不会影响到其他cookie。我们再次访问
document.cookie
将得到
hello=kitty; PHPSESSID=web5~toqn2au0krlholat9c2c4aast3
这样的结果。 要删除一个cookie,只要把过期时间设置在当前时间之前就行了。 因为
HTTP
设计是无状态的,所以就有了
cookie
来充当
HTTP
的状态。有了
cookie
,服务端就知道,你是谁了。
php
有
setcookie
函数,还有
$_COOKIE
来获取
cookie
。
cookie
是通过头部字段
Cookies
和
Set-Cookie
来传递的。所以
php
也可以使用设置返回头和读取返回头来设置
cookie
和读取
cookie
。

相关文章