PHP Session 变量的使用方法详解与实例代码


Posted in PHP onSeptember 11, 2013

当您运行一个应用程序时,您会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程序,并在何时终止。但是在因特网上,存在一个问题:服务器不知道你是谁以及你做什么,这是由于 HTTP 地址不能维持状态。
通过在服务器上存储用户信息以便随后使用,PHP session 解决了这个问题(比如用户名称、购买商品等)。不过,会话信息是临时的,在用户离开网站后将被删除。如果您需要永久储存信息,可以把数据存储在数据库中。

把手册抄一下,然后每个都试试然后写出来,方便自己查阅滴,谁让咱刚学呢。Session大概有12个函数分别是:

session_start: 初始 session。
session_destroy: 结束 session。
session_unset: 释放session内存。
session_name: 存取目前 session 名称。
session_module_name: 存取目前 session 模块。
session_save_path: 存取目前 session 路径。
session_id: 存取目前 session 代号。
session_register: 注册新的变量。
session_unregister: 删除已注册变量。
session_is_registered: 检查变量是否注册。
session_decode: Session 资料解码。
session_encode: Session 资料编码。

还有个全局变量就是:$_SESSION

在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 标签之前:

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

存储 Session 变量

<?php
session_start();
// store session data
$_SESSION['views']=1;
?> 
<html>
<body><?php
//retrieve session data
echo "Pageviews=". $_SESSION['views'];
?>
</body>
</html>
 [html] 

终结 Session
unset() 函数用于释放指定的 session 变量:
[code]
<?php
unset($_SESSION['views']);
?>
 

您也可以通过 session_destroy() 函数彻底终结 session:

<?php
session_destroy();
?>
 

实例:

<?php 
session_start(); 
switch ( $_GET['action'] ){ 
case "loginif"; 
//登陆验证,假定session储存的秘密应该等于123才为正确 
if ($_SESSION['pass']=="123"){echo "密码正确 您可以执行注销";}else{echo "密码错误,您可以重新登陆";} 
break; 
case "logout"; 
//注销登陆 
session_unset(); 
session_destroy(); 
echo "注销成功!可以判断一下密码是否正确来看看是不是成功注销"; 
break; 
case "login"; 
//写入session以供验证, 
$pass="123";//密码 
$_SESSION['pass']=$pass; 
echo "写入登陆密码了 去判断密码成功与否吧。"; 
break; 
} 
?> 
<p>假定本页名为temp.php </p> 
<p><a href="temp.php?action=login">用户进行登陆post,程序处理写入session</a></p> 
<p><a href="temp.php?action=loginif">判断用户密码是否正确</a></p> 
<p><a href="temp.php?action=logout">登陆成功的用户注销登陆</a></p>
 

我总结了一下php中session的用法。

(一)开始session

在每一次使用session之前,都要加上这一句:“session_start();”。顾名思义,这个函数的作用就是开始使用session。
(二)注册session

首先要建立一个global(注意,一定要定义为global,不然在其它页面用不了)数组,如$login,其中$login['name']="Victor",$login['pwd']="111111",然后调用函数“session_register(login);”,session就成功注册了。
(三)使用session里面的变量

和注册session类似,都要先建立一个global数组,然后就和使用一般数组一样了。
(四)判断session是否注册

很简单,用“if (session_is_registered(login))”判断就可以了。
(五)卸载session

也很简单,“session_unregister(login);”就可以了。

注意:在进行(二)(三)(四)(五)之前一定要先进行(一)。

下面给出一个例子:

index.htm

<html> 
<head> 
<title>测试</title> 
</head> 
<body> 
<FORM METHOD=POST ACTION="login.php"> 
用户名:<INPUT TYPE="text" NAME="name"><br/> 
密码:<INPUT TYPE="password" name="pwd"><br/> 
<INPUT TYPE="submit" value="提交"> 
</FORM> 
</body> 
</html>
 

login.php

<?php 
global $login; 
if ($_POST['name']!="Victor" || $_POST['pwd']!="111111") 
{ 
        echo "登陆失败"; 
        echo "请<a href=index.htm>返回</a>"; 
        exit; 
} 
$login = array('name'=>$_POST['name'], 
                           'pwd'=>$_POST['pwd']); 
session_start(); 
session_register(login); 
echo "<a href=info.php>查看信息</a><br/>"; 
echo "<a href=logout.php>退出登陆</a><br/>"; 
?>
 

info.php

<?php 
session_start(); 
if (session_is_registered(login)) 
{ 
        global $login; 
        echo "hello,".$login['name']."<br/>"; 
        echo "<a href=logout.php>退出登陆</a><br/>"; 
} 
else 
{ 
        echo "非法操作<br/>"; 
        exit; 
} 
?>

logout.php

<?php 
session_start(); 
session_unregister(login); 
header("location:index.htm"); 
?>
 
PHP 相关文章推荐
第十三节 对象串行化 [13]
Oct 09 PHP
最令PHP初学者们头痛的十四个问题
Jan 15 PHP
PHP5 面向对象程序设计
Feb 13 PHP
Optimizer与Debugger兼容性问题的解决方法
Dec 01 PHP
使用swoole扩展php websocket示例
Feb 13 PHP
Codeigniter生成Excel文档的简单方法
Jun 12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(五)
Jun 23 PHP
PHP中使用Memache作为进程锁的操作类分享
Mar 30 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
php使用变量动态创建类的对象用法示例
Feb 06 PHP
php正则判断是否为合法身份证号的方法
Mar 16 PHP
PHP实现类似题库抽题效果
Aug 16 PHP
php中通过数组进行高效随机抽取指定条记录的算法
Sep 09 #PHP
php文件夹与文件目录操作函数介绍
Sep 09 #PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 #PHP
PHP函数之日期时间函数date()使用详解
Sep 09 #PHP
PHP json_encode中文乱码问题的解决办法
Sep 09 #PHP
分享PHP header函数使用教程
Sep 05 #PHP
php增删改查示例自己写的demo
Sep 04 #PHP
You might like
整理的9个实用的PHP库简介和下载
2010/11/09 PHP
基于PHP一些十分严重的缺陷详解
2013/06/03 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
php 模拟GMAIL,HOTMAIL(MSN),YAHOO,163,126邮箱登录的详细介绍
2013/06/18 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
2014/11/18 PHP
PHP实现中国公民身份证号码有效性验证示例代码
2017/05/03 PHP
phpmyadmin下载、安装、配置教程
2017/05/16 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
使用pjax实现无刷新更改页面url
2015/02/05 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
Nuxt升级2.0.0时出现的问题(小结)
2018/10/08 Javascript
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
Python random模块常用方法
2014/11/03 Python
Python Queue模块详细介绍及实例
2016/12/27 Python
理想高通滤波实现Python opencv示例
2019/01/30 Python
Python Pandas实现数据分组求平均值并填充nan的示例
2019/07/04 Python
让Django的BooleanField支持字符串形式的输入方式
2020/05/20 Python
CSS3.0实现霓虹灯按钮动画特效的示例代码
2021/01/12 HTML / CSS
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
丹尼尔惠灵顿手表天猫官方旗舰店:Daniel Wellington
2017/08/25 全球购物
Foot Locker加拿大官网:美国知名运动产品零售商
2019/07/21 全球购物
GWT都有什么特性
2016/12/02 面试题
保险经纪人求职信
2014/03/11 职场文书
文明家庭先进事迹材料
2014/05/14 职场文书
南京市纪委监察局整改方案
2014/09/16 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
员工试用期转正自我评价
2015/03/10 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
python基础之停用词过滤详解
2021/04/21 Python
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript
搭建zabbix监控以及邮件报警的超级详细教学
2022/07/15 Servers