Berikut saya tampilkan kembali struktur database dari tutorial sebelumnya.
Fieldname | Datatype |
---|---|
user_id | int(4), PRIMARY, AUTO INCREMENT |
username | varchar(20) |
password | varchar(255) |
varchar(100) | |
fullname | varchar(100) |
agama | varchar(15) |
no_hp | bigint(14) |
Langkah 1 – Form Login
Buat form login dengan mengetikkan kode berikut. Kemudian simpan pada folder yang sama dengan tutorial sebelumnya (folder belajar) dengan nama login.php.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| < html > < head > < title >LOGIN</ title > </ head > < body > < h1 >LOGIN</ h1 > <? php //kode php ini kita gunakan untuk menampilkan pesan eror if (!empty($_GET['error'])) { if ($_GET['error'] == 1) { echo '<h3>Username dan Password belum diisi!</ h3 >'; } else if ($_GET['error'] == 2) { echo '< h3 >Username belum diisi!</ h3 >'; } else if ($_GET['error'] == 3) { echo '< h3 >Password belum diisi!</ h3 >'; } else if ($_GET['error'] == 4) { echo '< h3 >Username dan Password tidak terdaftar!</ h3 >'; } } ?> < form name = "login" action = "otentikasi.php" method = "post" > < table border = "0" cellpadding = "5" cellspacing = "0" > < tr > < td >Username</ td > < td >:</ td > < td >< input type = "text" name = "username" /></ td > </ tr > < tr > < td >Password</ td > < td >:</ td > < td >< input type = "password" name = "password" /></ td > </ tr > < tr align = "right" > < td colspan = "3" >< input type = "submit" name = "login" value = "Login" /></ td > </ tr > </ table > </ form > </ body > </ html > |
Langkah 2 – Otentikasi Login
Setelah membuat form login, kita harus membuat sebuah file untuk memproses data login yang dimasukkan user apakah valid atau tidak. Ketikkan kode berikut dan simpan dengan nama otentikasi.php.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| <?php include ( 'config.php' ); //tangkap data dari form login $username = $_POST [ 'username' ]; $password = $_POST [ 'password' ]; //untuk mencegah sql injection //kita gunakan mysql_real_escape_string $username = mysql_real_escape_string( $username ); $password = mysql_real_escape_string( $password ); //cek data yang dikirim, apakah kosong atau tidak if ( empty ( $username ) && empty ( $password )) { //kalau username dan password kosong header( 'location:login.php?error=1' ); break ; } else if ( empty ( $username )) { //kalau username saja yang kosong header( 'location:login.php?error=2' ); break ; } else if ( empty ( $password )) { //kalau password saja yang kosong //redirect ke halaman index header( 'location:login.php?error=3' ); break ; } $q = mysql_query( "select * from user where username='$username' and password='$password'" ); if (mysql_num_rows( $q ) == 1) { //kalau username dan password sudah terdaftar di database header( 'location:index.php' ); } else { //kalau username ataupun password tidak terdaftar di database header( 'location:login.php?error=4' ); } ?> |
Sampai disini, sistem login sudah dapat digunakan. Cobalah buka halaman login dengan membuka http://localhost/belajar/login.php pada browser. Kemudian masukkan username dan password yang sudah dibuat pada tutorial sebelumnya. Coba juga untuk memasukkan berbagai kondisi yang berbeda seperti memasukkan username dan password yang salah, mengosongkan field username ataupun password, ataupun mengosongkan keduanya untuk menguji sistem otentikasi yang dibuat.
Sistem login memang sudah berhasil, namun jika hanya sampai tahap ini saja maka fungsi login belum berfungsi maksimal karena user masih dapat masuk kedalam aplikasi tanpa harus login terlebih dahulu. Cobalah buka http://localhost/belajar/. Halaman tersebut masih dapat diakses tanpa harus login terlebih dahulu karena kita belum membuat otentikasi pada setiap halaman apakah user harus login terlebih dahulu atau tidak untuk mendapat akses ke setiap halaman.
Langkah 3 – Otentikasi pada file-file lain
Agar setiap halaman hanya dapat diakses setelah login, kita perlu menambahkan beberapa baris kode pada file otentikasi.php seperti berikut.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <?php include ( 'config.php' ); session_start(); ... if (mysql_num_rows( $q ) == 1) { //kalau username dan password sudah terdaftar di database //buat session dengan nama username dengan isi nama user yang login $_SESSION [ 'username' ] = $username ; //redirect ke halaman index header( 'location:index.php' ); } else { ... |
Untuk melakukan pengencekan, buat dokumen baru dan ketikkan kode berikut. Kemudian simpan dengan nama cek-login.php.
1
2
3
4
5
6
7
8
9
| <?php session_start(); //jika session username belum dibuat, atau session username kosong if (!isset( $_SESSION [ 'username' ]) || empty ( $_SESSION [ 'username' ])) { //redirect ke halaman login header( 'location:login.php' ); } ?> |
1
2
3
| <?php include ( 'cek-login.php' ); ?> |
Tambahkan kode berikut pada file login.php.
1
2
3
4
5
6
7
8
9
10
| <?php session_start(); if (! empty ( $_SESSION [ 'username' ])) { header( 'location:index.php' ); } ?> <html> <head> ... |
Langkah 4 – Logout
Sekarang kita buat file untuk logout. Karena kita menggunakan session untuk menyimpan variabel yang digunakan dalam validasi login, maka untuk logout, kita cukup menghapus session yang digunakan. Ketikkan kode berikut dan simpan dengan nama logout.php.
1
2
3
4
5
6
7
8
9
10
| <?php //lanjutkan session yang sudah dibuat sebelumnya session_start(); //hapus session yang sudah dibuat session_destroy(); //redirect ke halaman login header( 'location:login.php' ); ?> |
1
2
3
4
5
6
7
| </ table > </ form > < a href = "view.php" >Lihat Data</ a > || < a href = "logout.php" >Logout</ a > </ body > </ html > |