PHP 之Section与Cookie使用总结


Posted in PHP onSeptember 14, 2012

SESSION与COOKIE区别:

Session 将信息保存在服务器上.服务器在接受到唯一的SESSION_ID后,根据这个ID获取相关数据,然后将信息传递到客户端(浏览器).

Cookie 是将所有信息以文本的形式存在本地文件,并由客户端(浏览器)进行管理与维护.
因为Session 数据存储在server端,所以远程client无法对数据进行修改;而Cookie存储在client本地,容易被获取和篡改.所以Session安全性较高.

SESSION 介绍:

PHP5 后session被设置为全局变量,可以通过 $_SESSION[session_id] 来获取.当页面启动SESSION会话,会在服务器中生成一个带唯一id的SESSION,这个SESSION在生命周期结束前一直有效.当关闭网页或结束生命周期后,session会在服务器中自动注销.

创建一个session 会话需要经过一下4个步骤:

a)启动会话..

方法有2种: bool session_star(); boolean session_register(string name);

b)注册回话.

会话变量被启动后,全部保全在$_SESSION数组当中.通过数组$_SESSION创建一个会话变量很简单,只需要给该数组添加一个变量即可.

c)使用会话:

一般操作:判断对应session_id的SESSION是否存在.不存在创建一个,存在 则通过 $_SESSION[session_id] 使用.

d)删除会话.
unset($_SESSION[session_id]);//删除单个.

  unset([$_SESSION]);//删除整个,将禁止整个会话功能,切无法恢复.

 $__SESSION=array();//删除整个,可恢复.

 session_destroy();//结束当前会话..

SESSION的生命周期:

1.控制session 生命周期的方法:

 一. 前提条件:客户端支持COOKIE!

方法:

a>通过Session来完成.

void session_set_cookie_params(int lifetime[,string path][,string domain][,bool secure]);

bool setcookie(string name [,string value] [,int expire] [,string path] [,sting domain] [,secure]);

b>通过Cookie 来完成.
二. 前提条件:客户端不支持COOKIE!

 一旦客户端不支持cookie,SESSION就不能在页面间传递,解决办法:

a>.在登陆前提示用户打开cookie.

 b>.表单POST/GET方式,来传递SESSION_ID.

 c>.设置php.ini文件中的session.use_trans_sid=1 或编译时打开-enable-trans-sid;

 d>.通过文件或数据库方式传递SESSION_ID;

服务器上对SESSION性能优化:

在服务器中,如果将所有用户的session都保存到临时目录中,会降低服务器的安全性与效率.

解决方法:将SESSION存储到服务器上的数据库或者临时文件中.

临时文件:

string session_save_path(string path);

数据库:

session 存储在临时文件时,当网站浏览量很大的时候,将会导致查询Session的效率很低,推荐数据库存储形式.

bool session_set_save_handler(string open,string close,string read,string write,string destroy,string gc);//将session_id 存储与数据库中的函数.

SESSION 缓存:

缓存即将页面中的某些信息存储到客户端指定的文件夹中,且可以设置一定的有效时间.(已经经过第一次访问,且存储)在这个有效时间内,当再次访问页面,则可直接从缓存中读取内容,从而提高页面浏览效率.

string session_cache_limiter(string cache_limiter); //缓存函数.

int session_cache_expire([int new cache_expire]); //有效时间.

COOKIE介绍:

cookie 是一种远程客户端存储数据和跟踪识别用户的机制.是服务器临时存放数据在本地用户的一个文本文件.文本文件格式:"用户名@网站地址[数字].txt"

COOKIE 常见功能:

a)记录访客的某些信息. b)在页面间传递变量; c)将页面内容存储到cookie中提高下次访问速度.
慎用COOKIE:

a)不是所有的浏览器都支持cookie.

b)数据是以明文的方式保存在本地,不适合敏感的信息,未加密的信息.

c)不同类型浏览器对cookie 文件有大小,个数限制:比如最多只能存300个cookie 文件,每个大小不超过4KB,每个域名最多支持20个cookie文件.如果超过显示,会随机删除.
创建COOKIE:

bool setcookie(string name [,string value] [,int expire] [,string path] [,sting domain] [,secure]);
读取COOKIE:

$_COOKIE[];
删除COOKIE:

a). setcookie("id", "",time()-1);//值为空,有效时间小于当前时间.0为直接删除COOKIE.

b).手动删除.在客户端找到临时存放cookie的文件.

setcookie()函数后,要执行刷新,cookie才能取得数据:

个人理解是因为session 跟cookie都是在client 跟server之间传输,在页面显示前,我们就必须获取到相应的数据.所以一般是在获取 http:// 或https://时必须带上session 或cookie..当在执行setcookie()时,仅仅在本地存储了cookie 但是地址上并没有带上cookie..因而需要刷新,让服务器给地址协议带上cookie发送个客户端,这样才能取得到值..

正是以上session_star(),setcookie()前,html页面不能有输出...所以说cookie 或者session认第一,就没人敢认第二.

PHP 相关文章推荐
用PHP实现多级树型菜单
Oct 09 PHP
php empty函数判断mysql表单是否为空
Apr 12 PHP
简单的php写入数据库类代码分享
Jul 26 PHP
php在程序中将网页生成word文档并提供下载的代码
Oct 09 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
Dec 07 PHP
php curl获取网页内容(IPV6下超时)的解决办法
Jul 16 PHP
yii框架表单模型使用及以数组形式提交表单数据示例
Apr 30 PHP
destoon常用的安全设置概述
Jun 21 PHP
php通过ksort()函数给关联数组按照键排序的方法
Mar 18 PHP
thinkphp框架下404页面设置 仅三步
May 14 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
Aug 08 PHP
php实现xml转换数组的方法示例
Feb 03 PHP
PHP 文件系统详解
Sep 13 #PHP
PHP 面向对象详解
Sep 13 #PHP
关于访问控制的一首PHP面试题(对属性或方法的访问控制)
Sep 13 #PHP
PHP基础陷阱题(变量赋值)
Sep 12 #PHP
php中判断文件存在是用file_exists还是is_file的整理
Sep 12 #PHP
PHP中file_exists与is_file,is_dir的区别介绍
Sep 12 #PHP
PHP中几种常见的超时处理全面总结
Sep 11 #PHP
You might like
php使用qr生成二维码的示例分享
2014/01/20 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
解决PHP程序运行时:Fatal error: Maximum execution time of 30 seconds exceeded in的错误提示
2016/11/25 PHP
PHP的mysqli_thread_id()函数讲解
2019/01/24 PHP
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
返回对象在当前级别中是第几个元素的实现代码
2011/01/20 Javascript
jQuery写的日历(包括日历的样式及功能)
2013/04/23 Javascript
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
jQuery多项选项卡的实现思路附样式及代码
2014/06/03 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
Angularjs 设置全局变量的方法总结
2016/10/20 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
vue实现抖音时间转盘
2019/09/08 Javascript
javascript简单实现深浅拷贝过程详解
2019/10/08 Javascript
JavaScript事件概念详解(区分静态注册和动态注册)
2021/02/05 Javascript
[13:39]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第一场
2014/05/26 DOTA
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
Python shutil模块用法实例分析
2019/10/02 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
Numpy一维线性插值函数的用法
2020/04/22 Python
基于Html5实现的react拖拽排序组件示例
2018/08/13 HTML / CSS
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
Sperry澳大利亚官网:源自美国帆船鞋创始品牌
2019/07/29 全球购物
可口可乐唇膏:Lip Smackers
2019/08/27 全球购物
大唐面试试题(CPU,UNIX等等)
2012/01/11 面试题
学前教育毕业生自荐信
2013/10/29 职场文书
获奖的大学生创业计划书
2014/01/05 职场文书
小学开学典礼主持词
2014/03/19 职场文书
药品业务员岗位职责
2014/04/17 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
怎样写离婚协议书
2015/01/26 职场文书
学校运动会加油词
2015/07/18 职场文书
获奖感言怎么写
2015/07/31 职场文书
英国数字版游戏销量周榜公布 《小缇娜的奇幻之地》登顶
2022/04/03 其他游戏