手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆

UCHOME开发中遇到的问题

首页 > PHP >

最近在做uchome二次开发的时候遇到一个小问题:强制登录。
什么是强制登录,即,我们在任何 时候,只要点击登录,就显示登录框,同时清除原来所有的登录状态信息。为什么呢,是因为担心在同步登录的时候,如果有某个频道没有同步成功,在点击登录的时候,会显示当前用户已登录,而不会触发登录了。所以必须强制清除登录状态。

于是根据这个需求,简单的在do_login里进行了cleancookie处理。然后而是加了一句:unset($_SGLOBAL['supe_uid']);

结果,几个FORM框里生成的formhash()值都不一样了。导致直接在提交的时候说来路不正常。

检查了很久(不过这次不是我解决的),发现居然是那个unset($_SGLOBAL['supe_uid']);导致的,但是看了formhash这个函数,里面是针对$_SGLOBAL['formhash']变量,没有和supe_uid有关。。。

所以感觉有点妖异。包括把$_SGLOBAL['supe_uid']设为0,设为null都没有关系,只是unset后就出错了。。。

又是一个没有时间解决的问题,先知道解决方法就成了。。。。记录一下。




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

Tags: uchome, unset, sglobal

« 上一篇 | 下一篇 »

只显示10条记录相关文章

漫游(manyou)简介 (浏览: 27759, 评论: 1)
Discuz Uchome 小技巧 (浏览: 16590, 评论: 0)

2条记录访客评论

我想说,不好意思,你的思路应该是不正确的。
1、首先,uchome的$_SGLOBAL是由他们自己创建的伪全局变量,并非真正的全局变量(如$_GET,$_SESSION那样)
2、其次,如果unset($_SESSION)是会出现一些不可预料的错误,但,即使它真的是全局变量,我也只是unset其中某一个下标。比如 unset($_SESSION['xxx']),也不会影响其他session变量

Post by gouki on 2011, January 31, 9:47 PM 引用此文发表评论 #1

这个问题我觉得好像有点思路,但是不能确定是对的。仅供参考。
我记得PHP手册上曾经说过,对于这种全局变量不能使用unset(),好像是因为unset以后他不仅保存的值没有了,自身也被干掉了。你再次调用它的时候因为之前统一的没有了,所以再次生成的不会是那一个。

Post by Sin30 on 2011, January 31, 11:23 AM 引用此文发表评论 #2


发表评论

评论内容 (必填):