Php 代码点火器3重定向功能不工作
我正在重新编码和更新我的CMS,我在CI2中工作,到了CI3,我的一生都无法让我的重定向功能在CI3中工作 除了重新设计我的模型之外,到目前为止,我的代码与我的CI2代码是相同的。起初我怀疑我的布局钩是罪魁祸首,但我已经完全禁用了他,我仍然一事无成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/'); } 以上是目前我的全部登录功能,来
public function login ()
{
//var_dump(logged_in());
//if (logged_in())
redirect('/user/');
}
以上是目前我的全部登录功能,来自我的用户控制器。为了找出这个问题,我删除了所有其他代码。我甚至注释掉了if
语句,认为它甚至可能是罪犯所为。没有
Mylogged_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
mybase\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上添加双引号对我也很有效。