PHP中session的使用方法

作为一个系统,必定会有用户登陆与权限控制的环节,怎么做好这两项呢?

    session就是服务器端与客户端的会话,让服务器端“认识”客户端,继而达到权限控制或者客户端与服务器端信息交流的目的。

    首先梳理一下PHP控制session来实现权限控制的思路:

    假设某网站有两种用户权限分别为:admin与user。

  1. 首先,进行用户登陆。
  2. 当用户登陆验证通过时,同时向session发送用户类型信息,例如“user”。
  3. session记录下此用户的用户类型“user”。
  4. 当用户请求访问页面时,页面将保存在session中的用户类型信息与页面的访问权限作比较,如果页面的访问权限为user,那么与用户类型一致,那么通过审核,用户可以对该页进行访问,如果页面的访问权限是admin,那么与用户类型不符,那么拒绝用户访问。

 

操作session代码

首先在php.ini中对session的设置做一些调整。找到session.save_path,CenusDesign建议把路径改为自己比较容易查看的位置,比如说X:\web\session,注意,目录一定要真实存在。修改完毕后重起Apache服务来使设置生效。这个操作的意思是,服务器会把与每一个用户的对话内容保存在一个以sess开头的session文件中来加以识别与操作。这个目录即为保存这些文件的目录。

    那么就进行我们与session的第一次会话吧!

    新建session.php文件,并录入以下代码:

<?php
session_start();
$_SESSION["username"]="cenusblog";
$_SESSION["authority"]="admin";
?>

   Cenusblog来进行解释:

    session_start():表示一段会话的开始,所有对session的操作都要以它开始。在会话开始的同时,在先前提到的session.save_path目录下,便会自动生成记录这次对话的sess文件。

    $_SESSION["变量名"]=值:大家可以根据自己的需要在session中记录某些信息。变量名与值大家都可以任意改变。例如sunec将username赋予了“cenusblog”,authority赋予了“admin”。大家可session.save_path目录下的sess文件加以验证。

    另外,session_destroy():就是销毁这次session对话,同时也删除了这个sess文件。

 

PHP页面用户权限控制代码

首先进行用户登陆,登陆完毕后,将用户相关信息发送给session,例如:

<?php
session_start();
$_SESSION["username"]="cenusblog";
$_SESSION["authority"]="user";
?>

    (提示:在数据库中,用户表中可以建立名为用户类型的字段。)

    这样,我们就将用户信息清楚地告诉给了session,意思就是,我的username是cenusblog,用户类型是user

    接下来我们建立两个页面,一个只允许admin类型用户可以访问admin.php,另一个是user和admin都有权限进行访问user.php。

    admin.php的代码:

<?php
session_start();
$auth=$_SESSION["authority"];
$user=$_SESSION["username"];
if($auth=="admin")
{echo "$user,welcome to admin page";}
else
{echo "you are not permitted to visit this page";}
?>

    user.php的代码:

<?php
session_start();
$auth=$_SESSION["authority"];
$user=$_SESSION["username"];
if($auth=="admin"||$auth=="user")
{echo "$user,welcome to user page";}
else
{echo "you are not permitted to visit this page";}
?>

    这两段代码的意思其实很简单,就是判断写入sess文件中的用户类型是否与页面要求的类型相一致,如果符合用户类型,那么通过并显示内容,如果不符,则不允许访问。所有这一切只需用一个简单的if...else语句就完成了。大家是不是觉得很方便呢?

session的其他使用思路。

1、权限用户的独特菜单项

    例如,有些按钮只有当拥有admin权限的用户才能使用,而对user用户屏蔽。那么,我们可以这样做,通过session会话,利用if条件判断语句,如果用户权限为admin,则显示按钮,如果不是,则不显示。很简单。

    2、保存用户浏览记录

    很多网站都有用户最近浏览的提示,想知道怎么做出来的么~呵呵~当然,做法可能各有不同,但思路肯定都差不多,就是将用户浏览过的商品信息记录在用户的cookie或者是session信息里,通常,cookie或是session都有一个保存周期性,这个周期是可以设置的,然后,在这保存周期之内,用户再次访问网站时,网站就会读取这些信息,以获得最近信息。



上一篇: 域名注册的不同状态说明
下一篇: session、cookie与“记住我的登录状态”的功能的实现
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: php session
相关日志:
评论: 1 | 引用: 0 | 查看次数: 3826
uedcss.com[2011-04-17 00:42 AM | | | 122.225.61.176 | del | 回复回复]
沙发
不错,学习了
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭

 广告位

↑返回顶部↑