2013-12-15 4 views
0

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

Таким образом, у меня есть модель входа в систему, просмотр и контроллер и контроллер verifylogin. Проблема заключается в том, что она всегда проверяет форму как неверный логин, я не знаю, почему:

Войти Контроллер

<?php if (!defined('BASEPATH')) exit('Acceso no autorizado'); 

class Login extends CI_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
    } 

    function index() 
    { 
     $datos = array(
      'home_name' => $this->config->item('home_name'), 
      'root_path' => $this->config->item('root_path') 
     ); 

     $this->load->helper('form'); 

     // Menú principal 
     $this->load->view('menu', $datos); 

     // TODO: Put your code here... 
     $this->load->view('login', $datos); 

     // Cierre html 
     $this->load->view('cierre', $datos); 
    } 
} 
?> 

Войти Просмотр

<div id='content-login'> 
    <div class='container'> 
     <div id='logo' class='login buscadores'> 
      <span class='icon icon-lock'></span> 
      <h1>Inicia sesión</h1> 
      <p>Accede como usuario a <?php echo $home_name?></p> 
     </div> 

     <div> 
      <div id='buscadores' class='container'> 
       <div class='content'> 
        <?php echo validation_errors(); ?> 
        <?php echo form_open('verifylogin'); 
         $datos = array(
           'name' => 'username', 
           'placeholder' => 'Usuario', 
           'class' => 'text', 
           'size' => '25' 
          ); 
         echo form_input($datos); 

         $datos = array(
           'name' => 'password', 
           'placeholder' => 'Contraseña', 
           'class' => 'text', 
           'size' => '25' 
          ); 
         echo form_password($datos); 

         $datos = array(
            'id' => 'login', 
            'name' => 'login', 
            'value' => 'Login', 
            'class' => 'button cursor' 
           ); 
         echo form_submit($datos); 
        ?> 
       </div> 
      </div> 
     </div> 
    </div> 
</div> 

Войти Модель

<?php 
class User extends CI_Model 
{ 
    function login($username, $password) 
    { 
     $this->db->select('id, username, password'); 
     $this->db->from('users'); 
     $this->db->where('username', $username); 
     $this->db->where('password', MD5($password)); 
     $this->db->limit(1); 

     $query = $this->db->get(); 

     return ($query->num_rows() == 1) ? $query->result() : false; 
    } 
} 

VerifyLogin Контроллер

<?php if (!defined('BASEPATH')) exit('Acceso no autorizado'); 

class VerifyLogin extends CI_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
     $this->load->model('user', '', TRUE); 
    } 

    function index() 
    { 
     $this->load->library('form_validation'); 

     $this->form_validation->set_rules('username', 'Usuario', 'trim|required|xss_clean'); 
     $this->form_validation->set_rules('password', 'Contraseña', 'trim|required|xss_clean|callback_check_database'); 

     if ($this->form_validation->run() == FALSE) 
     { 
      /*$datos = array(
       'home_name' => $this->config->item('home_name'), 
       'root_path' => $this->config->item('root_path') 
      ); 

      $this->load->helper('form'); 
      $this->load->view('menu', $datos); 
      $this->load->view('login', $datos); 
      $this->load->view('cierre', $datos);*/ 
      echo "error en login"; // IT ALWAYS ENDS UP HERE........ 
     } 
     else 
     { echo "login correcto"; // NEVER HERE 
      //redirect('portada', 'refresh'); 
     } 
    } 

    function check_database($password) 
    { 
     $username = $this->input->post('username'); 

     $result = $this->user->login($username, $password); 

     if ($result) 
     { 
      $sess_array = array(); 
      foreach($result as $row) 
      { 
       $sess_array = array(
        'id' => $row->id, 
        'username' => $row->username 
       ); 
       $this->session->set_userdata('logged_in', $sess_array); 
      } 
      return true; 
     } 
     else 
     { 
      $this->form_validation->set_message('check_database', 'Usuario o contraseña inválidos'); 
      return false; 
     } 
    } 
} 
?> 
+0

Смешная вещь, мой друг работает точно такой же веб-сайт в localhost, и для него это работает, но это не для меня. На самом деле он получил ошибку, которую я не получил, и просто загрузив библиотеку сеансов в контроллер контроллера verifylogin, она ушла и отлично работает ... – kpagcha

+0

Если это работает на него, а не на вас, это может быть проблема с настройкой базы данных. Вы проверили свои журналы, чтобы узнать, что-то выпрыгивает? – Zarathuztra

+0

Я экспортировал свой sql, и он импортировал его в свою базу данных, это точно такие же данные. – kpagcha

ответ

0

Я не думаю, что вы когда-либо позволить CodeIgniter захватить ваш пароль в первую очередь потому, что вам не хватает помощника импорта (само собой разумеющееся я думаю, что это будет сгенерировано сообщение об ошибке в какой-то так проверить журналы)

Кроме того, вы можете нагружать этот помощник в вашем autoload.php конфигурации

Используйте это в вашем контроллере проверки

$this->load->helper(array('form', 'url'));

все документы, предположим, один и тот же контроллер и функцию для проверки (что делает много смысла, когда вы думаете об этом, до тех пор, пока вы не написать 20 строк кода для обработки вещей и отдельных выход в дискретные бит функциональности)

+0

Что вы имеете в виду? $ password - это аргумент функции check_database. – kpagcha

+0

Извините, пропустил этот. Позвольте мне переделать это. – Zarathuztra

+0

Оставьте свой комментарий к моему основному сообщению. – kpagcha

1

Я наконец нашел решение. Перезаписать модуль Apache необходимо, чтобы он был активным, но это не так.

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