Home >Backend Development >PHP Tutorial >php的header重定向的域名参数后边可以加路由吗?

php的header重定向的域名参数后边可以加路由吗?

WBOY
WBOYOriginal
2016-06-06 20:47:301256browse

<code><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
session_start();
Class Admin_Controller extends CI_Controller
{
    public function __construct ()
    {
        parent::__construct();

            if(empty($_SESSION['name']))
            {
                header("Location: http://ci.com/admin");
            }
    }
}
</code></code>

结果为:
php的header重定向的域名参数后边可以加路由吗?

如果域名后边不添加admin参数的话是可以正常重定向的!
它会重定向到网站首页,我是想让它重定向到后台登入页面,所以才添加admin参数。

回复内容:

<code><?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
session_start();
Class Admin_Controller extends CI_Controller
{
    public function __construct ()
    {
        parent::__construct();

            if(empty($_SESSION['name']))
            {
                header("Location: http://ci.com/admin");
            }
    }
}
</code></code>

结果为:
php的header重定向的域名参数后边可以加路由吗?

如果域名后边不添加admin参数的话是可以正常重定向的!
它会重定向到网站首页,我是想让它重定向到后台登入页面,所以才添加admin参数。

你的header函数的参数设置没有错误,header后面是可以接受任何地址的。

出现重定向错误的原因是,你在admin这个控制器的构造函数里面进行判断,并试图将其重定向到http://ci.com/admin,而这个地址应该刚好就是你可以用于访问admin控制器的地址,这样就无限循环了。

所以,要么你将后台登入页面放到另外一个控制器中,要么你就不要在构造函数里就进行判断,而是在有需要的页面里分别进行判断,甚至写成一个函数让每个页面一开始都调用这个函数,至少留出后台登入页面不作判断。

这段代码从语法上讲是没问题的, header中的location可以指定任意绝对地址, 加admin也没关系。

可能是浏览器缓存了错误的定向,清空浏览器缓存、header下一行加exit;试试。

如果无效,很可能是当前网址与重定向后的地址相同,进入死循环了。

这就要把判断改成if (empty($_SESSION['name']) && !preg_match('admin', $_SERVER['REQUEST_URI'])), 如果当前页面是将要跳转的就不用跳了, 具体自己实现, 这里只是简写思路。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn