Home >Backend Development >PHP Tutorial >php开发之session

php开发之session

WBOY
WBOYOriginal
2016-06-23 13:37:37872browse

对比cookie,session文件中保存的数据是在php脚本中以变量的形式创建的,创建的session变量在生命周期(20分钟)中可以被跨页的请求所引用。另外session是存储在服务器端的会话,相对安全,并不像cookie有存储长度的限制。

session的工作原理
当启动一个session会话时,会生成一个随机的session_id,也就是session的文件名,此时session_id存储在服务器的内存中,当关闭页面时,此时id会自动注销,重新登录此页面,会重新生成一个随机的session_id。

session的功能
session在web技术中非常重要,由于网页是一种无状态的连接程序,因此无法得知用户的浏览状态。通过session则可以记录用户的有关信息,以供用户再次以此身份对web服务器提交要求时确认。例如:用户在浏览电子商务网站的时候,如果没有session,那么用户每次浏览就需要输入账户密码。
另外,session适用于存储信息量较少的情况。如果用户需要存储的信息量较少,而且对存储的内容不需要长期存储,那么使用session把信息存储到服务器端比较合适。

创建会话
创建会话的步骤如下:
启动会话→注册会话→使用会话→删除会话

1,启动会话
启动会话的方式有两种,一种是使用session_start()函数,另一种是使用session_register()函数为会话登录一个变量来隐含地启动会话。
通过sesssion_start()函数创建会话,语法格式如下:
bool session_start(void);

通过session_register()函数来创建会话
session_register()函数用来为会话登录一个变量来隐含的启动会话,但要求设置php.ini文件的选项将register_globals指令指定为on,然后重新启动apache服务。

注意
使用session_register()函数,不需要调用session_start()函数,但是php会在变量注册后,隐含的调用session_start()函数。

2,注册会话
会话变量被启动后,全部保存在数组 SESSION中。通过数组 _SESSION 创建一个会话变量很容易。只要直接给该数组添加一个元素即可。
具体实例代码如下:

<?php session_start(); //启动一个session $_SESSION["admin"] =null; //声明一个名为admin的变量并赋空值 ?>

3,使用会话
首先需要判断一个会话变量ID是否存在,如果不存在就创建一个,并且使其能够通过全局数组$_SESSION进行访问。如果已经存在,那么就将已经注册的会话变量载入以供用户使用。

例如:判断用户名的session是否为空,如果不为空的话,则将此会话变量赋给$jackValue。
实例代码如下:

<?php if(!empty($_SESSION['session_name'])) //判断存储用户会话变量是否为空 { $jackValue =$_SESSION['session_name'];//将会话变量赋给一个变量$jackValue } ?>

4,删除会话
(1) 删除单个会话
删除会话变量,同数组的操作一样,直接注销$_SESSION数组中的某个元素即可。
具体如下:

unset($_SESSION[‘session_name’]);

(2) 删除多个会话
如果要一次注销所有的会话变量,可以将一个空的数组赋给 $_SESSION。

代码如下:
SESSION= array();

(3) 结束当前会话
如果整个会话已经结束,应该首先注销所有的会话变量,然后使用session_destroy() 函数清除当前的会话,并清空会话中的所有资源,彻底销毁session。
代码如下:
session_destroy();

5,设置session的失效时间
1,客户端没有禁止cookie
(1) 使用session_set_cookie_params()设置session的失效时间,此函数是session结合Cookie设置失效时间,如果让Session在1分钟后失效,实例代码如下:

<?php $time =1*60; //设置session的失效时间 session_set_cookie_params($time); //是用函数 session_start(); $_SESSION["userName"]="jack"; ?>

注意:
session_set_cookie_params()必须在session_start()之前使用

(2) 使用setcookie()函数设置session的失效时间
示例代码如下:

<?php session_start(); $time =1*60; setcookie(session_name(),session_id(),time()+$time,"/"); $_SESSION["user"]="jack"; ?>

其中session_name 是session的名字,session_id 是session用来识别客户端的标识,session_id 是随机产生的唯一名称,所以session是相对安全的。失效时间和cookie的失效时间一样,最后一个参数是可选的是用来指明cookie的路径。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn