网络编程
位置:首页>> 网络编程>> php编程>> PHP session 会话处理函数

PHP session 会话处理函数

作者:my笔触  发布时间:2023-11-15 14:55:53 

标签:php,session,函数

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数据
?>
0
投稿

猜你喜欢

  • 在网页设计初期,我们会先收集大家对设计方向的期许,我们经常收集到这样的建议:产品经理:要易用,要简洁设计总监:要特色,要亮点部门经理:要大气
  • Django功能强大不单在于他先进的编程理念,很多现有的功能模块更是可以直接拿来使用,比如这个牛掰的admin模块,可以作为一个很好的信息登
  • 1069错误(由于登录失败而无法启动服务)解决方法在本版面出现这个问题的频率也算是很高的了,新手通常会比较多遇到这个问题原因很简单,安装SQ
  • 见下表:序号保留字序号保留字序号保留字1ADD80ESCAPE159OR2ABSOLUTE81EXCEPT160ORDER3ACTION82
  • 在IE7还不支持counter 和increment 属性之前,我从来没有用过它们,也从来没有使用过:before 伪元素和content
  • XML的未来 现在你已经知道XML。确实,结构有点复杂,而且DTD有各种可以定义文档可以包含的内容的选项。但还不只这些。考虑一个数据交换对其
  • 一、概述OLAP的系统(即Online Aanalyse Process)一般用于系统决策使用。通常和数据仓库、数据分析、数据挖掘等概念联系
  • 可能有些地方翻译得不好,请见谅在这个冠冕堂皇的标题之下,我想回答一个土方,有人在博客提出很久了。该土方很好的描述了很多图标设计师所面临的典型
  • 问题有二进制文件中保存了 20 亿个 2 Bytes 的数,需将其读出,每 20000 个数作图,拟合后输出结果。解决# -*- codin
  • 上篇文章讲了js中的传值和传址 和 函数的作用域.这章我们来探讨js中的变量,表达式,和运算符 还有一些 js 语句。升级中……1, 表达式
  • 在XHTML标签中有一些标签的作用是相似的,当然这里的相似是指语义相似,以至于很多人都不清楚这些相似的标签如何使用,那么今天的主题就是分解相
  • Symfony是一个强大的基于PHP的Web开发框架,在这里我们用十分钟的时间来做一个简单的增删改查的程序, 任何不熟悉Symfony的人都
  • 本文列举了所有关于PHP语言中使用socket相关服务的一些函数。注意使用如下函数之前,你需要确保你的socket已打开,如果你没有打开,请
  • 今天来讲一下一些实现html中表格隔行换色的方法,即每隔一个行表格的背景色就不同,有静态html/css实现的,也有asp动态实现的。这个功
  • 很多人错误地认为ASP是简单、低效的代名词,认为ASP是低能的,不足挂齿的,也很简单,一学就会,一琢磨就精通。有人讲ASP不安全,写ASP的
  • 这是asp利用dictionary创建二维数组的例子,这样做的优点是:1、数组下标可以是字符串2、长度不是固定的<'% ’==
  • MySQL安全性指南(3) 作 者: 晏子2.4 不用GRANT设置用户如果你有一个早于3.22.11的MySQL版本,你不能使用GRANT
  • 网页广告 Banner 设计图文手册:采用以下要点来改善你的BANNER。广告并不便宜。 确信你的广告被第一时间读到。使用像这样的Sans
  • 协程协程(co-routine,又称微线程)是一种多方协同的工作方式。当前执行者在某个时刻主动让出(yield)控制流,并记住自身当前的状态
  • 对于数字索引数组来说,通过 array_push()函数向数组中添加元素。array_push()函数将数组当成一个栈,将传入的变量压入该数
手机版 网络编程 asp之家 www.aspxhome.com