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 相关文章推荐
提升PHP执行速度全攻略(上)
Oct 09 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
php explode函数实例代码
Feb 27 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
Jun 18 PHP
win7下memCache的安装过程(具体操作步骤)
Jun 28 PHP
非常实用的PHP常用函数汇总
Dec 17 PHP
PHP简单获取多个checkbox值的方法
Jun 13 PHP
yii 2.0中表单小部件的使用方法示例
May 23 PHP
ThinkPHP5框架实现简单的批量查询功能示例
Jun 07 PHP
php实现小程序支付完整版
Oct 09 PHP
php回调函数处理数组操作示例
Apr 13 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生成静态页
2006/11/25 PHP
php的dl函数用法实例
2014/11/06 PHP
Javascript Object.extend
2010/05/18 Javascript
jquery load事件(callback/data)使用方法及注意事项
2013/02/06 Javascript
通过url查找a元素并点击
2014/04/09 Javascript
jQuery文件上传插件Uploadify使用指南
2014/06/05 Javascript
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
两种JS实现屏蔽鼠标右键的方法
2020/08/20 Javascript
实例剖析AngularJS框架中数据的双向绑定运用
2016/03/04 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
纯JS焦点图特效实例(可一个页面多用)
2016/12/07 Javascript
canvas实现图片根据滑块放大缩小效果
2017/02/24 Javascript
vue translate peoject实现在线翻译功能【新手必看】
2018/06/07 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
js实现圆形显示鼠标单击位置
2020/02/11 Javascript
Python写的一个定时重跑获取数据库数据
2016/12/28 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Python使用numpy实现BP神经网络
2018/03/10 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
python numpy 按行归一化的实例
2019/01/21 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python sklearn常用分类算法模型的调用
2019/10/16 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
CSS3实现可关闭的下拉手风琴菜单效果
2015/08/31 HTML / CSS
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
英国在线药房和在线药剂师:Chemist 4 U
2020/01/05 全球购物
应届生.NET方向面试题
2015/05/23 面试题
英语专业毕业个人求职自荐信
2013/09/21 职场文书
保护母亲河倡议书
2014/04/14 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
歌颂党的演讲稿
2014/09/10 职场文书
基督教追悼会答谢词
2015/09/29 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
golang 语言中错误处理机制
2021/08/30 Golang
基于Python和openCV实现图像的全景拼接详细步骤
2021/10/05 Python