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生成静态文件的多种方法分享
Jul 17 PHP
PHP获取短链接跳转后的真实地址和响应头信息的方法
Jul 25 PHP
PHP 导出Excel示例分享
Aug 18 PHP
PHP cURL初始化和执行方法入门级代码
May 28 PHP
php查询whois信息的方法
Jun 08 PHP
浅谈PDO的rowCount函数
Jun 18 PHP
PHP通过加锁实现并发情况下抢码功能
Aug 10 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
Jun 05 PHP
PHP使用ActiveMQ实例
Feb 05 PHP
PHP echo()函数讲解
Feb 15 PHP
Yii2框架中一些折磨人的坑
Dec 15 PHP
php计数排序算法的实现代码(附四个实例代码)
Mar 31 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
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
2006/10/09 PHP
PHP5中新增stdClass 内部保留类
2011/06/13 PHP
PHP中全面阻止SQL注入式攻击分析小结
2012/01/30 PHP
解析PHP高效率写法(详解原因)
2013/06/20 PHP
PHP判断上传文件类型的解决办法
2015/10/20 PHP
列表内容的选择
2006/06/30 Javascript
从零开始学习jQuery (二) 万能的选择器
2010/10/01 Javascript
使用原生javascript创建通用表单验证——更锋利的使用dom对象
2011/09/13 Javascript
JavaScript获取FCK编辑器信息的具体方法
2013/07/12 Javascript
js替换字符串的所有示例代码
2013/07/23 Javascript
jquery实现弹出层完美居中效果
2014/03/03 Javascript
把jQuery的类、插件封装成seajs的模块的方法
2014/03/12 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
JS设计模式之单例模式(一)
2017/09/29 Javascript
Vue.js 事件修饰符的使用教程
2018/11/01 Javascript
微信小程序实现获取用户信息并存入数据库操作示例
2019/05/07 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
解决vue单页面应用进入页面加载所有 js 的问题
2020/08/12 Javascript
python模拟Django框架实例
2016/05/17 Python
python中星号变量的几种特殊用法
2016/09/07 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
遗传算法python版
2018/03/19 Python
python实现经典排序算法的示例代码
2021/02/07 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
Marc Jacobs官方网站:美国奢侈品牌
2017/08/29 全球购物
波兰最大的电商平台:Allegro.pl
2021/02/06 全球购物
廉政教育心得体会
2014/01/01 职场文书
房屋登记授权委托书范本
2014/10/09 职场文书
教师三严三实心得体会
2014/10/11 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
win10系统计算机图标怎么调出来?win10调出计算机图标的方法
2022/08/14 数码科技