检查数据库并重定向到特定页面

时间:2012-10-11 18:53:28

标签: php codeigniter codeigniter-2

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

这是代码

<?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');
    }   

2 个答案:

答案 0 :(得分:0)

您可以尝试以下

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

@ My Code Programs

答案 1 :(得分: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;
    }
}

我在打字后看到你已经开始工作了,这里仍然有一些你应该考虑的有效点,所以无论如何我都会发布它。