Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.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 代码点火器3重定向功能不工作_Php_Codeigniter_Redirect - Fatal编程技术网

Php 代码点火器3重定向功能不工作

Php 代码点火器3重定向功能不工作,php,codeigniter,redirect,Php,Codeigniter,Redirect,我正在重新编码和更新我的CMS,我在CI2中工作,到了CI3,我的一生都无法让我的重定向功能在CI3中工作 除了重新设计我的模型之外,到目前为止,我的代码与我的CI2代码是相同的。起初我怀疑我的布局钩是罪魁祸首,但我已经完全禁用了他,我仍然一事无成 public function login () { //var_dump(logged_in()); //if (logged_in()) redirect('/user/'); } 以上是目前我的全部登录功能,来

我正在重新编码和更新我的CMS,我在CI2中工作,到了CI3,我的一生都无法让我的重定向功能在CI3中工作

除了重新设计我的模型之外,到目前为止,我的代码与我的CI2代码是相同的。起初我怀疑我的布局钩是罪魁祸首,但我已经完全禁用了他,我仍然一事无成

public function login ()
{
    //var_dump(logged_in());
    //if (logged_in())
        redirect('/user/');
}
以上是目前我的全部登录功能,来自我的用户控制器。为了找出这个问题,我删除了所有其他代码。我甚至注释掉了
if
语句,认为它甚至可能是罪犯所为。没有

My
logged_in()
函数返回TRUE或FALSE,具体取决于在用户会话中设置的某些内容。这似乎运作良好。据我所知,我的配置设置看起来不错。我已经自动加载了URI助手,其他URI助手方法也正常工作

现在来看奇怪的部分。当我访问/user/login时,不仅我的页面没有重定向,如果我在重定向之前取消对
var\u dump()
的注释(返回true),并重新对其进行注释,页面不会更新,而且我的屏幕上也会出现
bool(true)
。如果对
var\u dump
进行了注释,并且我打开了一个新的选项卡,指向
users/login
,那么它根本不会加载任何内容,只是作为一个新选项卡挂起

编辑:我忘了提到,当我使用“刷新”标志(
重定向(“/user/”,“refresh”);
)时,它只会将我带到一个关于:空白的页面

编辑#2:我已将CI3文件复制到一个新的“项目”中,甚至那些文件也不会使用内置的欢迎消息视图/控制器组合重定向

在重定向函数中添加
base\u url()

 redirect(base_url().'user', 'refresh');

经过多次尝试和错误,我发现了我的问题。当我执行
var\u dump(base\u url)
时,我发现我是
$\u SERVER['SERVER\u ADDR']
,因为我在本地工作,那就是::1。我所了解到的是,base_url不像在CI2中那样工作。萨班达

Base\u url
config变量设置不正确。在
config/config.php
my
base\u中,url
是使用单个引号设置的。允许CI3猜测协议,它将默认为
$\u SERVER['SERVER\u ADDR']
,这将返回
::1
,因为我在本地工作。此外,当我将变量设置为
时http://localhost/supersecretname“
,使用单引号时,出现了与使用auto
服务器地址时完全相同的问题

由于睡眠剥夺的奇迹,我在这里尝试了许多不同的值,在某个时候我从单引号切换到双引号

因此,找到了一个解决方案

$config['base\u url']=”http://localhost/supersecretname";

添加ob_start();到控制器

<?php
ob_start();
defined('BASEPATH') OR exit('No direct script access allowed');

class Cart extends CI_Controller {
 // code here

}

您是否遵循了
CI3
中的命名约定?我的所有其他代码函数(到目前为止……)都正确无误,我看不出基于命名约定的重定向为何会如此不起作用。然而,我的
登录
函数是
类用户扩展前\u控制器
的一部分,而
前\u控制器
扩展了
我的控制器
在核心中??我的重定向现在将我带到索引(),它们在哪个控制器中被调用。也没用。对,它在核心。
MY_Controller
文件包含
MY_Controller
Front_Controller
Admin_Controller
。感谢您和那些想知道这一点的人:这通常用于在页面“发送”某些内容之后发送标题(即,在呈现页面的中途决定重定向)在重定向参数url上添加双引号对我也很有效。