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遍历文件夹与子目录的函数代码
Sep 26 PHP
PHP中数组的三种排序方法分享
May 07 PHP
php设置编码格式的方法
Mar 05 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
Mar 06 PHP
如何利用PHP执行.SQL文件
Jul 05 PHP
初识PHP中的Swoole
Apr 05 PHP
php实现xml与json之间的相互转换功能实例
Jul 07 PHP
PHP目录操作实例总结
Sep 27 PHP
PHP随机获取未被微信屏蔽的域名(微信域名检测)
Mar 19 PHP
PHP实现转盘抽奖算法分享
Apr 15 PHP
PHP基于openssl实现的非对称加密操作示例
Jan 11 PHP
PHP的curl函数的用法总结
Feb 14 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 基本语法格式
2009/12/15 PHP
PHP采集相关教程之一 CURL函数库
2010/02/15 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
YII框架学习笔记之命名空间、操作响应与视图操作示例
2019/04/30 PHP
javascript实现仿银行密码输入框效果的代码
2007/12/13 Javascript
JavaScript为对象原型prototype添加属性的两种方式
2010/08/01 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
jQuery实现的网页竖向菜单效果代码
2015/08/26 Javascript
学习javascript面向对象 javascript实现继承的方式
2016/01/04 Javascript
基于jquery实现轮播特效
2016/04/22 Javascript
react-router实现跳转传值的方法示例
2017/05/27 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
Vue源码学习之关于对Array的数据侦听实现
2019/04/23 Javascript
webpack 处理CSS资源的实现
2019/09/27 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
python中的一些类型转换函数小结
2013/02/10 Python
如何实现删除numpy.array中的行或列
2018/05/08 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
pyqt5 禁止窗口最大化和禁止窗口拉伸的方法
2019/06/18 Python
pandas中DataFrame修改index、columns名的方法示例
2019/08/02 Python
基于python判断目录或者文件代码实例
2019/11/29 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
HTML5 解析规则分析
2009/08/14 HTML / CSS
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
消防先进事迹材料
2014/02/10 职场文书
11月升旗仪式讲话稿
2014/02/15 职场文书
环保建议书500字
2014/05/14 职场文书
青年文明号口号
2014/06/17 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
中学政教处工作总结
2015/08/13 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle