用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2478|回复: 7
收起左侧

[HELP] 求助一个登陆验证问题

[复制链接]
发表于 2013-9-6 08:28:48 | 显示全部楼层 |阅读模式
本帖最后由 666 于 2013-9-6 09:20 编辑

打算用CI写一个简单的博客,可是卡在登陆验证这里了,请各位帮助看一下:

问题是:随便输入用户名和密码都可以进入后台

主要代码如下:

Controller: Admin

PHP复制代码
 
<?php
class Admin extends CI_Controller{
 
        public function __construct()
        {
                parent::__construct();
                // $this->load->model('Blog_model');
                $this->load->model('admin_model');
                $this->is_logged_in();
        }
 
        function index()
        {
                $this->load->view('admin/dashbaord');
        }
}
 
复制代码


Controller: Login

PHP复制代码
 
<?php
class Login extends CI_Controller{
 
        function index(){
                $this->load->view('admin/login_form');
        }
 
        function validate_credentials()
        {
                $this->load->model('admin_model');
                $query = $this->admin_model->validate();
 
                if($query)
                {
                        $data = array(
                                'name' => $this->input->post('username'),
                                'is_logged_in' => true
                                );
 
                                $this->session->set_userdata($data);
                                redirect('admin','refresh');
                }
                else
                {
                        $this->index();
                }
        }
 
}
 
复制代码


Model: admin_model

PHP复制代码
 
<?php
class Admin_model extends CI_Model {
 
        function __construct()
    {
        parent::__construct();
    }
 
        function validate()
        {
                $this->db->where('name',$this->input->post('username'));
                $this->db->where('password',MD5($this->input->post('password')));
                $query = $this->db->get('admin');
 
                if($query->num_rows = 1)   // 自己琢磨着解决了 此处修改为  if($query->num_rows() > 0)  
                {
                        return true;                  // 此处修改为  $query = true;
                                                            //                     return $query;
                }
        }
 
}
 
复制代码


View: admin/login_form

HTML复制代码
 
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charest=utf-8">
  <title>Login</title>
  <link rel="stylesheet" href="<?php echo base_url();?>css/login-style.css" type="text/css" media="screen" title="no title" charest="utf-8">
</head>
<body>
 
  <div id="login_form">
  <h1>Login</h1>
  <?php
 echo form_open('login/validate_credentials');
 echo form_input('username','Username');
 echo form_password('password','Password');
 echo form_submit('submit','Login');
 ?>
 
</body>
</html>
 
复制代码

 楼主| 发表于 2013-9-6 08:47:07 | 显示全部楼层
@Hex 老大 帮我看看吧
发表于 2013-9-6 09:20:10 | 显示全部楼层
admin_model里的
if($query->num_rows = 1)
                {
                        return true;
                }
这句话判断是错误的
1.获取结果数应该是$query->num_rows();
2.对比应该是==不是=,用=号的话是永远成立的,所以你用什么帐号都会通过验证

评分

参与人数 1威望 +10 收起 理由
666 + 10 谢谢 问题解决!呵呵 新手学习 概念太差.

查看全部评分

 楼主| 发表于 2013-9-6 09:21:41 | 显示全部楼层
kinwyb 发表于 2013-9-6 09:20
admin_model里的
if($query->num_rows = 1)
                {

谢谢指点
发表于 2013-9-6 13:17:20 | 显示全部楼层
用这个:
PHP复制代码
$query->num_rows
复制代码

CI会报错吧。。。
 楼主| 发表于 2013-9-6 13:29:47 | 显示全部楼层
本帖最后由 666 于 2013-9-6 13:32 编辑
dren_a 发表于 2013-9-6 13:17
用这个:

CI会报错吧。。。
PHP复制代码
 
if($query->num_rows = 1)
 
复制代码


一开始这个还真没报错。。。但是会全部通过验证

PHP复制代码
 
if($query->num_rows() == 1)
 
复制代码


这样就解决了
发表于 2013-9-6 13:53:50 | 显示全部楼层
666 发表于 2013-9-6 13:29
一开始这个还真没报错。。。但是会全部通过验证

我当初忘了写括号他就报错了。。。
发表于 2014-1-27 12:23:43 | 显示全部楼层
本帖最后由 一路绝尘 于 2014-1-27 12:28 编辑
kinwyb 发表于 2013-9-6 09:20
admin_model里的
if($query->num_rows = 1)
                {

求教一下,$query->num_rows == 1 为什么能代表密码和用户名一样了?

哦我明白怎么回事了。。。。晕了

本版积分规则