php中cookie存的是什么,PHP中Cookie存在的作用和用法

1、使用$_COOKIE读取Cookie

使用Session只能让网站记住当前正在访问的用户,但有时网站还需要记住曾经访问过的用户,以便在用户下次访问时.提供个性化的服务。这就需要用到Cookie技术。Cookie能为网站和用户带来很多好处.如它可以记录特定用户访问网站的次数、最后一次访问时间、用户在网站内的浏览路径,以及使登录成功的用户下次自动登录等。

也有一些Cookie的高级应用.如在购物网站浏览商品页面时,该网站程序可以将用户的浏览历史记录到Cookie中,当用户下次再访问时,网站根据用户过去的浏览情况为用户推荐感兴趣的内容。

Cookie实际上是一个很小的文本文件.网站通过向用户硬盘中写入一个Cookie文件来标识用户。当用户下次再访问该网站时,浏览器会将Cookie信息发送给网站服务器,服务器通过读取以前写入的Cookie文件中的信息,就能识别该用户。

Cookie有两种形式:会话Cookie和永久Cookie。前者是临时性的,只在浏览器打开时存在(存储在用户机器的内存中),主要用来实现Session技术;后者则永久地存放在用户的硬盘上并在有效期内一直可用。Cookie文件默认保存在“C:Documents and Settings登录用户名Cookies”文件夹中。

在PHP中,利用setcookie()函数可以创建和修改Cookie,以及设置Cookie的有效期;而使用$_COOKIE[]数组可以读取Cookie变量的值。

1.创建和修改Cookie

创建Cookie最简单的方法是使用setcookie( )函数。语法如下:

setcookie(name, value, expire, path, domain, secure)

其中,name用来定义一个cookie的变量名,value用来设置cookie变量值,expire用来定义cookie的有效期,而path、domain、 secure分别用来规定cookie的有效目录、有效域名和是否采用http、来传输cookie.这3个参数不常用。除了name和value是必需的参数外.其他参数都是可选的。

例如设置了4个Cookie变量,变量名分别为“tmpcookie"、“userName"、“age"和“sex"。其中“tmpcookie”没有设置过期时间,因此它仅仅是个会话Cookie,会话Cookie并没有保存到文本文件中,关闭浏览器后,tmpcookie将立即失效。而其他3个Cookie均设置了过期时间,因此是永久Cookie.它们将在关闭浏览器一分钟后失效。

永久Cookie变量均保存在了Cookie文件中,而会话Cookie没有保存。Cookie变量名和变量值中如果含有中文或特殊字符,会自动经urlencode函数处理转换成GB2312编码形式。

如果要修改Cookie变量的值,可以用setcookie函数给变量重新赋值。

但修改Cookie时设置过期时间的参数不能省略.否则该Cookie会被修改成临时Cookie。

提示:

①在使用setcookie函数前,不要有任何HTML内容输出到浏览器,因为Cookie也是作为HTTP协议头的一部分。否则setcookie()创建Cookie将失败。

②cookie变量的值总是字符串数据类型。

③在PHP中,还能使用header函数设置cookie。

2.读取Cookie

在客户端写入Cookie后,当用户再次向网站发送HTTP请求时,就会将Cookie信息放在HTTP请求头中一起发送给服务器,服务器会自动获取HTTP请求头中的Cookie信息,并将这些信息保存到$_COOKIE数组中。因此通过$_COOKIE可以读取所有从客户端传过来的Cookie信息。

说明:由于Cookie存放在了硬盘中,因此即使重新启动计算机后,再打开浏览器访问.php也能读取到Cookie(只要Cookie没过期)。

3.Cookie数组

实际上,使用setcookie()函数还可以创建Cookie数组。

创建Cookie数组时,对于数组元素的下标可以是整数或字符串,但下标两边不要用引号(如user[id]不能写成user ["id"]),因为PHP会自动给setcoo kie中的数组下标加引号的。

要读取Cookie数组,可使用循环语句遍历数组,也可单独输出数组元素。

4.删除Cookie

有时用户可能希望网站不再记住自己过去访问的信息,这时可以删除Cookie,删除Cookie有两种方法:一是将Cookie的变量值设置为空,并且不设置有效期(不设置有效期将删除Cookie文件中的Cookie变量);二是将Cookie的有效期设置为过去的某个时间。不管使用哪种方法,浏览器接收到这样的Cookie响应头信息后,将自动删除用户硬盘中的Cookie文件和内存中的Cookie信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/555475.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis使用单线程却快到飞起的原因

文章目录Redis为什么用单线程?多线程的开销Redis使用单线程为什么还这么快?网络与IO操作的潜在阻塞点基于多路复用的高性能IO模型回调机制Redis的性能瓶颈点其他Redis相关的有趣问题1. 为什么要用Redis,直接访问内存不好吗?2. 数据…

线程池参数到底要怎么配?

文章目录1 线程池快速回顾2 现有设置参数的方法及不足3 如何设置核心线程数(corePoolSize)4 如何设置最大线程数(maxPoolSize)5 如何改变等待队列长度想必大家对Java里面线程池( 类)一定不陌生吧&#xff0…

oracle嵌套三层循环语句,在存储过程中执行3种oracle循环语句

http://www.cnblogs.com/coprince/p/3443219.htmlcreate or replace procedure pr_zhaozhenlong_loop/*名称:在存储过程中执行3种循环语句功能:利用循环给表中插入数据调用:begin-- Call the procedurepr_zhaozhenlong_strsql;end;创建人&…

彻底搞懂Cookie、Session、JWT和Token

文章目录引入:http是一个无状态协议?怎么解决呢?一、Cookie和Session1.1 cookie 注意事项:1.2 cookie 重要的属性1.3 session 注意事项:1.4 Cookie 和 Session 的区别:二、token(令牌&#xff0…

oracle数据库导入txt,oracle数据库导入TXT文件方法介绍

客户端连接数据库导入1. 安装有oracle客户端,配好监听。2. 以oracle数据库app用户的表user_svc_info为例CREATE TABLE USER_SVC_INFO(PHONE varchar2(20) NOT NULL,SVC_ID varchar2(32) NOT NULL,P_USERNAME varchar2(100) NULL,USER_STATUS number NOT NULL ,P_ALI…

你真的知道什么是多线程吗?为什么要学习多线程?

文章目录1、多线程的含义2、原理3、优势4、线程与进程的区别5、线程与多线程的区别6、线程调度的分类7、同步与异步8、并发与并行9、为什么要使用线程池10、线程池的好处11、线程池的分类12、意义1、多线程的含义 多线程(multithreading),是…

oracle 表关联索引优化,Oracle执行计划调优-超级大表关联超级小表的性能调优

今日客户现场出现一个查询SQL异常慢的情况。用时分钟级别。SELECT *FROM (SELECT a1.*, rownum rnFROM (SELECT openOrder2017.exchId,............openOrder2017.internalbizmark,customer.typeIdListFROM openOrder2017, customerWHERE openOrder2017.custId customer.custI…

Common Sort - 排序 - Java

文章目录排序概念稳定性(重要)应用 - 举例1.、各大商城的价格从低到高等2、中国大学排名常见的排序算法(8 种)- 总览直接插入排序模拟实现 - 插入排序稳定性分析结论希尔排序思考原理科学家的分组思维模拟实现 - 希尔排序总结选择…

linux的运行级别如何更改成6,把Linux运行级别设置为6后如何解决的经验分享

我们知道,Linux有7个运行级别,而运行级别设置为6后,会导致Linux系统刚启动完成就立刻重启,重启后又会立刻重启,如此反复,导致系统不能正常运行。本文笔者和大家分享一下误把Linux运行级别设置为6后如何解决…

flume linux 命令,Linux环境Flume安装配置及使用

# Flume监听本地Linux-hive日志文件采集到HDFS——配置文件# Name the components on this agent agent别名设置a1.sources r1a1.sinks k1a1.channels c1# Describe/configure the source 设置数据源监听本地文件配置# exec 执行一个命令的方式去查看文件 tail -F 实时查看a…

Redis五种数据结构应用场景

文章目录前言二、字符串String2.1、常用操作2.2、应用场景2.2.1、单值缓存(最常用)2.2.2、对象缓存2.2.3、分布式锁2.2.4、计数器三、哈希hash3.1、常用操作3.2、应用场景3.2.1、对象缓存3.2.2、 电商购物车四、列表list4.1、常用操作4.2、应用场景4.2.1…

linux能记录日志的终端,Linux上的日志系统

Linux上的日志系统1、syslog2、syslog-ng 下一代升级版日志系统红帽5使用syslog 6使用syslog-ngsyslog 服务syslogd : 系统,非内核产生的信息klogd : 内核,专门负责记录内核的日志信息系统启动时所输出的信息【到init启动之前的所有信息】:…

IntelliJ IDEA中的神仙插件

文章目录1. Alibaba Java Coding Guidelines2.GsonFormat3.A8Translation4.Maven Helper5.Free Mybatis plugin6.Grep Console7.Lombok8.Nyan progress bar9.FindBugs-IDEA10.Key Promoter X11.JavaDoc12.ignore13.RainbowBrackets14.Activate-power-mode15.CodeGlance16.Gener…

linux 远程拒绝服务,Linux Kernel SCTP远程拒绝服务漏洞

发布日期:2011-08-30更新日期:2011-08-30受影响系统:Linux kernel 2.6.x描述:--------------------------------------------------------------------------------BUGTRAQ ID: 49373CVE ID: CVE-2011-2482Linux Kernel是Linux操…

linux 常用命令行 大全

Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因&#xff0c…

linux运行程序+后注销,linux – 如果我启动后台进程然后注销,它会继续运行吗?...

在与同事长时间讨论之后问这个问题,我真的想在这里澄清一下.我通过添加“&”来启动后台进程到命令行或用CTRL-Z停止它并在后台用“bg”恢复它.然后我退出了.怎么了?我们很确定它应该被一个SIGHUP杀死,但这并没有发生;再次登录时,进程很愉快,并且pstree显示它被i…

SpringBoot使用Websocket

webSocket是HTML5的一种新协议,它实现了服务端与客户端的全双工通信,建立在传输层,tcp协议之上,即浏览器与服务端需要先建立tcp协议,再发送webSocket连接建立请求。webSocket的连接:客户端发送请求信息&…

linux误删文件咋恢复,恢复Linux误删文件

恢复Linux误删文件目录方法一方法二不小心执行了rm删除了某些文件,是有点倒霉。不过我一般都会设置alias rmrm -i在删除的时候需要输入Y才能真正删除,当然此时用rm -f那也会直接删除了。因此找了两种方案恢复误删的文件。方法一适用系统内置debugfs&…

Springboot整合Websocket遇到的坑_websocket session不支持序列化,无法存储至redis_Websocket相关问题总结(Session共享,用户多端登录等)

Springboot整合Websocket遇到的坑 一、使用Springboot内嵌的tomcat启动websocket 1.添加ServerEndpointExporter配置bean Configuration public class WebSocketConfig {/*** 服务器节点** 如果使用独立的servlet容器,而不是直接使用springboot的内置容器&#x…

linux 中文意思,linux 中 ~/. 是什么意思

~代表你的/home/用户明目录假设你的用户名是x,那么~/就是/home/x/.是代表此目录本身,但是一般可以不写所以cd ~/. 和cd ~ 和cd ~/效果是一样的但是.后面有东西又是另外一个问题,点在文件名头部,代表一个隐藏文件~/.local是你的主目…