浅谈PHP Cookie处理函数


Posted in PHP onJune 10, 2016

(o???)o☆[BINGO!]

ok,我们先看看cookie是什么东东?

cookie是服务器留在客户端的用于识别用户或者存储一些数据的小文件(注意,session存储在服务器端,这是两者的区别之一)。我们平时登录某门户时,会有选项“是否保存登录”或者“下次自动登录”,当我们勾选了之后,服务器就会在我们的浏览器创建cookie文件来保存我们的信息。每当计算机通过浏览器请求页面时,它会同时发送cookie。通过PHP,可以创建并取回cookie的值。cookie在web中是很重要的角色,早在网景浏览器的时候就产生了cookie。cookie经常被用于用户验证系统。

1.创建cookie

函数setcookie()可以在PHP中生成cookie。由于cookie是HTTP头标部分的内容,因此必须在输出任何数据之前调用setcookie(),这个限制和header()类似,定义:

bool setcookie( string name[,string value][,int expire][,string path][,string domain][,bool secure][,bool httponly])

好多参数啊!Σ(⊙?⊙"a 不急,让我们看看各个参数的作用:

name : 必选,表示cookie的名字。

value : 可选,表示cookie值,存储在客户端,当为空时,表示撤销客户端中该cookie的资料(这样可以删除cookie)。

expire : 可选,表示cookie的有效截止时间,也就是过期时间,如果没有指定或者指定为0,那么通常是在关闭浏览器时失效。

path : 可选,cookie有效路径。

domain : 可选,cookie有效域名。

secure : 表示在HTTPS的安全传输时才有效。

实例(建立一个名字为test,值为China的cookie):

<?php
setcookie("test",China");
?>

使用setcookie()给的值只能是数字或者字符串,不能是其他的复杂结构。

2.获取cookie

创建cookie后,就可以使用预定义变量$_COOKIE来获取cookie。不过,只能在其他页面获取cookie,因为在php中,被设置的cookie不会在本页面生效,除非该页面被刷新

实例:

<?php
 setcookie("test","China");
 echo "cookie is ".$_COOKIE["test"];
 ?>

这里之所以要刷新页面,是因为cookie的值不会在调用setcookie()之后立即存储在_COOKIE中。

3.cookie的有效期

cookie有生命周期,也就是cookie存在的有效时间。可以设置第三个参数来设置有效时间。

实例(设置cookie有效时间的几种方式):

setcookie("cookie_one","A",time()+60*60);    //cookie在一小时后失效
setcookie("cookie_two","B",time()+60*60*24);  //cookie在一天后失效
setcookie("cookie_three","C",mktime(23,53,19,10,09,2020));  //cookie在2020年10月9日23时53分19秒失效
setcookie("cookie_four","D");   //关闭浏览器后cookie失效

4.cookie的有效路径

cookie中的路径用来控制设置的cookie在哪个路径下有效,默认为'/',在所有路径下都有效,也就是在整个服务器域名下都有效,当设定了其他路径之后,则只在设定的路径以及子路径下有效,例如:

setcookie('test', time(), 0, '/path');

上面的设置会使test在/path以及子路径/path/abc下都有效,但是在根目录下就读取不到test的cookie值。

一般情况下,大多是使用所有路径的,只有在极少数有特殊需求的时候,会设置路径,这种情况下只在指定的路径中才会传递cookie值,可以节省数据的传输,增强安全性以及提高性能。

5.删除cookie

删除cookie比较简单,也是通过setcookie()来实现的(不要使用unset()!!!)下面的代码就是个简单例子:

setcookie("test","");

通过将第二个参数设为空来达到删除cookie的目的。如果设置cookie时,为cookie提供了特定的值,那么在删除cookie时,仍然需要提供这些参数,以便PHP可以正确地删除cookie。

以上这篇浅谈PHP Cookie处理函数就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
cmd下运行php脚本
Nov 25 PHP
php中去除所有js,html,css代码
Oct 12 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
Jun 24 PHP
php selectradio和checkbox默认选择的实现方法详解
Jun 29 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 PHP
PHP文件上传处理案例分析
Oct 15 PHP
php中this关键字用法分析
Dec 07 PHP
thinkphp自定义权限管理之名称判断方法
Apr 01 PHP
Yii输入正确验证码却验证失败的解决方法
Jun 06 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
Jun 05 PHP
laravel 修改.htaccess文件 重定向public的解决方法
Oct 12 PHP
php单例模式的简单实现方法
Jun 10 #PHP
PHP操作mysql数据库分表的方法
Jun 09 #PHP
浅谈PHP链表数据结构(单链表)
Jun 08 #PHP
PHP Yaf框架的简单安装使用教程(推荐)
Jun 08 #PHP
WordPress分页伪静态加html后缀
Jun 08 #PHP
php 流程控制switch的简单实例
Jun 07 #PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 #PHP
You might like
PHP面向对象程序设计之类常量用法实例
2014/08/20 PHP
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
简介JavaScript中strike()方法的使用
2015/06/08 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
Angularjs在360兼容模式下取数据缓存问题的解决办法
2017/06/22 Javascript
浅谈JS对html标签的属性的干预以及对CSS样式表属性的干预
2017/06/25 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
Vue axios全局拦截 get请求、post请求、配置请求的实例代码
2018/11/28 Javascript
vue cli 3.0 搭建项目的图文教程
2019/05/17 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
JavaScript canvas基于数组生成柱状图代码实例
2020/03/06 Javascript
微信小程序连续签到7天积分获得功能的示例代码
2020/08/20 Javascript
[06:38]DOTA2怒掀电竞风暴 2013Chinajoy
2013/07/27 DOTA
[02:57]DOTA2英雄基础教程 风行者
2014/01/16 DOTA
python实现一次创建多级目录的方法
2015/05/15 Python
教大家使用Python SqlAlchemy
2016/02/12 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
高级Java程序员面试要点
2013/08/02 面试题
保险专业大专生求职信
2013/10/26 职场文书
企业项目策划书
2014/01/11 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
求职意向书范文
2014/04/01 职场文书
群众路线教师自我剖析材料
2014/09/29 职场文书
学生个人评语大全
2015/01/04 职场文书
合同补充协议书
2016/03/24 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js
Python Numpy库的超详细教程
2022/04/06 Python
Win11安全功能升级:内置防网络钓鱼功能
2022/04/08 数码科技
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL