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 出现乱码和Sessions验证问题的解决方法!
Dec 06 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
PHP字符串的编码问题的详细介绍
Apr 27 PHP
php获取301跳转URL简单实例
Dec 16 PHP
destoon二次开发常用数据库操作
Jun 21 PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
Mar 05 PHP
php获取Google机器人访问足迹的方法
Apr 15 PHP
PHP连接数据库实现注册页面的增删改查操作
Mar 27 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
php获取POST数据的三种方法实例详解
Dec 20 PHP
php curl 模拟登录并获取数据实例详解
Dec 22 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
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
php递归删除目录与文件的方法
2015/01/30 PHP
浅析PHP中Session可能会引起并发问题
2015/07/23 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
javascript Keycode对照表
2009/10/24 Javascript
使用JavaScript库还是自己写代码?
2010/01/28 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
jQuery 3.0 的 setter和getter 模式详解
2016/07/11 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
深入理解在JS中通过四种设置事件处理程序的方法
2017/03/02 Javascript
JS实现两周内自动登录功能
2017/03/23 Javascript
JavaScript定时器setTimeout()和setInterval()详解
2017/08/18 Javascript
ES6解构赋值的功能与用途实例分析
2017/10/31 Javascript
使用python解析xml成对应的html示例分享
2014/04/02 Python
python的dict,set,list,tuple应用详解
2014/07/24 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
Python箱型图处理离群点的例子
2019/12/09 Python
python3格式化字符串 f-string的高级用法(推荐)
2020/03/04 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
Spartoo葡萄牙鞋类网站:线上销售鞋履与时尚配饰
2017/01/11 全球购物
Lowe’s加拿大:家居装修、翻新和五金店
2019/12/06 全球购物
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
为什么要使用servlet
2016/01/17 面试题
回门宴新郎答谢词
2014/01/12 职场文书
学员自我鉴定
2014/03/19 职场文书
纪念九一八事变演讲稿:牢记历史,捍卫主权
2014/09/14 职场文书
主持人大赛开场白
2015/05/29 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
毕业生自荐求职信书写的技巧
2019/08/26 职场文书
OpenCV-Python模板匹配人眼的实例
2021/06/08 Python