首頁 >後端開發 >php教程 >php的header重定向的域名参数后边可以加路由吗?

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

WBOY
WBOY原創
2016-06-06 20:47:301251瀏覽

<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'])), 如果当前页面是将要跳转的就不用跳了, 具体自己实现, 这里只是简写思路。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn