PHP的会话处理函数session

PHP Session 变量

当运行一个应用程序时,你会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。

通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果需要永久储存信息,可以把数据存储在数据库中。

Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。

1. 开始会话

在把信息储存到session之前,首先要开启会话。php提供了session_start()函数来开始或者继续一个会话。定义:

1 bool session_start( void )

调用如下:

1 <?php session_start();?>
2 <html>
3 <body></body>
4 </html>

注意:

(1)session_start()函数必须位于<html>标签之前,也就是该函数必须在任何输出前调用,常常在写程序时不注意就多输入了一个空格或者回车,这时就会报错。应特别注意这一点。(我可是被坑过)

(2)无论有没有成功创建会话,session_start()函数都会返回TRUE,因此使用任何异常处理都不起作用。

(3)还可以启用配置指令session.auto_start,从而不必执行这个函数,但是这样的话,每个php页面执行时都会开始或者继续一个会话。

2.存储或者读取会话

存储和读取session变量的正确方法是使用php的$_SESSION变量。$_SESSION是php提供的全局参数,专门用来存储和读取session。(注意关联数组的键名和普通变量的命名规则一致)

存储会话时,可以对其直接赋值。

1 $_SESSION[‘season’] = ‘秋天‘;

以上设置了一个键名为“season”的会话元素,其值为“秋天”。当读取时,就像调用普通数组元素一样。

下面的两段代码显示怎么存储并读取一个会话元素。

这是session1.php文件:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: yuxiu
 5  * Date: 2016/5/26
 6  * Time: 14:11
 7  */
 8 if(isset($_POST[‘submit‘])){
 9     session_start();                                //开始建立一个会话
10     $_SESSION[‘season‘] = $_POST[‘season‘];       //存储会话数据
11     header("Location: session2.php");            //应特别注意header()里的格式问题
12
13
14 }
15 ?>
16 <b>存储会话</b>
17 <hr/>
18 选择需要设置的数据:
19 <form name="form1" method="post" action="" id="form1" >
20     <select name="season" id="season_select" >
21         <option value="春天">春天</option>
22         <option value="夏天">夏天</option>
23         <option value="秋天">秋天</option>
24         <option value="冬天">冬天</option>
25     </select>
26     <br/>
27     <br/>
28     <br/>
29    <input type="submit" name="submit" value="submit"/>
30 </form>

这是session2.php文件:

 1 <?php
 2 /**
 3  * Created by PhpStorm.
 4  * User: yuxiu
 5  * Date: 2016/5/26
 6  * Time: 14:13
 7  */
 8 session_start();    //建立或者继续一个会话
 9 $season = $_SESSION[‘season‘];       //读取会话数据
10
11 echo "<b>读取会话</b><br/><br/>";
12 switch ($season) {
13     case ‘春天‘;
14         echo ‘现在是绿意盎然的春天!‘;
15         break;
16     case ‘夏天‘;
17         echo ‘现在是热情四溢的夏天!‘;
18         break;
19     case ‘秋天‘;
20         echo ‘现在是丰收果实的秋天!‘;
21         break;
22     case ‘冬天‘;
23         echo ‘现在是白雪皑皑的冬天!‘;
24         break;
25     default ;
26         echo ‘对不起,会话中没有数据  或者  不存在该对话 !‘;
27 }
28 ?>

在session1.php中首先使用session_start()创建一个会话,然后对提交的季节数据使用数组赋值的方式存储,最后使用header()函数直接跳转到开始。在session2.php文件中,也同样需要session_start()函数继续一个会话并利用session数组调用会话信息。

3.销毁会话

当会话不再被使用的时候,就需要人为的销毁它,虽然php有自动销毁会话的功能,但这样会使程序的效率变低。可以使用unset()函数或者session_destroy()函数。

<?php
 unset($_SESSION[‘season‘]);
?>

或者:

<?php
 session_destroy();     //注意,使用这个函数将重置session数组,即失去所有的已经储存的session数据
?>
时间: 2024-11-02 16:21:39

PHP的会话处理函数session的相关文章

PHP处理会话函数session和cookie总结

本教程讲解PHP处理会话函数session和cookie总结 PHP处理会话函数包括:session_start.session_register.session_is_registered.session_unregister.Session_destroy等等.相信大家在学习php语言的时候多多少少都会对php的会话功能有所了解,下面小编给大家分享下php处理会话函数大总结. 当客户端的Cookie被禁用时,会自动通过Query_String来传递.PHP处理会话函数一共有10个,我们详细介

[ASP.NET][Session] 使用会话管理解决 Session 丢失问题

使用会话管理解决 Session 丢失问题 步骤 1.在 CMD 中输入命令 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 再执行 语法:aspnet_regsql.exe -S 服务器ip -U 数据库登录名 -P 数据库密码 -d 所要放入的数据库 -ssadd -sstype c 实例:aspnet_regsql.exe -S localhost -U sa -P 123456 -d ZSZ -ssadd -sstype c 执行成功的结

JavaWeb-10(会话技术之session&amp;amp;JSP)

JavaWeb-会话技术之session&JSP 会话管理之Session技术 一.Session 在WEB开发中,server能够为每一个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此.在须要保存用户数据时.server程序能够把用户数据写到用户浏览器独占的session中,当用户使用浏览器訪问其他程序时,其他程序能够从用户的session中取出该用户的数据,为用户服务. 1.Session和Cookie的主要差别在于: a.

JavaWeb-10(会话技术之session&amp;JSP)

JavaWeb-会话技术之session&JSP 会话管理之Session技术 一.Session 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务器程序可以把用户数据写到用户浏览器独占的session中,当用户使用浏览器访问其它程序时,其它程序可以从用户的session中取出该用户的数据,为用户服务. 1.Session和Cookie的主要区别在于: a. Cookie是

会话Cookie及session的关系(Cookie &amp; Session)

会话Cookie及session的关系(Cookie & Session) 在通常的使用中,我们只知道session信息是存放在服务器端,而cookie是存放在客户端.但服务器如何使用session和客户端之间进行通信,以及jsessionId是怎么回事,这并没有一个完整和正确的认识,因此这里将这类信息汇总. session中的jsessionId是在session创建好之后,发送给客户端.然后在每一次请求中,客户端即会将这个信息传递给服务器端,服务器端使用这个信息来维护和客户端之间的会话通信,

session的官方定义是:Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。 说白了session就是一种可以维持服务器端的数据存储技术。session主要有以下的这些特点: 1. session保存的位置是在服务器端 2. session一般来说是要配合cookie使用,如果是浏览器禁用了cookie功

session的官方定义是:Session:在计算机中,尤其是在网络应用中,称为"会话控制".Session 对象存储特定用户会话所需的属性及配置信息. 说白了session就是一种可以维持服务器端的数据存储技术.session主要有以下的这些特点: 1. session保存的位置是在服务器端 2. session一般来说是要配合cookie使用,如果是浏览器禁用了cookie功能,也就只能够使用URL重写来实现session存储的功能 3. 单纯的使用session来维持用户状态的话

php会话控制cookie/session

设置cookie PHP设置Cookie最常用的方法就是使用setcookie函数,setcookie具有7个可选参数,我们常用到的为前5个: name( Cookie名)可以通过$_COOKIE['name'] 进行访问value(Cookie的值)expire(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效path(有效路径)如果路径设置为'/',则整个网站都有效domain(有效域)默认整个域名都有效,如果设置了'www.baidu.com',则只在www子域中有效 $val

会话控制 COOKIE SESSION

cookie setcookie(名称,值,过期时间,有效路径,有效域,安全); setcookie('username','zhangshuo',time()+3600,'/'); 退出cookie: setcookie('username',null,-3600,'/'); <?phpsetcookie('username','zhangshuo',time()+3600,'/'); <?phpheader("content-type:text/html;charset=utf-

会话跟踪技术——Session

一.什么是Session Session从用户访问页面开始,到断开与网站连接为止,形成一个会话的生命周期.在会话期间,分配客户唯一的一个SessionID,用来标识当前用户,与其他用户进行区分. Session会话时,SessionID会分别保存在客户端和服务器端两个位置,对于客户端使用临时的Cookie保存(Cookie名称为PHPSESSID)或者通过URL字符串传递,服务器端也以文本文件形式保存在指定的Session目录中. Session通过ID接受每一个访问请求,从而识别当前用户.跟踪