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 相关文章推荐
mayfish 数据入库验证代码
Apr 30 PHP
PHP中文分词的简单实现代码分享
Jul 17 PHP
php数据库配置文件一般做法分享
Jul 07 PHP
用PHP实现 上一篇、下一篇的代码
Sep 29 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
Jun 12 PHP
PHP中exec与system用法区别分析
Sep 22 PHP
浅析php创建者模式
Nov 25 PHP
php实现mysql事务处理的方法
Dec 25 PHP
PHP工程师VIM配置分享
Dec 15 PHP
php构造函数与析构函数
Apr 23 PHP
既简单又安全的PHP验证码 附调用方法
Jun 02 PHP
PHP命名空间用法实例分析
Sep 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中strtotime函数使用方法详解
2011/11/27 PHP
thinkphp特殊标签用法概述
2014/11/24 PHP
Javascript操纵Cookie实现购物车程序
2006/11/23 Javascript
Extjs 几个方法的讨论
2010/01/28 Javascript
一个原生的用户等级的进度条
2010/07/03 Javascript
JS上传前预览图片实例
2013/03/25 Javascript
javascript验证身份证完全方法具体实现
2013/11/18 Javascript
ExtJS如何设置与获取radio控件的选取状态
2014/01/22 Javascript
Express的路由详解
2015/12/10 Javascript
详解jQuery停止动画——stop()方法的使用
2016/12/14 Javascript
js实现图片左右滚动效果
2017/02/27 Javascript
JavaScript中undefined和null的区别
2017/05/03 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
实例分析JS与Node.js中的事件循环
2017/12/12 Javascript
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
jQuery实现获取及设置CSS样式操作详解
2018/09/05 jQuery
js中Generator函数的深入讲解
2019/04/07 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
node.js 如何监视文件变化
2020/09/01 Javascript
原生js实现自定义难度的扫雷游戏
2021/01/22 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
Python计算一个给定时间点前一个月和后一个月第一天的方法
2018/05/29 Python
简单介绍django提供的加密算法
2019/12/18 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
CSS的pointer-events属性详细介绍(作用和注意事项)
2014/04/23 HTML / CSS
施华洛世奇英国官网:SWAROVSKI英国
2017/03/13 全球购物
大学学习计划书范文
2014/05/02 职场文书
安全责任书模板
2014/07/22 职场文书
2014矛盾纠纷排查调处工作总结
2014/12/09 职场文书
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python
Python访问Redis的详细操作
2021/06/26 Python
MyBatis XPathParser解析器使用范例详解
2022/07/15 Java/Android