Редирект в PHP Codeigniter - PullRequest
2 голосов
/ 10 ноября 2011

У меня есть некоторые проблемы с использованием Code Igniter, и я чувствую, что есть кое-что, чего я не понимаю, потому что я не могу заставить мои перенаправления и мои заголовки работать.Вот ситуация:

При входе на сайт вызывается «home» контроллер по умолчанию.

    public function initialize()
{
    printf("CONSTRUCTION OF HOME CONTROLLER - \n");
     //   print_r($_SESSION);
        //TODO : CONSIDER CREATING A LIBRARY TO AVOID WRITING THIS OFTEN. NOT

    // SESSION TROLLING DETECTION
        if( isset($_SESSION['banana']))
        {
            echo "SPLITTING THE TRUTH";
        }   

   // GETTING AS SERIOUS AS GREG     
        if( !isset($_SESSION['username']))
        {
            printf("USERNAME IS NOT SET. SETTING UP THE LOGIN PAGE. \n");
            redirect('home_invite');
        }
        else
        {
            $this->load->view('welcome_message');
        }
}

public function index()
{
    //INITIALIZING THE PATH USED FOR THIS NAVIGATION
    printf("TROLLING THE BEGINNING OF THIS CONTROLLER HOME - ");
     $this->initialize();
     printf("TROLLING THE END OF THIS CONTROLLER  HOME - ");
   //TODO : CONSIDER CREATING A LIBRARY TO AVOID WRITING THIS OFTEN
}

Вызовы indexize инициализируют, которые проверяют, есть ли у пользователя уже переменная сеанса с именем пользователя вЭто.Если это так, мы переходим к проверке его уровня привилегий и т. Д. И загружаем соответствующее представление.Это не проблема.

Если сеанс не запущен, я хочу загрузить представление «login», которое здесь называется «home_invite».И я хочу перенаправить его на эту страницу.Но если я использую этот код, на странице будет отображаться ошибка 404.

Если я использую $this->load->view('home_invite'), это работает, но я не понимаю, и я чувствую, что это не то, что я хочу сделать,

Почему перенаправление не работает в этом контексте?

1 Ответ

5 голосов
/ 10 ноября 2011

Использование метода redirect() перенаправляет на URL.Поэтому вам необходимо передать ему полный URL-адрес (поскольку он использует функцию header(), которая в соответствии с RFC для HTTP1.1 требует полного URL-адреса.

Это означает, что вы можете использовать

redirect(site_url('home_invite'));

, который перенаправит вашего пользователя на http://www.yoursite.com/home_invite

Это означает, что у вас должен быть доступный контроллер home_invite, поскольку вы не можете загрузить представление с URL-адреса. Точно так же вы можете создать метод в существующемконтролер и используйте файл rout.php для маскировки / your_controller / home_invite как / home_invite

Функция site_url() также является частью помощника URL, который вы уже включили для использования redirect().

Если вы не хотите использовать site_url(), вы также можете жестко закодировать URL-адрес следующим образом:

redirect('http://www.yoursite.com/home_invite');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...