php开发之session

对比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的路径。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。