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 相关文章推荐
用PHP写的MySQL数据库用户认证系统代码
Mar 22 PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
Jan 30 PHP
php auth_http类库进行身份效验
Mar 19 PHP
php后台程序与Javascript的两种交互方式
Oct 25 PHP
php文件上传的例子及参数详解
Dec 12 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
Apr 30 PHP
PHP开发框架Laravel数据库操作方法总结
Sep 03 PHP
微信公众平台接口开发入门示例
Dec 24 PHP
Yii2针对指定url的生成及图片等的引入方法小结
Jul 18 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
Laravel获取所有的数据库表及结构的方法
Oct 10 PHP
PHP执行系统命令函数实例讲解
Mar 03 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
PHP面向对象法则
2012/02/23 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
jQuery中get()方法用法实例
2014/12/27 Javascript
js实现DOM走马灯特效的方法
2015/01/21 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
详解node中创建服务进程
2017/05/09 Javascript
js实现导航跟随效果
2018/11/17 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
Jquery Fade用法详解
2020/11/06 jQuery
wxPython 入门教程
2008/10/07 Python
Python3中类、模块、错误与异常、文件的简易教程
2017/11/20 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
使用Pyinstaller转换.py文件为.exe可执行程序过程详解
2019/08/06 Python
python实现飞行棋游戏
2020/02/05 Python
python 命名规范知识点汇总
2020/02/14 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
英国50岁以上人群的交友网站:Ourtime
2018/03/28 全球购物
国贸类专业毕业生的求职信分享
2013/12/08 职场文书
大学学生会竞选演讲稿
2014/04/25 职场文书
家长给学校的建议书
2014/05/15 职场文书
农村门前三包责任书
2014/07/25 职场文书
毕业生班级鉴定评语
2015/01/04 职场文书
邀请函模板
2015/02/02 职场文书
Python基础之元组与文件知识总结
2021/05/19 Python
MySQL 全文检索的使用示例
2021/06/07 MySQL
python实现A*寻路算法
2021/06/13 Python
MySQL 亿级数据导入导出及迁移笔记
2021/06/18 MySQL
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS
Python 数据可视化之Bokeh详解
2021/11/02 Python