Я следую http://www.youtube.com/watch?v=ua1pWx8WjFM при создании регистрации. В течение очень долгого времени я пытался найти причину, по которой я могу зарегистрировать любое количество одинаковых имен пользователей, в то время как код и все остальное выглядит одинаково и работает правильно в видео.
Моя модель "user_model":
function register_user($username, $password, $name, $email)
{
$sha1_password = sha1($password);
$query_str = "INSERT INTO registration (username, password, name, email) VALUES (?, ?, ?, ?)";
$this->db->query($query_str, array($username, $sha1_password, $name, $email));
}
function username_check($username)
{
$query_str = "SELECT username from registration where username = ?";
$result = $this->db->query($query_str, $username);
if ($result->num_rows() > 0)
{
//username exists
return true;
}
else
{
//username doesn't exist
return false;
}
}
}
контроллер "user.php":
function User()
{
parent::__construct();
$this->load->model('User_model');
}
function index()
{
//$this->load->model('User_model');
$this->register();
}
function register()
{
//$this->load->model('User_model');
$this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Username', 'trim|required|alpha_numeric|min_length[6]|xss_clean|callback_username_not_exists');
$this->form_validation->set_rules('name', 'Name', 'trim|required|alpha_numeric|min_length[6]|xss_clean');
$this->form_validation->set_rules('email', 'Email Address', 'trim|required|min_length[6]|xss_clean|valid_email');
$this->form_validation->set_rules('password', 'Password', 'trim|required|alpha_numeric|min_length[6]|xss_clean');
$this->form_validation->set_rules('password_conf', 'Password Confirmation', 'trim|required|alpha_numeric|min_length[6]|matches[password]|xss_clean');
if ($this->form_validation->run() == FALSE)
{
//$this->load->model('User_model');
$this->view_data['page_title'] = 'Welcome to a Tutorial';
$this->view_data['page_content'] = 'view_login_form';
$this->load->view('view_register', $this->view_data); //errors
}
else
{
$username = $this->input->post('username');
$name = $this->input->post('name');
$password = $this->input->post('password');
$email = $this->input->post('email');
// $this->load->model('User_model');
$this->User_model->register_user($username, $password, $name, $email);
}
function username_check($username)
{
$this->form_validation->set_message('username_check', 'That %s already exists');
if ($this->User_model->check_username($username))
{
return false;
}
else
{
return true;
}
}
}
}
Итак, что здесь не так?