problem dengan skrip login nih

buat para master-master di ci tolong dunk. saya lagi bikin website yang multiuser. jadi saya hanya memasang satu halaman login. permasalahannya terletak di levelnya nih. bila levelnya admin maka diredirect ke halaman admin dan kalo levelnya user sebaliknya. berikut skrip yang saya buat
$username = $_POST['username'];
$pass = $_POST['password'];
$password = md5($pass);

$this->load->model('user');
$results = $this->user->login($username,$password);
if($results == FALSE)redirect ('login');
else
{
$test = $this->db->get_where('user',array('level'=>'admin'));
if($test->result() == TRUE)
{
$this->session->set_userdata(array('id'=>$results,'level'=>'admin','logged_in'=>TRUE));
redirect('admin');
}
else
{
$this->session->set_userdata(array('username'=>$results,'level'=>'user','logged_in'=>TRUE));
redirect('member');
}
}

nah, yang terjadi justru. jika user berhasil login, maka yang di redirect malah halaman admin bukan ke member. tolong dong. saya gak tahu kesalahannya dimana.

Banyak PHP Framework lainnya

Banyak PHP Framework lainnya seperti Kohana, Symfony, Zend Framework, CakePHP, Yii, dll. Beberapa framework malah sudah dilengkapi dengan testking 000-206 widget dan Ajax. Konsep MVC merupakan problem solving untuk memisahkan kerumitan dengan standard PHP coding. Model yang dikhususkan testking 642-426 untuk menangani hubungan dengan Database. View dikhususkan untuk tampilan. Controller yang utama menangani berbagai-macam business logic. Dengan testking HP0-J24 framework, suatu tugas dapat dilakukan dengan lebih mudah. Misalnya, pada pemograman PHP biasa untuk melakukan query:

Login Script

Contoller

<?php
$username 
$this->input->post('username');
$password md5($this->input->post('password'));

$this->load->model('user');

$result $this->user->login($username$password);

if (
$result) {
    if (
$this->session->userdata('level') == 'admin') {
        
redirect('admin'); // admin bisa lebih dari satu. Kalau admin1 mati, masih ada kemungkinan admin lain.
    
} else {
        
redirect('member');
    }
} else {
    
$this->session->set_flashdata('error''Login failed');
    
redirect('login');
}
?>

Model

<?php
function login($username$password) {
    
$query $this->db->get_where('users', array('username'=>$username'password'=>$password), 1);
    if (
$query->num_rows() == 1) {
        foreach (
$query->result() as $row) {
            
$this->session->set_userdata('level'$row->level);
            
$this->session->set_userdata('username'$row->username);
        }
        return 
true;
    } else {
        return 
false;
    }
}
?>

Satuju sama khancute

kalo saya lihat di user_guidenya : result() : This function returns the query result as an array of objects, or an empty array on failure.. Jadi, result() tidak akan mengembalikan TRUE atau FALSE. jadi betul juga pendapat eien dengan memakai script :

<?php
if($test->num_rows() > 0
?>

penjelasannya : jika baris yang dihasilkan query dalam $test lebih dari 0 maka baris program dibawah if tersebut dieksekusi.
Terima kasih.

Satuju sama khancute dan muhginanjar

mungkin dengan menggunakan

if($test->num_rows() > 0)

dan menambahkan username pada query untuk memastikan user tersebut memiliki level admin ato tidak dan juga menghindari kalo ada admin lebih dari satu

$test = $this->db->get_where('user',array('level'=>'admin','username'=>'usernya'));

jika menggunakan query ini

$test = $this->db->get_where('user',array('level'=>'admin'));

bisa dipastikan bakal lolos jika dicek dengan num_rows() > 0 kalo di dalam table user ada user dengan level admin tanpa melihat user tersebut admin ato user biasa.

yup, karna fungsi result()

yup, karna fungsi result() tidak akan bernilai FALSE apabila kosong, melainkan berupa array kosong.

result()

$test->result() mengembalikan array hasil dari query diatasnya, mungkin lebih tepat kalo baris tersebut diganti menjadi :

<?php
$test 
$this->db->get_where('user',array('level'=>'admin'));
if(
$test->num_rows() > 0)
?>