>백엔드 개발 >PHP 튜토리얼 >php开发之session

php开发之session

WBOY
WBOY원래의
2016-06-23 13:37:37873검색

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.