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 相关文章推荐
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
PHP IF ELSE简化/三元一次式的使用
Aug 22 PHP
php遍历目录输出目录及其下的所有文件示例
Jan 27 PHP
ThinkPHP3.1的Widget新用法
Jun 19 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
PHP socket 模拟POST 请求实例代码
Jul 18 PHP
php解决DOM乱码的方法示例代码
Nov 20 PHP
php实现遍历文件夹的方法汇总
Mar 02 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
Feb 21 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
Feb 15 PHP
PHP开发API接口签名生成及验证操作示例
May 27 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
在线短消息收发的程序,不用数据库
2006/10/09 PHP
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
thinkphp的dump函数无输出实例代码
2016/11/15 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
js严格模式总结(分享)
2016/08/22 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
微信小程序选择图片控件
2021/01/19 Javascript
Pyinstaller将py打包成exe的实例
2018/03/31 Python
python实现黑客字幕雨效果
2018/06/21 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
canvas学习笔记之2d画布基础的实现
2019/02/21 HTML / CSS
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
诺思信科技(南京)有限公司.NET笔试题答案
2013/07/06 面试题
电脑租赁公司创业计划书
2014/01/08 职场文书
致共产党员倡议书
2014/04/16 职场文书
教研活动总结
2014/04/28 职场文书
分公司经理任命书
2014/06/05 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
Python实战之大鱼吃小鱼游戏的实现
2022/04/01 Python
python lambda 表达式形式分析
2022/04/03 Python
Python实现数据的序列化操作详解
2022/07/07 Python