Я пытаюсь сделать логин с 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;
}
}
}
?>
Смешная вещь, мой друг работает точно такой же веб-сайт в localhost, и для него это работает, но это не для меня. На самом деле он получил ошибку, которую я не получил, и просто загрузив библиотеку сеансов в контроллер контроллера verifylogin, она ушла и отлично работает ... – kpagcha
Если это работает на него, а не на вас, это может быть проблема с настройкой базы данных. Вы проверили свои журналы, чтобы узнать, что-то выпрыгивает? – Zarathuztra
Я экспортировал свой sql, и он импортировал его в свою базу данных, это точно такие же данные. – kpagcha