Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php URL重定向不总是有效吗?_Php_Codeigniter_Redirect_If Statement - Fatal编程技术网

Php URL重定向不总是有效吗?

Php URL重定向不总是有效吗?,php,codeigniter,redirect,if-statement,Php,Codeigniter,Redirect,If Statement,我正在用PHP和CodeIgniter开发一个Web应用程序,我被卡住了:p 这很难解释,所以我用一个例子来说明 我有正常的代码点火器控制器。在该控制器中,我具有如下功能: <?php public function groups($subdomain ='') { $this->load->library('MyLogin'); $user_id = $this->mylogin->logged_in(); if ($subdomai

我正在用PHP和CodeIgniter开发一个Web应用程序,我被卡住了:p 这很难解释,所以我用一个例子来说明

我有正常的代码点火器控制器。在该控制器中,我具有如下功能:

<?php
public function groups($subdomain ='') {

    $this->load->library('MyLogin');
    $user_id = $this->mylogin->logged_in();


    if ($subdomain == '') {
        .....
    } elseif ($subdomain == 'create') {
        .....
    } elseif ($subdomain == 'join') {
        .....
    } elseif ($subdomain == 'leave') {
        .....
    } elseif ($subdomain == 'assign') {
        .....
    } else {
        .....
    }
}
echo header("Location: /user/login");
5分钟前,这很有效。现在我创建了一个新的子域“assign”

现在,如果我没有登录并尝试连接到以下URL之一,我总是会被重定向

    localhost/user/groups
    localhost/user/groups/2
    localhost/user/groups/create
    localhost/user/groups/join
    localhost/user/groups/leave
但是如果我连接到

    localhost/user/groups/assign
他尝试加载此页面(由于$user\u id为空,因此无法工作)。 为什么。。。这会发生吗


关于Teifun2

在用户登录时使用$\u会话。。。!因此,即使在刷新和页面更改之后,他也将重新登录。。!空值不会通过。

我建议您通过以下方式修改logged_in()函数:

echo header("Location: /user/login");
为此:

header("Location: /user/login");
exit;

我认为这会解决问题。回音与它无关,它只是多余的。

header()
没有返回值
echo header(…)
完全没有意义。请记录,您使用的
$subdomain
不是子域,而是子目录。@MarcB-Ups:P谢谢会改变这一点,(但并不能解决我的问题)@DanLugg是的:P我来自瑞士,所以我不总是能得到正确的词抱歉,问题是不要一直登录,你是我的英雄:你能解释一下为什么这样做吗?我的意思是为什么它适用于其他3个子目录而不适用于assign?header()函数只会使PHP向浏览器发送一个头值,分配一些值。在某些情况下,这是“位置”值,表示浏览器应重定向到其他位置。在代码级别,header()函数不像return语句,因此它后面的代码将继续执行。由于您通常希望位置头是页面加载的终点,因此最好在任何位置头之后退出。