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和ACCESS写聊天室(三)
Oct 09 PHP
php include的妙用,实现路径加密
Jul 29 PHP
PHP 批量删除 sql语句
Jun 05 PHP
PHP抽象类 介绍
Jun 13 PHP
PHP 获取远程文件大小的3种解决方法
Jul 11 PHP
php防止SQL注入详解及防范
Nov 12 PHP
PHP随机生成随机个数的字母组合示例
Jan 14 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 PHP
PHP图像处理类库及演示分享
May 17 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
thinkPHP中验证码的简单实现方法
Dec 05 PHP
CentOS7.0下安装PHP5.6.30服务的教程详解
Sep 29 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
espresso double下 咖啡粉超细时 饼压力对咖啡的影响
2021/03/03 冲泡冲煮
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
yii2.0框架使用 beforeAction 防非法登陆的方法分析
2019/09/11 PHP
弹出层之1:JQuery.Boxy (一) 使用介绍
2011/10/06 Javascript
jquery 延迟执行实例介绍
2013/08/20 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
jQuery中noconflict函数的实现原理分解
2015/02/03 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
jquery实现图片列表鼠标移入微动
2016/12/01 Javascript
JS中的三个循环小结
2017/06/20 Javascript
微信小程序实现留言板
2018/10/31 Javascript
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
python 从远程服务器下载日志文件的程序
2013/02/10 Python
python两种遍历字典(dict)的方法比较
2014/05/29 Python
Python中的元类编程入门指引
2015/04/15 Python
Python输出PowerPoint(ppt)文件中全部文字信息的方法
2015/04/28 Python
Python函数式编程
2017/07/20 Python
关于python pyqt5安装失败问题的解决方法
2017/08/08 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
python函数与方法的区别总结
2019/06/23 Python
微软澳洲官方网站:Microsoft Australia
2017/01/10 全球购物
凯撒娱乐:Caesars Entertainment
2018/02/23 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
古汉语文学求职信范文
2014/03/16 职场文书
社区春季防火方案
2014/06/02 职场文书
投标授权委托书范文
2014/08/02 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
党员转正意见怎么写
2015/06/03 职场文书
追悼词范文大全
2015/06/23 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
JavaScript实现优先级队列
2021/12/06 Javascript
Golang并发工具Singleflight
2022/05/06 Golang