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();
    if(isset($value)){
        リダイレクト ('ダッシュボード', 'リフレッシュ');
    }そうしないと{
        $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 に答える