2014-09-12 4 views
0

У меня есть сценарий входа в систему, и когда логин успешно завершен, я хочу, чтобы он перенаправлял их на домашнюю страницу (welcome_message.php), по какой-то причине он не связывает меня с этим файлом, вместо этого выдает 404 и говорит "The requested URL "http://localhost/musiclear/index.php/views/welcome_message" cannot be found or is not available. Please check the spelling or try again later."Перенаправление проблем с CodeIgniter

Я использую функцию CodeIgniters redirect() для изменения.

function validate_credentials() { 

    $this->load->model('membership_model'); 
    $query = $this->membership_model->validate(); 

    if ($query) { // if users credentials validated 
     $data = array('usernames' => $this->input->post('username'), 
     'is_logged_in' => true); 

     $this->session->set_userdata($data); //set session data 
     redirect('welcome_message'); //redirect to home page 
    } else { //incorrect username or password 
     $this->index(); 
    } 
} 
+0

Просто подсказка, но вы должны (если можете) настроить свой файл .htaccess для маршрутизации запросов через index.php, чтобы вы могли удалить его из своих URL-адресов. Это заставляет их выглядеть ужасно! – twistedpixel

+0

Как я могу это сделать? Im new to phgp – Divergent

+0

См. Здесь https://ellislab.com/codeigniter/user-guide/general/urls.html и найдите «Удаление файла index.php». Это довольно просто, даже если вы ничего не знаете о файлах htaccess. – twistedpixel

ответ

0

Попробуйте передавая полный URI функции переадресации следующим образом:

redirect(base_url('views/welcome_message')); 

Предполагая, конечно, что ваш контроллер Views и страница (функция) является welcome_message

+0

Неужели это и не поработало, все равно бросил то же сообщение – Divergent

+0

У вас есть контроллер, настроенный в каталоге приложений/контроллеров? – twistedpixel

+0

Мой контроллер называется welcome.php, он имеет функцию home() в нем, которая меняет вид на welcome_message – Divergent

0

Вы не можете перенаправить браузер до view файл напрямую, но вы можете перенаправить его на controller, в котором будет отображаться ваш вид. В вашем примере Вы пытаетесь получить доступ к CodeIgniter (который находится в папке musiclear на вашем localhost) Controller с именем views и вызывать метод welcome_message(). Но если Ваш действительно хочет, чтобы показать его Вы должны иметь следующую структуру:

musiclear/ 
     Application 
      Controllers 
        views.php 

и views.php содержание:

<?php 

if (!defined('BASEPATH')) 
    exit('No direct script access allowed'); 

class Views extends CI_Controller { 

    function index() { 
     // default action, required method 
    } 

    function welcome_message(){ 
     $this->load->view('welcome_message'); 
    } 
} 
?> 
0

на самом деле, когда вы делаете редирект в CodeIgniters это выглядит для вашего контроллера и вы должны просмотр нагрузки через функцию контроллера. например:

function validate_credentials() { 

     $this->load->model('membership_model'); 
     $query = $this->membership_model->validate(); 

     if ($query) { // if users credentials validated 
      $data = array('usernames' => $this->input->post('username'), 
      'is_logged_in' => true); 

      $this->session->set_userdata($data); //set session data 
      redirect(base_url().'home/welcome'); //redirect to home function 
     } else { //incorrect username or password 
      $this->index(); 
     } 
    } 

    function welcome(){ 
    $this->load->view('welcome_mesage'); 
} 
+0

Ни один из этих методов не работает для меня – Divergent

0

Может быть, вы забыли, что redirect() функция работает только для класса контроллера, т.е.. пусть у вас есть welcome класса, так что вы можете перенаправить его с помощью

redirect('wolcome'); 

вы также перенаправлять функцию класса контроллера

если вы хотите перенаправить к page функции класса welcome контроллера, так что вы будете writr

redirect('welcome/page'); 
Смежные вопросы