PHP5中Cookie与 Session使用详解


Posted in PHP onApril 30, 2013

1、Cookie和Session简介与区别

在非常多时候,我们需要跟踪浏览者在整个网站的活动,对他们身份进行自动或半自动的识别(也就是平时常说的网站登陆之类的功能),这时候,我们常采用Cookie与 Session来跟踪和判断。

区别

Session信息是存放在server端,但session id是存放在client cookie的,当然php的session存放方法是多样化的,这样就算禁用cookie一样可以跟踪

Cookie是完全保持在客户端的如:IE firefox 当客户端禁止cookie时将不能再使用

2、Cookie的配置与应用

Setcookie(string name, string value, int expire,string path, string domain, int secure);
其中name是cookie变量名称标识,你在php中将能象使用普通变量名相同来用他引用cookie变量。value是cookie变量的初始值,expire 表示该cookie变量的有效时间;path 为该cookie变量的相关路径;domain 表示cookie变量的网站;secure 则需在 https 的安全传输时才有效。

SetCookie("Cookie", "cookievalue",time()+3600, "/forum", ".php100.com", 1);
接收和处理Cookie
PHP对Cookie的接收和处理的支持非常好,是完全自动的,跟FORM变量的原则一样,特别简单。
比如设置一个名为 MyCookier的Cookie,PHP会自动从WEB服务器接收的HTTP头里把它分析出来,并形成一个与普通变量一样的变量,名为$ myCookie,这个变量的值就是Cookie的值。数组同样适用。另外一个办法是引用PHP的全局变量$HTTP_COOKIE_VARS数组。
分别举例如下:(假设这些都在以前的页面里设置过了,并且仍然有效)

echo $MyCookie;
echo $CookieArray[0];
echo $_COOKIE["MyCookie"];
echo $HTTP_COOKIE_VARS["MyCookie"];
删除Cookie

要删除一个已经存在的Cookie,有两个办法:

1、SetCookie("Cookie", "");
2、SetCookie("Cookie", "value" , time()-1 / time() );

使用Cookie的限制

1、必须在HTML文件的内容输出之前设置;
2、不同的浏览器对Cookie的处理不一致,且有时会出现错误的结果。
3、限制是在客户端的。一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB,每个WEB站点能设置的Cookie总数不能超过20个。

3、Session的配置与应用

session_start();                    //初始化session.需在文件头部
$_SESSION[name]=value;  //配置Seeeion
echo $_SESSION[name];    //使用session
isset($_SESSION[name]);   // 判断
unset($_SESSION[name]);   //删除
session_destroy();             //消耗所有session

注意:session_register(),session_unregister,session_is_registered在php5下不再使用

//cookies用法实例

if($_GET['out'])
{   //用于注销cookies
    setcookie('id',"");
    setcookie('pass',"");
    echo "<script>location.href='login.php'</script>"; //因为cookies不是及时生效的,只有你再次刷新时才生效,所以,注销后让页面自动刷新。
}
if($_POST['name']&&$_POST['password']) //如果变量用户名和密码存在时,在下面设置cookies
{   //用于设置cookies
    setcookie('id',$_POST['name'],time()+3600);
    setcookie('pass',$_POST['password'],time()+3600);
    echo "<script>location.href='login.php'</script>"; //让cookies及时生效
}
if($_COOKIE['id']&&$_COOKIE['pass'])
{   //cookies设置成功后,用于显示cookies
    echo "登录成功!<br />用户名:".$_COOKIE['id']."<br/>密码:".$_COOKIE['pass'];
    echo "<br />";
    echo "<a href='login.php?out=out'>注销cookies</a>";  //双引号内,如果再有引号,需要用单引号。
}
?>
<form action="" method="post">
用户ID:
<input type="text" name="name" /><br/><br/>
密码:
<input type="password" name="password" /><br/><br />
<input type="submit" name="submit">
</form>

//session用法实例

<?php
//session用法实例
session_start();//启动session,必须放在第一句,否则会出错。
if($_GET['out'])
{
      
    unset($_SESSION['id']);
    unset($_SESSION['pass']);
}
if($_POST['name']&&$_POST['password'])
{   
   //用于设置session
    $_SESSION['id']=$_POST['name'];
    $_SESSION['pass']=$_POST['password'];
}
if($_SESSION['id']&&$_SESSION['pass'])
{
    echo "登录成功!<br/>用户ID:".$_SESSION['id']."<br />用户密码:".$_SESSION['pass'];
    echo "<br />";
    echo "<a href='login.php?out=out'>注销session</a>";
}

?>
<form action="login.php"  method="post">
用户ID:
<input type="text" name="name" /><br/><br/>
密码:
<input type="password" name="password" /><br/><br />
<input type="submit" name="submit">
</form>
PHP 相关文章推荐
强烈推荐:php.ini中文版(1)
Oct 09 PHP
PHP中动态显示签名和ip原理
Mar 28 PHP
一道求$b相对于$a的相对路径的php代码
Aug 08 PHP
php 文件缓存函数
Oct 08 PHP
php 获取页面中指定内容的实现类
Jan 23 PHP
Laravel 5.0 发布 新版本特性详解
Feb 10 PHP
thinkphp3.2中Lite文件替换框架入口文件或应用入口文件的方法
May 21 PHP
php打乱数组二维数组多维数组的简单实例
Jun 17 PHP
PHP简单实现二维数组的矩阵转置操作示例
Nov 24 PHP
PHP异步进程助手async-helper
Feb 05 PHP
PHP+Redis开发的书签案例实战详解
Jul 09 PHP
laravel返回统一格式错误码问题
Nov 04 PHP
PHP容易忘记的知识点分享
Apr 30 #PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 #PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 #PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 #PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 #PHP
PHP基础学习之流程控制的实现分析
Apr 28 #PHP
PHP基础之运算符的使用方法
Apr 28 #PHP
You might like
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
2014/04/01 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
PHP延迟静态绑定使用方法实例解析
2020/09/05 PHP
数据结构之利用PHP实现二分搜索树
2020/10/25 PHP
js传值 判断
2006/10/26 Javascript
写的htc的数据表格
2007/01/20 Javascript
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
深入理解JavaScript系列(28):设计模式之工厂模式详解
2015/03/03 Javascript
node.js回调函数之阻塞调用与非阻塞调用
2015/11/13 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
快速掌握jQuery插件WebUploader文件上传
2016/11/07 Javascript
Angular.JS判断复选框checkbox是否选中并实时显示
2016/11/30 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
jquery表单验证实例仿Toast提示效果
2017/03/03 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
微信小程序canvas.drawImage完全显示图片问题的解决
2018/11/30 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
基于leaflet.js实现修改地图主题样式的流程分析
2020/05/15 Javascript
windows下Python安装、使用教程和Notepad++的使用教程
2019/10/06 Python
python分布式编程实现过程解析
2019/11/08 Python
python Matplotlib数据可视化(1):简单入门
2020/09/30 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
python推导式的使用方法实例
2021/02/28 Python
Herschel Supply Co.美国:背包、手提袋及配件
2020/11/24 全球购物
人力资源管理专业毕业生推荐信
2013/11/07 职场文书
客服工作职责
2013/12/11 职场文书
交通事故私了协议书
2014/04/16 职场文书
小学社团活动总结
2014/06/27 职场文书
2014教师党员自我评议(5篇)
2014/09/20 职场文书
2014年反腐倡廉工作总结
2014/12/05 职场文书
学校少先队工作总结
2015/08/12 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
创业计划书之书店
2019/09/10 职场文书