PHP session 会话处理函数


Posted in PHP onJune 06, 2016

PHP Session 变量

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

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

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

1. 开始会话

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

1 bool session_start( void ) 

调用如下:

<?php session_start();?>
 <html>
 <body></body>
 </html>

注意:

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

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

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

2.存储或者读取会话

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

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

$_SESSION[‘season'] = '秋天'; 

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

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

这是session1.php文件:

<?php
 /**
  * Created by PhpStorm.
  * User: yuxiu
  * Date: //
  * Time: :
  */
 if(isset($_POST['submit'])){
   session_start();                //开始建立一个会话
   $_SESSION['season'] = $_POST['season'];    //存储会话数据
   header("Location: session.php");      //应特别注意header()里的格式问题
 }
 ?>
 <b>存储会话</b>
 <hr/>
 选择需要设置的数据:
 <form name="form" method="post" action="" id="form" >
   <select name="season" id="season_select" >
     <option value="春天">春天</option>
     <option value="夏天">夏天</option>
     <option value="秋天">秋天</option>
     <option value="冬天">冬天</option>
   </select>
   <br/>
   <br/>
   <br/>
  <input type="submit" name="submit" value="submit"/>
 </form>

 这是session2.php文件:

 

<?php
 /**
  * Created by PhpStorm.
  * User: yuxiu
  * Date: //
  * Time: :
  */
 session_start();  //建立或者继续一个会话
 $season = $_SESSION['season'];    //读取会话数据
 echo "<b>读取会话</b><br/><br/>";
 switch ($season) {
   case '春天';
     echo '现在是绿意盎然的春天!';
     break;
   case '夏天';
     echo '现在是热情四溢的夏天!';
     break;
   case '秋天';
     echo '现在是丰收果实的秋天!';
     break;
   case '冬天';
     echo '现在是白雪皑皑的冬天!';
     break;
   default ;
     echo '对不起,会话中没有数据 或者 不存在该对话 !';
 }
 ?>

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

3.销毁会话

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

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

  或者:

<?php
 session_destroy();   //注意,使用这个函数将重置session数组,即失去所有的已经储存的session数据
?>
PHP 相关文章推荐
社区(php&amp;&amp;mysql)三
Oct 09 PHP
php 图像函数大举例(非原创)
Jun 20 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
PHP单例模式详细介绍
Jul 01 PHP
php基本函数汇总
Jul 09 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
php的debug相关函数用法示例
Jul 11 PHP
php利用递归实现删除文件目录的方法
Sep 23 PHP
静态html文件执行php语句的方法(推荐)
Nov 21 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
Oct 26 PHP
php-msf源码详解
Dec 25 PHP
一文看懂PHP进程管理器php-fpm
Jun 01 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
Jun 06 #PHP
PHP编写的图片验证码类文件分享
Jun 06 #PHP
Laravel框架实现发送短信验证功能代码
Jun 06 #PHP
JSON字符串传到后台PHP处理问题的解决方法
Jun 05 #PHP
PHP获取指定时间段之间的 年,月,天,时,分,秒
Jun 05 #PHP
php 如何获取文件的后缀名
Jun 05 #PHP
PHP常用文件操作函数和简单实例分析
Jun 03 #PHP
You might like
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
2014/11/18 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
Yii2 队列 shmilyzxt/yii2-queue 简单概述
2017/08/02 PHP
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
文件编码导致jquery失效的解决方法
2013/06/26 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
node.js中的console.log方法使用说明
2014/12/09 Javascript
JavaScript中的pow()方法使用详解
2015/06/15 Javascript
jQuery绑定事件监听bind和移除事件监听unbind用法实例详解
2016/01/19 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
详解前端自动化工具gulp自动添加版本号
2016/12/20 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
vue实现五子棋游戏
2020/05/28 Javascript
为什么推荐使用JSX开发Vue3
2020/12/28 Vue.js
[00:14]PWL:老朋友Mushi拍VLOG与中国玩家问好
2020/11/04 DOTA
Python 调用DLL操作抄表机
2009/01/12 Python
python实现爬虫下载漫画示例
2014/02/16 Python
单利模式及python实现方式详解
2018/03/20 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
python如何实现读取并显示图片(不需要图形界面)
2020/07/08 Python
appium+python自动化配置(adk、jdk、node.js)
2020/11/17 Python
一款纯css3实现的动画加载导航
2014/10/08 HTML / CSS
Space NK美国站:英国高端美妆护肤商城
2017/05/22 全球购物
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
中国跨境在线时尚零售商:Bellelily
2018/04/06 全球购物
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
租房协议书怎么写
2014/04/10 职场文书
股东授权委托书范文
2014/09/13 职场文书
python opencv通过4坐标剪裁图片
2021/06/05 Python
聊聊redis-dump工具安装问题
2022/01/18 Redis
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫