我正在通过Anthony Viponds Youtube tutorial学习CodeIgniter.在创建和注册和登录系统时,我已完成课程,但有一些问题.
我可以注册哪些可以在DB中看到.因此,出于测试目的,我使用用户名’test’和密码’test’创建了一个帐户,该帐户在MD5哈希中作为098f6bcd4621d373cade4e832627b4f6存储在数据库中.使用在线描述服务有效地存储和解密散列.所以没有类似修剪的问题.
当我尝试登录并将内容发布到validate方法时,我收到了索引页面,这意味着num_rows方法返回0而不是1表示有效登录.
membership_model.php
function validate() {
$this->db->where('username', $this->input->post('username'));
$this->db->where('password', md5($this->input->post('password')));
$query = $this->db->get('users');
print_r($this->db->queries);
if($query->num_rows == 1) {
return true;
}
else {
echo "Wrong";
}
}
的login.php
function validate_credentials() {
$this->load->model('membership_model');
$query = $this->membership_model->validate();
if ($query) {
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
echo 'here #1';
$this->session->set_userdata($data);
redirect('site/members_area');
}
else
{
$this->index();
}
}
如你所见,我也做了一个’here#1’回声,这表明我达到了这一点.但正如我所提到的,它将我重定向到索引,这意味着else在login.php中执行.
所以很明显来自membership_model的validate()没有返回任何TRUE.
我用了
print_r($this->db->queries);
查看输出和实际的SQL查询.
所以输出返回了查询.
SELECT * FROM `users` WHERE `username` = 'test' AND `password` = '098f6bcd4621d373cade4e832627b4f6'
下一步是在phpMyAdmin中运行此查询.哪个返回了结果.这意味着此查询有效.
所以问题是:为什么num_rows返回0而phpMyAdmin中的相同查询返回1(有效结果)?
解决方法:
$query-> num_rows不是方法调用…
$query-> num_rows()是
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。