我的用户表:
查看:
<div class="container">
<div class="row">
<div class="col-md-3">
</div>
<div class="col-md-6">
<?php
$message = $this->session->flashdata('message');
$form_error = $this->session->flashdata('error');
?>
<div class="lg-md-2" align="center"><?php if(isset($message)){ echo $message; }?></div>
<form method="post" action="<?php echo base_url();?>account/login">
<div class="form-group">
<label for="username">Username</label>
<input class="form-control" id="username" name="username" type="text">
<div id="form_error"><?php echo $form_error['username']; ?></div>
</div>
<div class="form-group">
<label for="Password">Password</label>
<input class="form-control" id="password" name="password" type="password">
<div id="form_error"><?php echo $form_error['password']; ?></div>
</div>
<button type="submit" class="btn btn-primary btn-block">Submit</button>
</form>
<div class="text-center">
<a class="d-block small mt-3" href="<?php echo base_url();?>pages/register_user">Register an Account</a>
</div>
</div>
<div class="col-md-3">
</div>
</div>
</div>
</body>
控制器:
public function login(){
$this->form_validation->set_rules('username', 'Username', 'trim|required');
$this->form_validation->set_rules('password', 'Password', 'trim|required');
if($this->form_validation->run() == FALSE){
$form_error = array('username' => form_error('username'),
'password' => form_error('password'));
$this->session->set_flashdata('error',$form_error);
redirect('pages/login_user');
}else{
$data = array('username' => $this->input->post('username'),
'password' => $this->input->post('password'));
$result = $this->account_model->login_account($data);
if($result ){
$new_session = array('username' => $result,
'is_logged_in' => TRUE);
$this->session->set_userdata($new_session);
//redirect('pages/view_home');
}else{
$message = $this->session->set_flashdata('message', 'Incorrect Password');
redirect('pages/login_user');
}}
}
型号:
public function login_account($data){
$query = $this->db->get_where('users', array('username' => $data['username']))->result();
if($query){
foreach($query as $row){
if(password_verify($data['password'], $row->password)){
return $row->username;}else{ return FALSE;}}
}else{ return FALSE; }
}
我的问题是,如果函数失败,如果密码不正确或者用户名不存在,我想要具体说明。
在我的模型中,两个场景我都返回FALSE。还是我必须返回字符串?如,返回&#39;用户名&#39;对于无效的用户名和返回密码&#39;对于不正确的密码,只需更改控制器中的if语句以匹配该密码并发送相应的消息。
还是有更好的方法吗?我一直想起尝试捕获,但我还没有真正使用它,所以如果它是一个更好的方式然后我会这样做,但有人可以在这里发布代码作为参考。
或者最好不要具体说明它,只是输入消息为“无效的用户名/密码”。对于这两个实例并让用户弄明白吗?
答案 0 :(得分:0)
具体提示用户,用户名或密码不正确是不正确的。如果您推荐谷歌或脸书等知名网站,他们不会告诉您哪一个不正确。因此,请尝试将错误显示为Username or password are incorrect
。