PHP中的cookie


Posted in PHP onNovember 26, 2006

用PHP来设置并读取cookie是一件极其——我们敢说吗?——简单的事情。我们并不希望大力鼓吹cookie,不过它们的确既重要又实用。它们是解决某些问题时唯一适用的工具。

要创建并修改一个 cookie,可使用PHP函数setcookie()。取决于想对cookie进行控制的程度,及谁可以读取cookie的值,setcookie()最多可有六个参数。

设置cookie最简单的方式如下:

<?php
setcookie
('name', 'bret'
);
?>

然后,在用户退出前,接下来使用此浏览器查看的站点中每一个页面,都会有一个值为“bret”的变量$name,并且很容易通过PHP 对其进行访问。由于其生存期是一次用户连结,此类cookie被称为session cookie。

如果希望用户关闭其浏览器后,仍保留此cookie,则必须传递第三个参数给setcookie()函数,即设定此cookie的有效日期。由于PHP的背景完全源于Unix的思想,这个有效期限需要以从1970年1月1日起算的总秒数来代表。如果作为Unix程序员,这种算法对你而言可能是合情合理的。但如果来自Windows或Macintosh阵营,你可能只能摇头叹息,无法理解那些古怪的Unix家伙们。

不过无需害怕。PHP提供一个很好用的函数mktime()。你只要按顺序传送给mktime()你希望表示的小时,分钟,秒数,月份,日期,及年份,mktime()就会返回该日期自1970年1月1日的总秒数。因此,如果需要模拟 Y2K 问题:

<?php
$y2k
= mktime(0,0,0,1,1,2000
);
setcookie('name', 'bret', $y2k
);
?>

现在,你的cookie将会在2000年失效。

如果需要更新cookie以让其储存新值,只需要将其原值覆盖即可。因此,即使你已经在之前的页面中刚刚发送cookie,仍可以将你的名字改为“jeff”。

<?php
$y2k
= mktime(0,0,0,1,1,2000
);
setcookie('name', 'jeff', $y2k
);
?>

注意这样做并不会改变变量$name的值。在页面载入的时候,其值就已经确定。如果希望总是同时确定二者,可以编写如下代码:

<?php
$name
= 'jeff'
;
$y2k = mktime(0,0,0,1,1,2000
);
setcookie('name', $name, $y2k
);
?>

setcookie()的下两个参数可以控制读取cookie的程序的域及目录路径。默认设定为仅在与送出cookie的服务器相同且在同级或以下的目录结构内的页面才可以读取其值。这是出于网络安全方面的考虑。然而,如果你有一个帐号“www.domain.com”但同时也是“other.domain.com”,且帐户允许从~/myhome目录处理页面,则应更改setcookie()如下:

<?php
setcookie
('name', 'jeff', $y2k, '~/myhome', '.domain.com'
);
?>

我们还未使用过的setcookie()最后一个参数是设定cookie只传送给实行诸如SSL的安全连接的Web服务器。要使用此功能,将第六个值设置为1。

删除cookie非常简单,仅需简单地将cookie的名传送给setcookie(),PHP就会将其删除掉。

<?php
setcookie
('name'
);
?>

最后还有一个关于使用cookie的重要事项。由于cookie与HTTP的特定工作方式,你必须在你输出任何文本前,传送出所有的cookie。否则PHP会给出警告,并且cookie也不会被传送。因此,这样做是正确的方法:

<?php
setcookie
('name', 'jeff'
);
echo
"Hello Everyone!"
;
?>

以下是错误地:

<?php
$today
= mktime(12,0,0,6,25,1999
);
echo
'Here it is '.date('g:i:s a, F d, Y',$today
);
echo
''
;
echo
'In GMT it is '.gmdate('g:i:s a, F d, Y',$today
);
?>

PHP 相关文章推荐
将RTF格式的文件转成HTML并在网页中显示的代码
Oct 09 PHP
php数组的一些常见操作汇总
Jul 17 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
Jun 02 PHP
php禁止浏览器使用缓存页面的方法
Nov 07 PHP
PHP中substr()与explode()函数用法分析
Nov 24 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
PHP中功能强大却很少使用的函数实例小结
Nov 10 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
PHP7 mongoDB扩展使用的方法分享
May 02 PHP
使用laravel指定日志文件记录任意日志
Oct 17 PHP
PHP项目多语言配置平台实现过程解析
May 18 PHP
在PHP中使用与Perl兼容的正则表达式
Nov 26 #PHP
上传多个文件的PHP脚本
Nov 26 #PHP
使PHP自定义函数返回多个值
Nov 26 #PHP
PHP中for循环语句的几种变型
Nov 26 #PHP
用PHP中的 == 运算符进行字符串比较
Nov 26 #PHP
PHP图片上传类带图片显示
Nov 25 #PHP
整合了前面的PHP数据库连接类~~做成一个分页类!
Nov 25 #PHP
You might like
PHP取进制余数函数代码
2012/01/19 PHP
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
php curl获取网页内容(IPV6下超时)的解决办法
2013/07/16 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
PHP实现的文件浏览器功能简单示例
2019/09/12 PHP
php封装实现钉钉机器人报警接口的示例代码
2020/08/08 PHP
在js中使用&quot;with&quot;语句中跨frame的变量引用问题
2007/03/08 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
JavaScript 继承详解 第一篇
2009/08/30 Javascript
原生js结合html5制作简易的双色子游戏
2015/03/30 Javascript
Node.js 异步编程之 Callback介绍(一)
2015/03/30 Javascript
jscript读写二进制文件的方法
2015/04/22 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
Bootstrap每天必学之js插件
2015/11/30 Javascript
详解JS中Array对象扩展与String对象扩展
2016/01/07 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
微信小程序 scroll-view实现上拉加载与下拉刷新的实例
2017/01/21 Javascript
js实现音乐播放控制条
2017/09/09 Javascript
vue elementUI 表单校验功能之数组多层嵌套
2019/06/04 Javascript
详解Vue3中对VDOM的改进
2020/04/23 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
Python内置函数—vars的具体使用方法
2017/12/04 Python
python3爬取各类天气信息
2018/02/24 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
python下载库的步骤方法
2019/10/12 Python
基于python实现微信好友数据分析(简单)
2020/02/16 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
美国最便宜的旅游网站:CheapTickets
2017/07/09 全球购物
咖啡店的创业计划书,让你hold不住
2014/01/03 职场文书
中级会计职业生涯规划书
2014/03/01 职场文书
感恩教育月活动总结
2014/07/07 职场文书
树转促学习心得体会
2014/09/10 职场文书
Python面向对象之内置函数相关知识总结
2021/06/24 Python