Muslim Pribadi ~Sebuah usaha untuk menulis semaunya… Semampunya…

Lihat projects website saya lewat pranala ini

logout.php

Belajar PHP

PERHATIAN!! Tutorial ini bersambung, jadi sebelum membaca tutorial ini sebaiknya anda membaca :

  1. Buku tamu – belajar PHP bagian 1
  2. Buku tamu – belajar PHP bagian 2

Pada tutorial buku tamu kali ini kita akan membuat 4 file PHP :

  1. login.php halaman antar-muka login
  2. login_proses.php halaman tujuan setelah menekan tombol Log in, disini akan dilakukan validasi dan pencocokan dengan data di tabel user_nya.
  3. login_lanjut.php jika semua data valid user akan di bawa ke halaman ini, terdapat ucapan selamat datang dan sebuah link Logout.
  4. logout.php merupakan tindak lanjut setelah link Logout di klik.

Halaman login.php

Tidak ada kode PHP disini, hanya HTML untuk membuat form isian login.

login.php
Tampilan login.php

Kode lengkap login.php

<html>
<head><title>Login</title></head>
<body>
<h1>LOGIN</h1>
<table>
<form action="login_proses.php">
<tr>
 <td>User Id</td>
 <td><input type="text" name="user_id" maxlength="255" size="20"></td>
</tr>
<tr>
 <td>Password</td>
 <td><input type="password" name="pass" maxlength="255" size="20"></td>
</tr>
<tr>
 <td></td>
 <td><input type="submit" value="Log in"></td>
</tr>
</form>
</table>
</body>
</html

Seperti yang sudah kita ketahui jika tombol Log in di tekan maka selanjutnya adalah login_proses.php yang akan menangani validasi dan proses selanjutnya.

Alur pengiriman variabel pada proses login
Alur pengiriman variabel pada proses login

Kode lengkap login_proses.php

<?php
session_start(); //kuncinya ada disini, tulis diawal script sebelum menulis yang lain

$server = 'localhost';
$user_db = 'root';
$password_db = '';
$nama_db = 'bukutamu';

/* Koneksi database*/
mysql_connect( $server, $user_db, $password_db ) or die( mysql_error() );
mysql_select_db( $nama_db ) or die( mysql_error() );

/* Ambil variabel */
$user_id = $_REQUEST['user_id'];
$pass = $_REQUEST['pass'];

/* Validasi */
$error = 0;
if( empty( $user_id ) || empty( $pass ) ) {
 echo 'Tidak boleh ada kolom yang kosong.<br>';
 $error++;
} else {
 $sql = 'select * from USER_NYA where USER_ID="' . $user_id . '"';
 $query = mysql_query( $sql );
 $row = mysql_fetch_row( $query );

 if( empty( $row[0] ) ) {
  echo 'User tidak dikenal.<br>';
  $error++;
 } else {
  if( $row[1] != $pass ) {
  echo 'Password salah.<br>';
  $error++;
 } else {
  /*Daftarkan ke server sbg variabel global*/
  /* session_register() Sebaiknya tdk digunakan (Deprecated Function)
  session_register( 'ID', 'PASS' );
  */
  $_SESSION['ID'] = $user_id;
  $_SESSION['PASS'] = $pass;
 } //end else
 } //end else
}

if( $error == 0 ) {
 /* Redirect jika tidak ada error */
 header( 'Location:login_lanjut.php' );
 exit();
} else {
 echo '<a href="login.php">Kembali</a>';
 exit();
}
?>

Perhatikan session_start() harus menjadi kode eksekusi PHP yang harus dibaca pertama kali oleh mesin PHP itu sebabnya  ia berada di urutan paling atas setelah tag PHP. SEDERHANANYA session_start() merupakan penanda bahwa halaman ini akan menggunakan fitur session dari PHP dan ia harus ditulis paling dulu 😉

if( empty( $row[0] ) )

 

if( $row[1] != $pass )

Kita sedikit review dari latihan PHP bagian 2 bagi yang masih sedikit bingung dengan variabel $row[0] pada baris ke-27 dan $row[1] pada baris ke-31.

$sql = 'select * from USER_NYA where USER_ID="' . $user_id . '"';
$query = mysql_query( $sql );
$row = mysql_fetch_row( $query );

Kode mulai baris 26 sampai 28 menunjukan bahwa terjadi pemanggilan data ke tabel USER_NYA yang memiliki USER_ID sama dengan nilai yang dikandung dari variabel $user_id.

Index 0 1
Kolom USER_ID PASS

Tabel USER_NYA

Mulai ada pencerahan mengenai $row[0] dan $row[1] ? nilai 0 dan 1 menunjukan index dari kolom pada tabel USER_NYA sehingga pemanggilan $row[0] sama dengan pemanggilan nilai pada kolom USER_ID dan $row[1] sama dengan nilai dari kolom PASS, begitu seterusnya.

Didalam if() saya menggunakan beberapa operator pembanding berikut penjelasannya :

Operator Keterangan syntax
EQUAL TRUE, jika $a Sama dengan $b $a == $b
IDENTICAL TRUE, jika sama nilai dan tipe variabel-nya antara $a dan $b $a === $b
AND TRUE, jika $a bernilai true dan $b juga true $a AND $b atau $a && $b
OR TRUE, jika $a atau $b bernilai true $a OR $b atau $a || $b
NOT negasi !
NOT EQUAL TRUE, jika $a tidak sama dengan $b $a != $b atau $a <> $b
NOT IDENTICAL TRUE, jika $a tidak identik dengan $b $a !== $b
LESS THAN TRUE, jika $a kurang dari $b $a < $b
GREATER THAN TRUE, jika $a lebih dari $b $a > $b
LESS THAN or EQUAL TO TRUE, jika $a kurang dari sama dengan $b $a <= $b
GREATER THAN or EQUAL TO TRUE, jika $a lebih dari sama dengan $b $a >= $b

Operator pembanding

Jika variabel lolos validasi maka username dan password akan di daftarkan menjadi variabel global dalam session artinya variabel tersebut akan dapat diakses dari halaman manapun yang menggunakan session_start().

Pendaftaran dan assignment variabel SESSION ditangani oleh blok kode :

$_SESSION['ID'] = $user_id;
$_SESSION['PASS'] = $pass;

Setelah variabel terdaftar user akan di-redirect ke halaman yang hanya bisa dibuka jika loginnya berhasil, blok redirect ditangani oleh kode,

/* Redirect jika tidak ada error */
 header('Location:login_lanjut.php');
 exit(); //hentikan eksekusi kode di login_proses.php

Pembahasan login_lanjut.php ada di halaman 2 >>

127 tanggapan untuk “Belajar PHP bagian 3 – Membuat halaman login dan logout menggunakan session”

  1. omarjati wibowo Avatar
    omarjati wibowo

    bang bisa kasih tips belajar ga,gimana cara memahami semua koding php agar bisa buat koding php sendiri yang kita inginkan.
    sblmnya makasih buat codong log’inya 😀

  2. Efraim Adinata Pangaribuan Avatar

    mas bro…
    jelasin dong di bagian /* Validasi */
    waktu saya saya jalankan, saya klik Login nya
    tiba-tiba muncul text
    Parse error: syntax error, unexpected ‘$row’ (T_VARIABLE) in C:\xampp\htdocs\login_proses.php on line 28
    tolong bantuan nya ya 🙂

    1. MuslimPribadi Avatar

      Biasanya karena kurang semicolon -> ;
      Cek line 27 dan 28

  3. Aditya Avatar
    Aditya

    masbrow mau tanya nih tapi diluar tema gpp yaaaa…..

    gimana menampilkan data berdasarkan ID dari user login, jadi pas kita login dengan user id kita, data detail kita akan tampil..

    terimakasih atas pencerahannya

    1. MuslimPribadi Avatar

      Di session awal setelah berhasil login tambahkan saja ID Usernya ke variabel $_SESSION, trus tinggal di kirim query SELECT berdasarkan user ID tersebut. Nanti muncul semua data yang berhubungan dengan user tersebut. Semoga membantu

      1. Aditya Avatar
        Aditya

        udah saya tambahin tapi malah pas login error username dan password tidak dikenal!..

        gimana kalo saya kirim source bos?

        1. MuslimPribadi Avatar

          Boleh, kirim ke email saya

      2. Aditya Avatar
        Aditya

        alamat email nya apa gan 🙂

  4. Didik Maryono Avatar

    terima kasih atas ilmunya

    1. MuslimPribadi Avatar

      Sama-sama. Semoga bermanfaat 🙂

  5. manto Avatar

    mantap thx… telat ni gw…. gkpp, dari pada ndak… hehe… thx yeh…

  6. riyansyah Avatar
    riyansyah

    terima kasih banyak kk membantu banget,,

  7. dedy Avatar

    nais inpo Gan, nanti ane mampir lagi. belum sempat baca.
    kebetelan lagi pengen bergelut di dunia per-web-an he he he

  8. aya Avatar
    aya

    kak tanya donk, gimana caranya bikin website e-learning pake php??
    soalnya ad tugas bikin e-learning tapi saya ga tw apa-apa tentang php…
    bsa bantuin ga??
    baleske email aj yaa kak…
    makasii sebelumnya…

    1. MuslimPribadi Avatar

      Kamu bisa pake CMS moodle (search aja di internet), dan kamu g perlu koding untuk membangun web e-learning

  9. dede nuharta Avatar

    databasenya belum isi gan

    1. MuslimPribadi Avatar

      Tutorial 3 ini bagian dari 5 tutorial. databasenya ada di tutorial sebelumnya cek disini bagian 1, bagian 2

  10. Hendra Parwata Avatar

    kalo illegal acces, salahnya dimana ya??
    padahal rasanya udah bener..

    1. MuslimPribadi Avatar

      Coba donlot source-nya dulu 😉

  11. Member Avatar

    Maaf master, Cara bikin halaman profil gmana?
    Misalnya : jika klik http://www.websaya.com/profil.php akan menuju ke halaman profilnya sedangkan kalo klik http://www.websaya.com/profil.php?id=100002014 akan menuju ke profil user lain yang idnya tertera diatas.
    Mohon bantuannya

    1. MuslimPribadi Avatar

      di profil.php pakai if untuk me $id = $_REQUEST[‘id’] kalau $id tdk kosong, tinggal di SELECT * FROM USER_TABLE WHERE id=’$id’. jadi nanti profile.php akan memanggil berdasarkan PRIMARY KEY tabel USER (sebagai contoh). Semoga bisa di mengerti 🙂

  12. balqis Avatar
    balqis

    gmn cara membuat form registrasi dgn validasi tanpa harus meninggalkan halaman dan tanpa mengetik ulang data yg sudah diisi sebelumnya, mirip seperti registrasi yahoo, jika ada yg salah kt cukup memperbaiki data yg salah saja, tanpa kehilangan data lain yg telah kita ketik sebelumnya saat mengisi biodata. terima kasih

    1. MuslimPribadi Avatar

      Harus dikombinasikan dg AJAX 🙂

  13. Soleh4n Avatar

    Mantap mas tutorialnya… saya lumayan faham cara membuatnya walaupun saya menggunakan dreamweaver.

    Cuman kalau waktu loginnya dibatasi dengan durasi bagian mana ya saya harus merubah atau menambah source code nya?

  14. aji hariadi Avatar
    aji hariadi

    terima kasih buat ilmu nya moga dibalas tuhan dengan pahala yang berlipat ganda

  15. Arif Avatar
    Arif

    Mas Muslim makasih banget loh penjelasan nya….. keren banget!

  16. dwi Avatar
    dwi

    terimakasih mas sangat membantu

  17. gusti Avatar
    gusti

    makasih pertamax gan. sangat membantu sekali

  18. Jack S Avatar
    Jack S

    nambah lagi pertanyaan nya gan karena ngembet bgt mau proteksi segera laman ane, file yg ane tahu sekedar index.html, css & js. koq sekarang ada lagi MySQL…?

    kalau bisa kotak pop-up nya yg bisa dipajang foto back-ground (biar lebih keren) seperti pics profile-nya admin.

    ma ksh banyak ni gan
    love you all, love IT.

  19. vita17 Avatar

    mas makasih mantep bener (y)

Tinggalkan Balasan ke Hendra Parwata Batalkan balasan