0

如果检查的管理员登录正确,它应该重定向到仪表板页面,但如果管理员登录正确或不正确,它将转到仪表板页面。如果不正确,则应转到登录页面。

这是代码

<?php 
class Validate extends CI_Model
{
    public function checkdatabase()
    {
        $username=$_POST['username'];
        $password=$_POST['password'];
        //echo $username;
        $this->load->database();
         $query ="select * from adminlogin where name='$username' AND password='$password'";
    $value = $this->db->query($query);
    $data = $value->result();
    return $data;

    }
}
?>

这是控制器中的条件

if($value=$this->validate->checkdatabase()){
    redirect('dashboard', 'refresh');
    }else{
    $this->load->view('admin/login');
    }   
4

2 回答 2

0

您可以尝试以下

`
    $value=$this->validate->checkdatabase();
    如果(isset($值)){
        重定向(“仪表板”,“刷新”);
    }别的{
        $this->load->view('admin/login');
    }
`

@我的代码程序

于 2012-10-11T19:31:27.667 回答
0

你做事的方式确实有点错误,首先在我看来,你没有自动加载数据库库,几乎任何 CI 站点都将使用该库,所以通常不让它自动加载是没有意义的。

接下来,正如其他人所说,您根本没有对输入进行清理,让您自己打开以供注入,并考虑到这是您完全打开的登录。CI 的输入包装器会为您处理这些,请参见下面的代码。

您也没有检查返回值是什么,并且登录时您总是检查单个返回值。

<?php 
class Validate extends CI_Model
{
    public function checkdatabase()
    {
        $username=$this->input->post('username');
        $password=$this->input->post('password'); //and honestly this is taking a plain text password... not a good thing.
        //echo $username;
        $this->load->database();  //again, do this in the autoload.php
         $query ="select * from adminlogin where name='$username' AND password='$password'";
    $value = $this->db->query($query);
    if($value->num_rows()==1)
    {
        $data = $value->result();
        return $data;
    } else {
        return false;
    }
}

我在输入此内容后看到您已经开始工作,这里仍然有一些您应该考虑的有效点,所以无论如何我都会发布它。

于 2012-10-11T23:04:19.520 回答