2012-05-25 4 views
0

я был создать контроллер CodeIgniter так:недостающее Войти страницу, когда перенаправлять

function Home() { 
    parent::Controller(); 
    if(!$this->session->userdata('id')) 
     redirect ('login'); 
    $this->load->model('Home_Model'); 
} 

, но когда я пытаюсь получить доступ к странице, на странице Перенаправление теперь показывают. просто показать 404 не найден, но я создал login.php на контроллере и просмотрел также home_model.php на модели.

какая проблема с этим кодом и как это исправить?

спасибо

+0

Можете ли вы показать код контроллера входа, пожалуйста. ?? – TechCare99

+0

также расскажите нам, какую версию CI вы используете. – Kokers

ответ

1

Из-за этой линии: parent::Controller(), я предполагаю, что вы используете CodeIgniter 1. Так как вы строите страниц как home и login, я предполагаю, что вы начинаете строить новый веб-сайт. Если мои предположения верны, я предлагаю вам использовать последний CodeIgniter (v2.1.0 на данный момент, требуется PHP 5.1.6 или новее). Вы можете получить копию на домашней странице CodeIgniter.

Прежде всего, я думаю, вы должны проверить свой уровень отчетности об ошибках. Для отладки должно быть что-то вроде error_reporting(E_ALL);. Если это еще не сделано, включите его и снова запустите код. Возможно, после этого вы получите свой собственный ответ:

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

function Home() 
{ 
    parent::Controller(); 
    echo 'Home Class Initialized'; 
} 
  1. Он должен по крайней мере показать страницу 404. Если он ничего не распечатывает, нам нужна дополнительная информация. Может быть, вы должны включить ведение журнала и анализировать лог-файлы: ищет /application/config/config.php: $config['log_threshold'] = 2;

  2. Если распечатать последующие «Home Class инициализируется» на 404 сообщении: пожалуйста, проверьте, если ваш контроллер что-то вроде:

    public function index() 
    { 
        echo 'Invoke default method'; 
    } 
    

    Если еще нет, то добавьте его. Вы также можете взглянуть на свой собственный метод по умолчанию here

    Если это все еще 404, то извините, я понятия не имею. Возможно, вам стоит разместить больше кода.

  3. Если он распечатывает только «Инициализированный класс дома»: хорошо. Теперь попробуйте эту

    function Home() 
    { 
        parent::Controller(); 
        if (! $this->session->userdata('id')) 
        { 
         echo 'Redirecting to login page'; 
         //redirect ('login'); 
        } 
        $this->load->model('Home_Model'); 
    } 
    

    Если распечатывают Redirecting to login page, настало время для вас, чтобы раскомментировать //redirect ('login'); и проверьте страницу входа в систему. Следуйте одному и тому же пути с шага 1 & 2. Если нет, проверьте данные сеанса: var_dump($this->session->userdata('id').Вы можете узнать больше о PHP лжи, here

  4. В конце концов, если он по-прежнему не удается, рекомендуется использовать __construct() РНР 5

    function __construct() 
    { 
        parent::__construct(); 
        if (! $this->session->userdata('id')) 
        { 
         redirect ('login'); 
        } 
        $this->load->model('Home_Model'); 
    } 
    

Другое: если вы используете этот $this->load->model('Home_Model');, я думаю, что вы вам нужно будет позвонить home_model, как это $this->Home_Model->foo(); или будет доступ к ошибкам NULL

+0

правильным способом является перенаправление изменений ('login') с перенаправлением ('index.php/login), но ошибка при попытке отправить форму на странице входа. моя форма вроде этого

Смежные вопросы