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实现的生成静态HTML速度快类库
Mar 31 PHP
PHP 危险函数全解析
Sep 09 PHP
PHP三层结构(上) 简单三层结构
Jul 04 PHP
php数据库密码的找回的步骤
Jan 12 PHP
php ci框架中加载css和js文件失败的解决方法
Mar 03 PHP
php的慢速日志引起的Mysql错误问题分析
May 13 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
php监测数据是否成功插入到Mysql数据库的方法
Nov 25 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 PHP
PHP常见的序列化与反序列化操作实例分析
Oct 28 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
第三节 定义一个类 [3]
2006/10/09 PHP
php md5下16位和32位的实现代码
2008/04/09 PHP
学习使用curl采集curl使用方法
2012/01/11 PHP
PHP处理二进制数据的实现方法
2016/06/13 PHP
thinkPHP框架实现的简单计算器示例
2018/12/07 PHP
PHP中迭代器的简单实现及Yii框架中的迭代器实现方法示例
2020/04/26 PHP
Javascript Jquery 遍历Json的实现代码
2010/03/31 Javascript
在jQuery1.5中使用deferred对象 着放大镜看Promise
2011/03/12 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
javascript数组操作总结和属性、方法介绍
2014/04/05 Javascript
AngularJS进行性能调优的7个建议
2015/12/28 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
AngularJs入门教程之环境搭建+创建应用示例
2016/11/01 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
socket.io学习教程之基本应用(二)
2017/04/29 Javascript
在AngularJs中设置请求头信息(headers)的方法及不同方法的比较
2018/09/04 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
js判断一个对象是数组(函数)的方法实例
2019/12/19 Javascript
Vant Weapp组件踩坑:picker的初始赋值解决
2020/11/12 Javascript
[01:55]TI9显影之尘系列 - Evil Geniuses
2019/08/22 DOTA
python中实现字符串翻转的方法
2018/07/11 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
python三方库之requests的快速上手
2019/03/04 Python
Django使用redis缓存服务器的实现代码示例
2019/04/28 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
罗德与泰勒百货官网:Lord & Taylor
2016/08/12 全球购物
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
证婚人搞笑证婚词
2014/01/10 职场文书
幼儿园中秋节活动方案2013
2014/01/29 职场文书
安全生产汇报材料
2014/02/17 职场文书
喝酒检查书范文
2014/02/23 职场文书
体育活动总结范文
2014/05/04 职场文书
承兑汇票延期证明
2015/06/23 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书