Возврат redirect () не приводит меня к желаемому методу - PullRequest
5 голосов
/ 21 апреля 2019

Я создаю блог в CodeIgniter 3. Я хочу перенаправить с одного контроллера на другой контроллер, когда пользователь аутентифицирован, но redirect() не работает.

Я перепробовал все решения, приведенные в Переполнение стекано никто не работает для меня.Проверьте мой код и скажите, где проблема.Заранее спасибо.

MY_Controller - это мой основной контроллер, расширенный с CI_Controller.

Login_c.php

class Login_c extends MY_controller {

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

    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();
        }
    }
}

admin_c.php

<?php
// ob_start();

class Admin_c extends MY_Controller {
    public function dashboard() {
        $this->load->view('public/admin_dashboard');
    }
}

config.php

$config['base_url'] = "http://localhost/ci_blog";

Ошибка

Внутренняя ошибка сервера HTTP 500

1 Ответ

0 голосов
/ 21 апреля 2019

Для этого может быть много причин.Во-первых, вы можете диагностировать проблему, используя ошибки отображения

Если вы уроните

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');

Мне нравится использовать глобальные переменные вместо использования переменной site_url внутри функциипотому что я склонен использовать их по всему сайту.

Если худшее приходит к худшему, вы всегда можете запустить редирект PHP, используя

header("Location: http://example.com/mypage.php");

Я знаю, что это было очень долго, но я надеюсь, что это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...