Php Return redirect()没有将我带到所需的方法

Php Return redirect()没有将我带到所需的方法,php,codeigniter-3,Php,Codeigniter 3,我正在CodeIgniter3中建立一个博客。当用户经过身份验证但redirect()不工作时,我想从一个控制器重定向到另一个控制器 我已经尝试了Stack Overflow中给出的所有解决方案,但没有人适合我。检查我的代码并告诉我问题出在哪里。提前谢谢 MY\u Controller是我的核心控制器从CI\u Controller扩展而来 登录c.php admin_c.php 错误 HTTP 500内部服务器错误 这可能有很多原因。 首先,您可以使用显示错误诊断问题 如果你放弃 error_

我正在CodeIgniter3中建立一个博客。当用户经过身份验证但
redirect()
不工作时,我想从一个控制器重定向到另一个控制器

我已经尝试了Stack Overflow中给出的所有解决方案,但没有人适合我。检查我的代码并告诉我问题出在哪里。提前谢谢

MY\u Controller
是我的核心控制器从
CI\u Controller
扩展而来

登录c.php admin_c.php 错误 HTTP 500内部服务器错误


这可能有很多原因。 首先,您可以使用显示错误诊断问题

如果你放弃

error_reporting(E_ALL);
ini_set("display_errors", 1);
在文档顶部,然后在浏览器中运行它,这可能会返回它不工作的原因

至于
redirect()
函数本身,您是否查看了它需要哪些参数? 我喜欢使用名为PHPStorm的软件,您可以免费试用,在定义函数时,它会告诉您函数需要哪些参数以及顺序。非常有用

如果这些都没有帮助,那么我喜欢使用重定向函数,您可以将其放入文档中,并随时调用

$site_prefix = 'http'; //This could equal http or https depending on your ssl
$site_url = $_SERVER['HTTP_HOST']; //You could replace $_SERVER['HTTP_HOST'] with your actual hostname like 'example.com'

    function redirect_to($page){

            global $site_prefix;
            global $site_url;

            if($page == 'home'){
                header("Location: {$site_prefix}://{$site_url}/");
            }
            elseif($page == ''){
                header("Location: {$site_prefix}://{$site_url}");
            }
            else{
                header("Location: {$site_prefix}://{$site_url}/{$page}");
            }
        }
然后可以像这样调用这个函数

redirect_to('admin/dashboard.php');
或者如果您使用的是漂亮的URL

redirect_to('admin/dashboard');
我喜欢在函数中使用globals而不是
site\u url
变量,因为我倾向于在整个站点中使用globals

如果出现最坏的情况,您可以使用

header("Location: http://example.com/mypage.php");
我知道这很冗长,但我希望它能帮助你使用

  redirect('admin/dashboard.php','refresh');

在构造函数中加载会话库

你的代码应该是

class Login_c extends MY_controller {


public function index() {
    $this->load->helper('form');
    $this->load->view('public/admin_login_v');
}

public function __construct(){
    parent::__construct();
    $this->load->library('session');
}

public function admin_login() {
    $this->load->library('form_validation');
    $this->form_validation->set_rules('username', 'User name', 'required|trim|alpha');
    $this->form_validation->set_rules('password', 'Password' , 'required');

    if($this->form_validation->run()) {
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        $this->load->model('login_model');
        $login_id = $this->login_model->login_valid($username,$password);

        if( $login_id ){
            $this->session->set_userdata('user_id', $login_id);
            return redirect('admin_c/dashboard');

        } else {
            echo "user not authenticated";
        }
    } else {
        $this->load->view('public/admin_login_v');
        // echo validation_errors();
    }
}
}


**在使用redirect()之前不要打印任何内容***

500内部服务器错误
正是您的web服务器在前端显示的内容-它还记录了更多详细信息,以便您找出问题所在。您的Apache、PHP和CodeIgniter日志显示了什么?另外,请注意,您不会返回
重定向()
,而是返回。但是,不要认为这会导致500的错误。您是否尝试过将文件名从admin_c.php更改为admin_c.php
header("Location: http://example.com/mypage.php");
  redirect('admin/dashboard.php','refresh');
class Login_c extends MY_controller {


public function index() {
    $this->load->helper('form');
    $this->load->view('public/admin_login_v');
}

public function __construct(){
    parent::__construct();
    $this->load->library('session');
}

public function admin_login() {
    $this->load->library('form_validation');
    $this->form_validation->set_rules('username', 'User name', 'required|trim|alpha');
    $this->form_validation->set_rules('password', 'Password' , 'required');

    if($this->form_validation->run()) {
        $username = $this->input->post('username');
        $password = $this->input->post('password');
        $this->load->model('login_model');
        $login_id = $this->login_model->login_valid($username,$password);

        if( $login_id ){
            $this->session->set_userdata('user_id', $login_id);
            return redirect('admin_c/dashboard');

        } else {
            echo "user not authenticated";
        }
    } else {
        $this->load->view('public/admin_login_v');
        // echo validation_errors();
    }
}