Php 使用Codeigniter验证登录时出现的问题
,使用GET时,数组不是空的,但即使是正确的登录详细信息也不起作用。使用codeigniter在站点中创建登录区域,但密码未正确验证或根本未验证。我已经研究过了,但我不确定为什么这个问题仍然存在。它只是说每个密码都是错的。此外,密码不是通过POST获取的,而是通过GET获取的。这是视图区域:Php 使用Codeigniter验证登录时出现的问题,php,html,forms,codeigniter,validation,Php,Html,Forms,Codeigniter,Validation,,使用GET时,数组不是空的,但即使是正确的登录详细信息也不起作用。使用codeigniter在站点中创建登录区域,但密码未正确验证或根本未验证。我已经研究过了,但我不确定为什么这个问题仍然存在。它只是说每个密码都是错的。此外,密码不是通过POST获取的,而是通过GET获取的。这是视图区域: <div class="panel-heading"> <h3 class="panel-title">Please Sign In&
<div class="panel-heading">
<h3 class="panel-title">Please Sign In</h3>
</div>
<?php if(isset($_SESSION)) {
echo $this->session->flashdata('flash_data');
} ?>
<div class="panel-body">
<form action="<?php echo base_url('Login/index'); ?>" method="POST">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="Username" name="username" type="text" autofocus>
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" name="user_password" type="password" value="">
</div>
<div class="checkbox">
<label>
<input name="remember" type="checkbox" value="Remember Me">Remember Me
</label>
</div>
和型号:
function validate($data){
$this->db->select('id, username');
//$this->db->from('login');
$this->db->where('username', $data['username']);
$this->db->where('user_password', md5($data['user_password']));
$this->db->limit(1);
$res = $this->db->get('login')->result_array();
return $res;
//$query=$this->db->get();
}
function __destruct() {
$this->db->close();
}
首先,您需要关闭视图页面中的表单标记。然后检查,表单数据已发布到控制器 为什么在模型中注释('login')。请在模型中使用此代码来验证数据库中的用户登录数据
function validate($data){
$this->db->select('id, username');
$this->db->from('login');
$this->db->where('username', $data['username']);
$this->db->where('user_password', md5($data['user_password']));
$this->db->limit(1);
$res = $this->db->get();
if($res->num_rows()){
return $res->result_array();
}else{
return;
}
}
首先,您需要关闭视图页面中的表单标记。然后检查,表单数据已发布到控制器 为什么在模型中注释('login')。请在模型中使用此代码来验证数据库中的用户登录数据
function validate($data){
$this->db->select('id, username');
$this->db->from('login');
$this->db->where('username', $data['username']);
$this->db->where('user_password', md5($data['user_password']));
$this->db->limit(1);
$res = $this->db->get();
if($res->num_rows()){
return $res->result_array();
}else{
return;
}
}
使用
代替
$_POST
此外,如果您使用了salt,请确保使用salt输入md5密码
md5($this->config['salt'].$data['user_password'])
使用
代替
$_POST
此外,如果您使用了salt,请确保使用salt输入md5密码
md5($this->config['salt'].$data['user_password'])
检查$data['username']是否是访问帖子数据的正确方法。试着把它打印出来。最好以$this->input->post()的形式发送,代码中没有任何错误。尝试在
匿名窗口中运行项目
。我在我的项目中尝试了精确的代码,它工作正常。在controller中的print\r($result)
上,您得到的结果是什么?MD5不足以进行密码哈希。改为使用和。检查$data['username']是否是访问帖子数据的正确方法。试着把它打印出来。最好以$this->input->post()的形式发送,代码中没有任何错误。尝试在匿名窗口中运行项目
。我在我的项目中尝试了精确的代码,它工作正常。在controller中的print\r($result)
上,您得到的结果是什么?MD5不足以进行密码哈希。改为使用and。这类似于在我取出注释时在get()
中调用表名。它从login.login变成select id,username,其中…当我取出注释时,它类似于get()
中的call table name。它从login.login变成select id,username,其中…它仍然没有使用POST获取值。它只是将数组留空。当我在模型中取出注释($this->db->from('login'))时,它会得到注释,但这会破坏查询。它仍然无法使用POST获得值。它只是将数组留空。当我在模型中取出注释($this->db->from('login'))时,它会得到它,但这会把查询搞砸。