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 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
php中删除字符串中最先出现某个字符的实现代码
Feb 03 PHP
使用php伪造referer的方法 利用referer防止图片盗链
Jan 20 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
PHP中feof()函数实例测试
Aug 23 PHP
Yii中render和renderPartial的区别
Sep 03 PHP
php简单获取目录列表的方法
Mar 24 PHP
Laravel 5框架学习之子视图和表单复用
Apr 09 PHP
PHP自动生成表单代码分享
Jun 19 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
Jun 14 PHP
YII框架常用技巧总结
Apr 27 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
使用 eAccelerator加速PHP代码的方法
2007/09/30 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
2014/06/19 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
javaScript面向对象继承方法经典实现
2013/08/20 Javascript
JavaScript利用正则表达式去除日期中的-
2014/06/09 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
windows下vue.js开发环境搭建教程
2017/03/20 Javascript
JavaScript数据结构之数组的表示方法示例
2017/04/12 Javascript
layui导航栏实现代码
2017/05/19 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
python多线程操作实例
2014/11/21 Python
bat和python批量重命名文件的实现代码
2016/05/19 Python
python实现梯度下降算法
2020/03/24 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
如何利用pygame实现简单的五子棋游戏
2019/12/29 Python
学python爬虫能做什么
2020/07/29 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
css3中transition属性详解
2014/09/02 HTML / CSS
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
手机配件第一品牌:ZAGG
2017/05/28 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
办公室文员工作职责
2014/01/31 职场文书
《月迹》教学反思
2014/02/19 职场文书
社区两委对照检查材料
2014/08/23 职场文书
致我们终将逝去的青春观后感
2015/06/10 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
详解nginx进程锁的实现
2021/06/14 Servers