各位php高手,能告诉小弟怎么用php session 丢失设置权限吗?

用户权限验证,php的思路问题 - ThinkPHP框架
我想设置用户权限验证,很多控制器需要验证权限才能查数据,但是每次验证都需要从数据库查询权限,我觉得这样效率太低了,想把权限存到session里,权限太多,session会不会太大?大神给一下思路
yuhehanfeng
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
表示恨不能理解session的用法,我在做一个退出功能,把session的值给清空了,之后跳转到登陆页面,还是可以通过浏览器的后退回到登进去的状态,请问这个应该怎么做?
public function loginout(){
$_SESSION = array(); //清除SESSION值.
if(isset($_COOKIE[session_name()])){
//判断客户端的cookie文件是否存在,存在的话将其设置为过期.
setcookie(session_name(),'',time()-1,'/');
session_destroy();
//清除服务器的sesion文件
$this-&redirect("index");
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
每跳转一个页面先判断session是否存在如果session不存在就跳到登录页面,登录后将session保存,如果有session继续进行操作,如果点击退出登录就先清session,再跳到登录界面希望能帮到你具体session的用法可以百度
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
unset($_SESSION['member'])//完事
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你点击浏览器后退的时候,浏览器直接从本地缓存取的页面的源代码,并不会真正访问那个url,访问不了php控制器,判断不了session。
解决办法是在相关页面加上ajax代码判断当前登陆状态,未登录就用js控制页面跳转
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
一般是基类中判断是否登陆浏览器回退是读取本地缓存可以参考楼上的异步提交方案
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你在做退出登录加一个 unset($_SESSION) 语句 这样 即使你在做回退也不会有登录状态。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
1,如果单纯用session 退出,用户不点击退出,
a:写个脚本,读session 文件的创建时间,过期了,直接删除,不友好。
b:调整session的 session.gc_probability
和 session.gc_divisor 的值,都写为 100,加重服务器负担,对用户也不友好
2,用户点击退出,session_distory();
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
如果有需求可以在数据库加上一个字段is_login来控制,用户点击session_destoty()。然后ajax去更改状态
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
设置session的过期,如果想实现session过期时候前端作出相应变化可以考虑持续请求后端检查session是否过期。
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:教你如何使用php session
字体:[ ] 类型:转载 时间:
学会php session可以在很多地方使用,比如做一个后台登录的功能,要让程序记住用户的session,其实很简单,看了下面的文章你就明白了。
PHP session用法其实很简单它可以把用户提交的数据以全局变量形式保存在一个session中并且会生成一个唯一的session_id,这样就是为了多了不会产生混乱了,并且session中同一浏览器同一站点只能有一个session_id,下面我们一起来看看关于session使用方法。如何使用session,凡是与session有关的,之前必须调用函数session_start();为session赋值很简单,如: 代码如下:&?phpSession_start();$Name = "这是一个Session例子";Session_Register("Name");//注意,不要写成:Session_Register("$Name");Echo $_SESSION["Name"];//之后$_SESSION["Name"]为"这是一个Session例子"?&在php4.2之后,可以为session直接赋值: 代码如下:&?PHPSession_Start();$_SESSION["name"]="value";?&取消session可以这样: 代码如下:&?phpsession_start();session_unset();session_destroy();?&
读取 session
PHP 内置的 $_SESSION 变量可以很方便的访问设置的 session 变量。 代码如下:&?phpsession_start();echo "登记的用户名为:".$_SESSION["username"];&&& //输出 登记的用户名为:nostop?&检查变量是否被登记为会话变量 session_is_registered语法:boobean session_is_registered(string name);这个函数可检查当前的session之中是否已有指定的变量注册,参数name就是要检查的变量名。成功则返回逻辑值true。 代码如下:&?php&&& session_start();&&& if(!session_is_registered("gender")){ //判断当前会话变量是否注册&&&&&&& session_register("gender");&&& //注册变量&&& }&&& $gender="女";&&& echo $_SESSION['gender'];& //女?&
存取当前会话名称& session_name语法:boolean session_name(string [name]);这个函数可取得或重新设置当前session的名称。若无参数name则表示获取当前session名称,加上参数则表示将session名称设为参数name。 代码如下:&?php$sessionName = session_name();&& //取得当前 Session 名,默认为 PHPSESSID$sessionID = $_GET[$sessionName];&& //取得 Session IDsession_id($sessionID);&&&&& //使用 session_id() 设置获得的 Session ID?&
存取当前会话标识号session_id语法:boolean session_id(string [id]);这个函数可取得或重新设置当前存放session的标识号。若无参数id则表示只获取当前session的标识号,加上参数则表示将session的标识号设成新指定的id。设置 Session 的生存期 代码如下:&?php&&& session_start&&& // 保存一天&&& $lifeTime = 24 * 3600;&&& setcookie(session_name(), session_id(), time() + $lifeTime, "/");?&session_set_cookie_params:设置 Session 的生存期的,该函数必须在 session_start() 函数调用之前调用。如果客户端使用 IE 6.0 , session_set_cookie_params(); 函数设置 Cookie 会有些问题,所以我们还是手动调用 setcookie 函数来创建 cookie。 代码如下:&?php// 保存一天  $lifeTime = 24 * 3600;  session_set_cookie_params($lifeTime);  session_start();  $_session["admin"] =?&
设置 Session 文件的保存路径session_save_path() :必须在 session_start() 函数调用之前调用。 代码如下:&?php  // 设置一个存放目录  $savePath = "./session_save_dir/";  // 保存一天  $lifeTime = 24 * 3600;  session_save_path($savePath);  session_set_cookie_params($lifeTime);  session_start();  $_session["admin"] =?&
&?phpsession_start();&&& //启动Session$username='nostop';session_register('username');&&& //注册一个名为username变量echo '登记的用户:'.$_SESSION['username'];&&& //登记的用户:nostop&& 读取Session变量
$_SESSION['age']=23;&&& //声明一个名为age的变量,并赋值echo '年龄:'.$_SESSION['age']; //年龄:23
session_unregister('username'); //注销Session变量echo $_SESSION['username'];& //空echo $_SESSION['age'];//23
unset($_SESSION['age']); //注销Session变量echo '登记的用户:'.$_SESSION['username']; //空echo '年龄:'.$_SESSION['age']; //空?&注意:
1:在调用Session_Start()之前不能有任何输出.例如下面是错误的.
1行2行 &?PHP3行 Session_Start();//之前在第一行已经有输出4行 .....5行 ?&
凡是出现"........headers already sent..........",就是Session_Start()之前向浏览器输出信息.去掉输出就正常,(COOKIE也会出现这种错误,错误原因一样)
如果你的Session_Start()放在循环语句里,并且很难确定之前哪里向浏览器输出信息,可以用下面这种方法:1行 &?PHP Ob_Start(); ?&........这里是你的程序......
2:这是什么错误
Warning: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5cf, O_RDWR) failed:....因为你没有指定session文件的存放路径.
(1)在c盘建立文件夹tmp(2)打开php.ini,找到session.save_path,修改为session.save_path= "c:/tmp"
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
怎样才能成为PHP高手?学会
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口安全检查中...
请打开浏览器的javascript,然后刷新浏览器
< 浏览器安全检查中...
还剩 5 秒&

我要回帖

更多关于 php session 过期时间 的文章

 

随机推荐