Function 登录时没有响应
我是CodeIgniter的新手,在使用PHPMyAdmin数据库在注册表中使用用户名和密码注册后,我正在尝试编写代码以登录。当我尝试登录时,我没有得到任何信息,并且它不会显示错误或任何消息Function 登录时没有响应,function,codeigniter,login,controller,Function,Codeigniter,Login,Controller,我是CodeIgniter的新手,在使用PHPMyAdmin数据库在注册表中使用用户名和密码注册后,我正在尝试编写代码以登录。当我尝试登录时,我没有得到任何信息,并且它不会显示错误或任何消息 public function login() { $this->form_validation->set_rules('username','Username','required'); $this->form_validation->set_rules('p
public function login() {
$this->form_validation->set_rules('username','Username','required');
$this->form_validation->set_rules('password' , 'Password');
if($this->form_validation->run() == TRUE){
//check user in database
$this->db->select('username' , 'password');
$this->db->from('user_register');
$this->db->where(array('username' => $username, 'password' => $password));
$query = $this->db->get();
$user = $query->row();
if($user->email){
$this->session->set_flashdata("Successful login");
$_SESSION['user_logged'] = TRUE;
$_SESSION['username'] = $user->username;
} else {
$this->session->set_flashdata("Error No such record found");
}
}
// load view and showing login form
$this->load->view('login');
}
首先,您应该阅读文档,看起来您跳过了这一部分,但这非常重要 让我们编写一点代码并修复错误 用户数据 好的,用户将输入他们的数据,我们将检查,如果所有内容都正确,我们可以将用户重定向到受保护的页面。您调用变量(请参阅Query:),但我在代码中没有看到您。在查询作业之前,您应该这样做
$username = $this->input->post("username");
$password = $this->input->post("password");
现在,您将能够使用where
获取用户数据。=)
查询:
如果阅读了关于PHP的OOP,您就会知道,当您将参数传递给一个方法时,每个参数都有自己的“动作”。在使用select
方法的情况下,您应该将要选择的数据保留在同一个引号中,因为按照您的方式,这就像将多个参数传递给该方法一样
$this->db->select('username, password');
$this->db->from('user_register');
$this->db->where(array('username' => $username, 'password' => $password));
首先,要确定记录是否存在,我更喜欢这种方式:
if($query->num_rows() > 0) {
$user_data = $query->row();
// We should verify if the user entered the password that correspond to the account.
// If not, we tell them that the password is incorrect.
if($password != $user_data->password) {
$this->session->set_flashdata("error", "Wrong password!");
return redirect(site_url());
}
// You can use the CI built in methods to work with sessions
$this->session->set_userdata(array(
'username' => $user_data->username,
));
$this->session->set_flashdata("success", "You are logged in!");
return redirect(site_url());
} else {
$this->session->set_flashdata("Error: No such record found");
redirect(site_url());
}
闪存数据
是的,我们使用flashdata为用户显示消息。但是,您应该传递一个项
和该项的值
。就像这样:
$this->session->set_flashdata('success', 'Successfully logged in!");
而且,要检索视图上的数据,可以执行以下操作
<?php
$success = $this->session->flashdata("success");
$error = $this->session->flashdata("error");
if(!empty($success)) {
echo $success;
}
if(!empty($success)) {
echo $error;
}
?>
建议
- 会议:
- 数据库:
- 用于处理post数据和验证的用户控制器
- 使用模型进行数据库查询
- 使用
加载通用模型或库\u construct
- 不要使用md5或其他加密技术保存平面密码李>
- 将用户详细信息存储到会话中,您可以在登录后在中进一步使用李>
- Codeigniter有一个很好的用户指南。试着去做
我没有添加与flash数据相关的详细信息,因为前面的答案已经对其进行了正确的解释。当您说“使用PHPMyAdmin数据库”时,您的意思是您直接在PHPMyAdmin中的用户记录中输入了用户名和密码吗?是,在使用注册表时,我添加了用户名和密码。因此,我只是从数据库中的注册表中取出用户名和密码…并使用这两个字段尝试登录..在保存密码时,CodeIngniter是否对密码进行哈希处理?不,它没有对密码进行哈希处理,,只显示原始密码,很好的建议@站长请帮我摆脱url。我不知道如何调用以及需要调用控制器的方法。就像我创建了两个函数登录并忘记了…如何调用url来显示这两个函数。当然,但是首先用这个新的控制器函数更新你的问题
忘记@FerozKhan
public function __construct() {
parent::__construct();
// Load model
$this->load->model('login_database');
}
public function your_controller_function_name() {
// Check validation for user input in SignUp form
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean');
if ($this->form_validation->run() == FALSE) {
$this->load->view('login_form_view');
} else {
$username = $this->input->post("username");
$password = $this->input->post("password");
$result = $this->login_database->registration_insert($username, $password);
//You can do this also if($result != FALSE)
if (!empty($result)) {
// You can set other data to the session also form here
$session_data = array(
'username' => $result['user_name']
);
// Add user data in session
$this->session->set_userdata('logged_in', $session_data);
// You can set flash data here
$this->load->view('your_view');
} else {
$data = array(
'error_message' => 'Invalid Username or Password'
);
$this->load->view('your_login_form_view', $data);
}
}
}
// Read data using username and password
public function login($username, $password) {
$this->db->select('username');
$this->db->from('user_register');
$this->db->where(array('username' => $username, 'password' => $password));
$query = $this->db->get();
$user_data = $query->row_array();
if ($query->num_rows() == 1) {
return user_data;
} else {
return false;
}
}