Skip to main content

problem dengan skrip login nih

June 29, 2009 by alfinny

alfinny's picture

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.

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Banyak PHP Framework lainnya

January 12, 2010 by lkkiu, 2 years 3 weeks ago
Comment: 5823

lkkiu's picture

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

October 17, 2009 by mul14, 2 years 15 weeks ago
Comment: 5679

mul14's picture

Contoller

$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

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

October 6, 2009 by muhginanjar, 2 years 17 weeks ago
Comment: 5654

muhginanjar's picture

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 :

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

October 13, 2009 by sinaryuda, 2 years 16 weeks ago
Comment: 5665

sinaryuda's picture

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()

September 28, 2009 by khancute, 2 years 18 weeks ago
Comment: 5649

khancute's picture

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

result()

July 30, 2009 by eien, 2 years 27 weeks ago
Comment: 5591

eien's picture

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

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

Premium Drupal Themes by Adaptivethemes