+ -
当前位置:首页 → 问答吧 → $this->redirect 会产生死循环??

$this->redirect 会产生死循环??

时间:2009-02-19

来源:互联网


  1.    $this->redirect('login','Public');
复制代码
上面内容本身肯定是没什么问题的

当执行这样的操作,服务器端会进入一个死循环。感觉是不断刷新打开login,请问,这是因为服务器里的那里配置有问题啊?

Public 里的login方法只是很简单输出一句话
  1. echo("就一句话");
复制代码
[ 本帖最后由 wmsh 于 2009-2-20 14:15 编辑 ]

作者: wmsh   发布时间: 2009-02-19

刚才搜索了一个站内贴子,以前有人遇到过,但贴子里没说怎么解决的。
现把环境说一下
Apache/2.2.3 (Red Hat)
Linux (Linux host17.xrnet.cn 2.6.18-8.el5 #1 SMP Fri Jan 26 14:15:21 EST 2007 i686)
运行方式: CGI
PHP版本: 5.2.4
Zend版本: 2.2.0
Mysql客户端库版本: 5.0.22
这个问题我自己摸索已经两天,没整明白,请老大务必出马啊,谢谢

作者: wmsh   发布时间: 2009-02-19

你进行权限控制后,如果没有权限,跳转到Public login,但是因为某种原因,你的设置导致Public login也是需要权限认证的,这样就会出现死循环了

但是你的帖子里并没有说明白你是怎么做权限控制的啊

作者: yhustc   发布时间: 2009-02-19

  1. private $sid;
  2. private $groupid;
  3. function _initialize()
  4. {
  5. $this->sid=Session::get(C('USER_AUTH_KEY'));
  6. $this->groupid=Session::get('groupid');
  7. }

  8. public function login()
  9. {

  10. if(!isset($this->sid) || $this->groupid=='')
  11. {
  12. $this->display();

  13. }else{
  14. $this->redirect('Index','Index');
  15. }
  16. }
复制代码
其实中groupid是用户组的ID,老大看看这段有什么问题吗?

作者: wmsh   发布时间: 2009-02-19

整个程序在我本机上运行一切正常,应该不是因为权限控制引起的,否则的话,在我本地运行时也应该会出现问题。

而是上传某服务商的空间上后,就会出现这样的问题。

作者: wmsh   发布时间: 2009-02-19

$this->redirect('Index','Index');

你可以先把这个去掉试试

可能是你本机WINDOWS下有一个地方没有严格匹配的检查,然后上传到服务商的LINUX系统后大小写严格检查导致你有一个地方过不去

然后你的权限系统会让他跳转到public login,而如果你有登录的话,login又会跳转到index index,再又由index index跳回来...

作者: yhustc   发布时间: 2009-02-19

呵呵,老大,这个问题,有头绪了

当我在配置文件里,将url_model改为兼容模式,即
'URL_MODEL'=>3,
则不会出现上述的怪现象,那么断定,是虚拟主机不支持。

那我和服务怎么说呢?
你的虚拟主机不支持URL  PATHINFO、REWRITE模式。
这样表达,服务商能明白?
请老大总结一下。

作者: wmsh   发布时间: 2009-02-20

应该是pathinfo的问题吧
我试过godaddy的主机,apache 1.3,pathinfo也有问题,不过因为我这个不需要跳转,所以直接报错说找不到模块
最后我用rewrite+兼容模式的pathinfo搞的
rewrite到 index.php?s=

作者: yhustc   发布时间: 2009-02-20

嗯,这个问题,终于是找到关键所在了,感谢老大不断的技术支持。

作者: wmsh   发布时间: 2009-02-20

一般是因为apache的rewrite模块没有开启 但是你的配置可能使用了rewrite模式

作者: thinkphp   发布时间: 2009-02-20

呵呵,事情还在继续,服务商说服务器端已经开启
rewrite模块

问,我们说的pathinfo 是指下面这个也得打开吗?

cgi.fix_pathinfo

请老大指点。。。

作者: wmsh   发布时间: 2009-02-20

今天碰到这个问题  很基础的问题我也搞不懂  也解决不了  不过感觉那位兄弟说那样跟客户解释  让人很恐怖  难道到了今天  官方都没法解决这个问题么  这个问题不解决  感觉不太敢继续用了  灭了哥对thinkphp的热情......

作者: pyzheng   发布时间: 2011-09-13