2015-12-19 6 views
2

Я после этого учебника по простой авторизации с использованием CodeIgniterCodeigniter: Form_Open переадресовывает к пустой странице

http://www.iluv2code.com/login-with-codeigniter-php.html.

Всякий раз, когда я нажимаю кнопку входа в систему, я перенаправляюсь на пустую страницу вместо того, чтобы попасть в контроллер «verifylogin». Я попытался изменить form_open ('verifylogin'), чтобы сформировать action = "verifylogin", чтобы убедиться, что он достигает verifylogin. Он достигает verifylogin, но, похоже, не может выполнять правильные функции. Почему это так? Почему я переадресован на пустую страницу при отправке формы? Спасибо!

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

class Login extends CI_Controller { 

function __construct() { 
    parent::__construct(); 
} 

function index() { 

    $this->load->helper(array('form')); 
    $this->load->view('login_view'); 
} 

} 

?> 

Посмотреть

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <title>Simple Login with CodeIgniter</title> 
    </head> 
    <body> 
     <h1>Simple Login with CodeIgniter</h1> 
     <?php echo validation_errors(); ?> 
     <?php echo form_open('verifylogin'); ?> 
     <label for="username">Username:</label> 
     <input type="text" size="20" id="username" name="username"/> 
     <br/> 
     <label for="password">Password:</label> 
     <input type="password" size="20" id="passowrd" name="password"/> 
     <br/> 
     <input type="submit" value="Login"/> 
     </form> 
    </body> 
</html> 

Контроллер

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

class VerifyLogin extends CI_Controller { 

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

    function index() { 

    //This method will have the credentials validation 
    $this->load->library('form_validation'); 

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

    if($this->form_validation->run() == FALSE) { 

     //Field validation failed. User redirected to login page 

     $this->load->view('login_view'); 

    } else { 

     //Go to private area 
     redirect('home', 'refresh'); 
    } 

    } 

    function check_database($password) { 

     //Field validation succeeded. Validate against database 

     $username = $this->input->post('username'); 

     //query the database 
     $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', 'Invalid  username or password'); 
      return false; 

     } 

    } 

} 

?> 
+0

добавить 'error_reporting (E_ALL)'. Я думаю, что у вас есть ошибка. –

+0

Извините, где я его добавлю? –

+0

Какая версия используемого вами кодерификатора может отличаться от того, что такое учебное пособие, потому что codeigniter 3 много изменений. – user4419336

ответ

0

изменить это:

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

к:

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

xss_clean, вероятно, вызывает проблему, надеюсь, что это поможет. Также убедитесь, что вы не настроили файл .htaccess, чтобы удалить index.php с адреса, который вам нужно использовать. form_open('index.php/verify_login')

0

Вы загружали url helper ??

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

проверить его и дайте мне знать, пожалуйста

2

иногда index.php префикс перед вашей страницы, чтобы избежать этого используйте base_url() функцию перед вызовом страницы в Form_Open(); как: echo form_open(base_url()."contact-us");

но перед использованием base_url(), убедитесь, что вы назвали $ this-> load-> помощник ('URL'); в вашем ассоциированном контроллере.

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