SAE版一个bug及解决方案
自从上次SAE版升级后我就基本没有再修改了,本来还说要fork后二次开发呢,一直拖着。
不过这两天又有了些兴致,所以慢慢有开始看代码,不知@ego008 还记不记得我之前发帖子说覆盖升级后发帖不显示标签?
我今天仔细看了一下代码,再结合日志,发现了问题:当论坛设置仅登录用户可访问时,标签功能就会出问题。
原因如下:
在fenci.php 中include了common.php,而common.php里有判断是否登陆的代码,如果没登陆会自动跳转到/login
taskqueue服务执行时当然是未登录状态,这就导致分词服务无法正常执行。
有图为证
(7那个是我设置为开放访问时,taskqueue请求返回的http状态码为200(正常)
8那个是我设置为仅登录用户可以访问时再次发新帖,可以看到状态码变为302,所以无法正常执行分词服务)
解决方法:
我只想到一个凑合可用的,在common.php里
修改
// 只允许注册用户访问
if($options['authorized'] && (!$cur_user || $cur_user['flag']<5)){
if( !in_array($url_path, array('login','logout','sigin','forgot','qqlogin','qqcallback','qqsetname','wblogin','wbcallback','wbsetname'))){
header('location: /login');
exit('authorized only');
}
}
改为
// 只允许注册用户访问
if(!strpos($_SERVER["REQUEST_URI"], 'fenci')){
if($options['authorized'] && (!$cur_user || $cur_user['flag']<5)){
if( !in_array($url_path, array('login','logout','sigin','forgot','qqlogin','qqcallback','qqsetname','wblogin','wbcallback','wbsetname'))){
header('location: /login');
exit('authorized only');
}
}
}
即,当请求页面url里面包含“fenci”时,不对登陆与否进行判断,这样bug就解决了
不过感觉这样有一个小问题(例如,若应用名称里面包含“fenci”,那么即使论坛设置为仅登录用户可访问,未登录用户依旧可以访问)
希望 @ego008 能给出一个更好的解决方案
0
See Also
- 我有一个在sae安装的问题
- 一个bug?
- 反馈一个bug
- SAE python error 3 from memcached_get: CONNECTION FAILURE
- 类GAE、SAE、BAE等云平台的优势:不顾虑平台的问题,专心运营
Nearby
- 上一篇 › 分类,主题?
- 下一篇 › SDK 1.8.0 上传代码竟然不用登录,不用输入密码
忘了这一层了,可直接在数组里添加一个元素:'fenci'
array('login','logout','sigin','forgot','qqlogin','qqcallback','qqsetname','wblogin','wbcallback','wbsetname','fenci')
in_array($url_path, path_array) 就是防这层遗漏。