2010-10-27 4 views
1

Я пытаюсь создать скрипт входа в CodeIgniter, но у меня есть только пустая страница.CodeIgniter: я не могу войти

Я хочу, чтобы он сказал, что «имя пользователя или пароль неверно», и если имя пользователя и пароль верны, он должен установить для сеанса значение true. Я надеюсь, что кто-то может мне помочь.

Вот мой код:

<?php 

class Login extends Controller { 

    function index() 
    { 

     if ($this->_submit_validate() === FALSE) { 
      $this->index(); 
      return; 
     } 


    } 

    private function _submit_validate() 
    { 
     $this->form_validation->set_rules('username', 'Username', 
      'trim|required|'); 

     $this->form_validation->set_rules('password', 'Password', 
      'trim|required'); 

     return $this->form_validation->run(); 
    } 


    function is_logged_in() 
    { 
     $is_logged_in = $this->session->userdata('is_logged_in'); 
     if(!isset($is_logged_in) || $is_logged_in != true) 
     { 
      echo 'Du har ikke adgang til denne side'; 
      die();  
      //$this->load->view('login_form'); 
     }  
    } 

} 

А вот мой вид файла:

 <h3>Medlem login</h3><br> 
     <?php 
     echo form_open('login/'); 
     echo validation_errors('<p class="error">'); 
     echo form_input('username', 'Username'); 
     echo form_password('password', 'Password'); 
     echo "<br />"; 
     echo form_submit('submit', 'login'); 
     echo anchor('signup', 'Opret Account'); 
     echo form_close(); 
     ?> 

ответ

0

Ваш код совершенно неправильно и не соответствует RESTful шаблону. Для начала, ваша функция индекса заставит ваш скрипт блокировать:

function index() 
{ 

    if ($this->_submit_validate() === FALSE) { 
     $this->index(); 
     return; 
    } 


} 

Вместо вызова функции индекса снова на провал, вы должны загрузить ваш взгляд на форму. Затем добавьте условие else в случае успешного завершения проверки. Как:

function index() 
{ 

    if ($this->_submit_validate() === FALSE) { 
     $this->load->view('view_form'); 
    } else { 
     $this->function_to_set_session(); 
    } 
} 

В function_to_set_session(), вы бы тогда сделать что-то вдоль этих линий:

function login(){ 
    // set session vars 
    $this->session->set_flash('flash_message_to_show_after_reload'); // this is the message on succes 
    redirect('path_to_redirect'); 
} 

я сообразить вы только знакомитесь с CodeIgniter? Если это так, я советую следовать учебнику.

+0

hm im new, и я следую некоторым учебникам, но все делают это по-другому: S, – Simon

+0

, но я хочу сделать, если имя пользователя или пароль ошибочны, и он получает ошибку «неправильное имя пользователя os password», поэтому нет загрузки нового файла представления – Simon

+0

Но чтобы показать что-нибудь на вашем экране, вам нужно загрузить представление! Поэтому в случае ошибки перезагрузите представление формы и используйте form_helper для CodeIgniter, чтобы показать ошибки. В случае успеха установите свои переменные сеанса и перенаправьте своего пользователя на правильную страницу. Вот как ваш поток должен работать. – thomaux

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