Fitur dalam aplikasi :
- Login dengan PHP
- Penggunaan Cookie
- Aplikasi PHP Multi User
- Hak Akses User
- Dasar Pembuatan Theme
- Dasar Pembuatan Framework
Desain Database
Database berisi dua table, yaitu :
- Table s_user, yang berfungsi untuk menampung data user, seperti username dan password.
- Table s_login, yang berfungsi untuk mencatat user yang sedang login.
Tampilan Database |
Struktur Table User |
Struktur Table Login |
File-File Aplikasi
Berikut adalah file-file php dan file Database :
File-File |
Form Login
Bisa diakses oleh semua orang tanpa login.
Berikut tampilan Form Login
Halaman Login |
Source Code Form Login (form_login.php)
<h1>Form Login</h1> <form name="form1" method="post" action="proses_login.php" > <table border="0" cellpadding="2" cellspacing="0"> <tr> <td>Username</td> <td>:</td> <td><input type="text" name="username" value="" size="30" maxlength="30" /></td> </tr> <tr> <td>Password</td> <td>:</td> <td><input type="password" name="password" value="" size="30" maxlength="30" /></td> </tr> <tr> <td> </td> <td> </td> <td><input type="submit" name="submit" value="Login" /></td> </tr> </table> </form>
Source Code Proses Login (proses_login.php)
<?php // Memuat konfigurasi include("konfigurasi.php"); // Cek variable yang dikirim if(!isset($_POST['username'])) { echo "Tidak ada Username"; } if(!isset($_POST['password'])) { echo "Tidak ada Password"; } // Proses variable $username = str_replace("'", "", $_POST['username']); $password_post_md5 = md5($_POST['password']); // Membuat SQL $sql_user = " SELECT * FROM s_user WHERE username LIKE '$username' AND password LIKE '$password_post_md5' LIMIT 1; "; // Proses Query $query_user = mysql_query($sql_user); // Cek Query if($query_user) { if(mysql_num_rows($query_user) > 0) { $datauser = mysql_fetch_assoc($query_user); // print_r($datauser); $id_user = $datauser['id']; $waktu_login = date('Y-m-d H:i:s', time()); $waktu_kadaluarsa = date('Y-m-d H:i:s', time()+(24*3600)); $key_login = time() . rand(1000,9000); // 13820573563348 // Detect IP User $ip = info_client_ip_getenv(); // Detect Informasi PC dan Browser $pc_dan_browser = info_pc_dan_browser(); // Catat user login dalam database $sql_login = " INSERT INTO s_login (key_login, id_user, waktu_login, waktu_kadaluarsa, status, ip, pc_dan_browser) VALUES ('$key_login', '$id_user', '$waktu_login', '$waktu_kadaluarsa', '1', '$ip', '$pc_dan_browser'); "; // Proses catat login $query_login = mysql_query($sql_login); // Cek query login if($query_login) { // Catat login dalam cookies setcookie("key_login", $key_login, time()+(24*3600),"/"); // Alihkan ke halaman home header("location:index.php?p=home"); exit; } else { // Menampilkan pesan echo "Login tidak berhasil. #3"; exit; } } else { // Menampilkan pesan echo "Username atau Password salah."; exit; } } else { // Menampilkan pesan echo "Login tidak berhasil. #1"; exit; } ?>
Halaman Home
Bisa diakses oleh semua user yang sudah login.
Berikut tampilan Halaman Home
Halaman Home |
Source Code Halaman Home (home.php)
<?php // Untuk mengakses halaman ini, harus login if(!$user_sedang_login) { echo "Belum Login."; exit; } // Atur hak akses user, untuk halaman ini. // Halaman ini bisa diakses oleh semua user login if($hak_akses > 0) { // Lanjut } else { echo "Tidak ada hak akses."; exit; } ?> <h1>Home</h1> <p> Selamat datang. <br/> Halaman ini <u>bisa diakses oleh semua user login</u>. </p> <p> Informasi User yang sedang login (Anda) : </p> <table border="1" cellpadding="4" cellspacing="0"> <tr > <td>ID User</td> <td><?php echo $datauserlogin[2]['id_user']; ?></td> </tr> <tr> <td>Username</td> <td><b><?php echo $datauserlogin[2]['username']; ?></b></td> </tr> <tr> <td>Nama</td> <td><?php echo $datauserlogin[2]['nama']; ?></td> </tr> <tr > <td>Email</td> <td><?php echo $datauserlogin[2]['email']; ?></td> </tr> <tr bgcolor="#FFFF99"> <td>Hak Akses</td> <td><?php echo $datauserlogin[2]['hak_akses']; ?></td> </tr> <tr > <td>Waktu Login</td> <td><?php echo $datauserlogin[2]['waktu_login']; ?></td> </tr> <tr> <td>Waktu Kadaluarsa Login</td> <td><?php echo $datauserlogin[2]['waktu_kadaluarsa']; ?></td> </tr> <tr> <td>IP Address</td> <td><?php echo $datauserlogin[2]['ip']; ?></td> </tr> <tr> <td>PC dan Browser</td> <td><?php echo $datauserlogin[2]['pc_dan_browser']; ?></td> </tr> </table>
Tes Halaman, Diberi Nama Halaman Jeruk
Diseting untuk bisa diakses oleh user yang memiliki tingkat hak akses lebih dari sama dengan 3.
Berikut tampilan Halaman Jeruk
Halaman Jeruk |
Source Code Halaman Jeruk (jeruk.php)
<?php // Untuk mengakses halaman ini, harus login if(!$user_sedang_login) { echo "Belum Login."; exit; } // Atur hak akses user, untuk halaman ini. // Halaman ini bisa diakses oleh semua user sbb : if($hak_akses >= 3) { // Lanjut } else { echo "Tidak ada hak akses."; exit; } ?> <h1>Jeruk</h1> <p> Halaman Jeruk.<br> Halaman ini <u>bisa diakses oleh user, dengan hak akses >= 3</u>. <br> <span style="background-color:#FF9;" >Hak akses user yang sedang login adalah <b><?php echo $hak_akses; ?></b></span>. </p>
Tes Halaman, Diberi Nama Halaman Manggis
Diseting untuk bisa diakses oleh user yang memiliki tingkat hak akses lebih dari sama dengan 2.
Berikut tampilan Halaman Manggis
Halaman Manggis |
Source Code Halaman Manggis (manggis.php)
<?php // Untuk mengakses halaman ini, harus login if(!$user_sedang_login) { echo "Belum Login."; exit; } // Atur hak akses user, untuk halaman ini. // Halaman ini bisa diakses oleh semua user sbb : if($hak_akses >= 2) { // Lanjut } else { echo "Tidak ada hak akses."; exit; } ?> <h1>Manggis</h1> <p> Halaman Manggis.<br> Halaman ini <u>bisa diakses oleh user, dengan hak akses >= 2</u>. <br> <span style="background-color:#FF9;" >Hak akses user yang sedang login adalah <b><?php echo $hak_akses; ?></b></span>. </p>
Halaman Catatan Login (Log User Login)
Diseting untuk bisa diakses oleh user yang memiliki tingkat hak akses sama dengan 10 (super user)).
Berikut tampilan Halaman Catatan Login
Halaman Catatan Login |
Source Code Halaman Catatan Login (catatan_login.php)
<?php // Untuk mengakses halaman ini, harus login if(!$user_sedang_login) { echo "Belum Login."; exit; } // Atur hak akses user, untuk halaman ini. // Halaman ini bisa diakses oleh semua user sbb : if($hak_akses == 10) { // Lanjut } else { echo "Tidak ada hak akses."; exit; } ?> <h1>Catatan Login (Log)</h1> Berikut ini ditampilkan 1000 catatan login terakhir : <br/> <br/> <table border="1" cellpadding="4" cellspacing="0"> <tr> <th nowrap scope="col">ID Login</th> <th nowrap scope="col">Waktu Login</th> <th nowrap scope="col">Waktu Kadaluarsa</th> <th nowrap scope="col">ID User</th> <th nowrap scope="col">Username</th> <th nowrap scope="col">Hak Akses</th> <th nowrap scope="col">IP Address</th> <th nowrap scope="col">PC dan Browser</th> <th nowrap scope="col">Status Logout</th> <th nowrap scope="col">Aktif/Online</th> </tr> <?php $sql_clogin = " SELECT l.id AS id_login, l.waktu_login, l.waktu_kadaluarsa, l.id_user, u.username, u.hak_akses, l.ip, l.pc_dan_browser, l.status AS ketstatus FROM s_login l LEFT JOIN s_user u ON l.id_user = u.id ORDER BY l.waktu_login DESC LIMIT 1000; "; $query_clogin = mysql_query($sql_clogin); if(!$query_clogin) { echo "Tidak berhasil query."; exit; } else { while ($baris_clogin = mysql_fetch_assoc($query_clogin)) { if($waktu_server <= $baris_clogin['waktu_kadaluarsa'] && $baris_clogin['ketstatus'] == '1') { $online = "Online"; $bg = "#66FF99"; } else { $online = "---"; $bg = "#FFFFFF"; } ?> <tr bgcolor="<?php echo $bg; ?>"> <td nowrap ><?php echo $baris_clogin['id_login']; ?></td> <td nowrap ><?php echo $baris_clogin['waktu_login']; ?></td> <td nowrap ><?php echo $baris_clogin['waktu_kadaluarsa']; ?></td> <td nowrap ><?php echo $baris_clogin['id_user']; ?></td> <td nowrap ><?php echo $baris_clogin['username']; ?></td> <td nowrap ><?php echo $baris_clogin['hak_akses']; ?></td> <td nowrap ><?php echo $baris_clogin['ip']; ?></td> <td nowrap ><?php echo $baris_clogin['pc_dan_browser']; ?></td> <td nowrap > <?php if($baris_clogin['ketstatus'] == '0') { echo "Telah melakukan Logout"; } else { echo "---"; } ?> </td> <td nowrap style="font-weight:bold;" ><?php echo $online; ?></td> </tr> <?php } } ?> </table>
Source Code Logout (logout.php)
<?php // Memuat konfigurasi include("konfigurasi.php"); // Hapus Cookie setcookie("key_login", "0", time()-(24*3600*30),"/"); if(isset($_COOKIE['key_login'])) { $key_login = $_COOKIE['key_login']; // Update catatan login $sql_logout = " UPDATE s_login SET status = '0' WHERE key_login = '$key_login' LIMIT 1; "; $query_logout = mysql_query($sql_logout); if($query_logout) { alihkan_halaman('index.php?p=form_login'); } else { echo "Tidak sempurna logout."; } } ?>
Source Code Index (index.php)
index.php berfungsi untuk meng-include halaman-halaman yang lain.
index.php juga berfungsi sebagai Theme, juga berfungsi sebagai Framework.
<?php // Theme // Memuat konfigurasi include("konfigurasi.php"); ?><!doctype html> <html> <head> <meta charset="utf-8"> <title>Salim Basic Login PHP</title> <style type="text/css" > body { margin: 30px 60px 30px 60px; } </style> </head> <body> <!-- Menu --> <?php include("menu.php"); ?> <hr size="1" color="#CCCCCC" /> <?php // Membaca variable p dalam URL if(isset($_GET['p'])) { if(strlen($_GET['p']) == 0) { $p = "form_login"; } else { $p = $_GET['p']; } } else { $p = "form_login"; } // Memuat file if(file_exists($p . ".php")) { include($p . ".php"); } else { echo "Halaman tidak ditemukan."; } ?> <!-- Footer --> <br/> <hr size="1" color="#CCCCCC" /> <center> © Frombanda </center> </body> </html>
Source Code Menu (menu.php)
menu.php berisi menu-menu.
Dalam menu.php diatur kapan tampil menu sesuai hak akses user
<?php // Menu if($user_sedang_login != true) { echo '<a href="index.php?p=form_login" >Login</a> | '; } if($user_sedang_login == true) { echo '<a href="index.php?p=home" >Home</a> | '; } if($user_sedang_login == true) { if($hak_akses >= 3) { echo '<a href="index.php?p=jeruk" >Jeruk</a> | '; } } if($user_sedang_login == true) { if($hak_akses >= 2) { echo '<a href="index.php?p=manggis" >Manggis</a> | '; } } if($user_sedang_login == true) { if($hak_akses == 10) { echo '<a href="index.php?p=catatan_login" >Catatan Login</a> | '; } } if($user_sedang_login == true) { echo '<a href="logout.php" >Logout</a> '; echo '( <b>'.$datauserlogin[2]["username"].'</b> )'; } ?>
Source Code Konfigurasi (konfigurasi.php)
Konfigurasi berisi konfigurasi, seperti password database.
<?php // Variable Koneksi ke Database // ===================================================== $host = 'localhost'; $user = 'salim_basiclogin'; $pass = 'U5DHb6F2v9vuz6ah'; $db = 'salim_basiclogin'; // ===================================================== // Setting Time zone date_default_timezone_set('Asia/Jakarta'); $waktu_server = date('Y-m-d H:i:s', time()); // Setting tidak menampilkan error error_reporting(0); // Membuat Koneksi ke database $con = mysql_connect($host,$user,$pass); // Menangani kondisi koneksi if (!$con) { die('Tidak ada koneksi ke Database : ' . mysql_error()); } // Memilih Database mysql_select_db($db, $con); // Memuat functions include("functions.php"); // Memuat informasi User Login // Mendeteksi informasi tentang user login $datauserlogin = fb_cek_user_login(); // Data berikut ini ada saat user login // Memuat informasi Sudah Login atau Belum // $user_sedang_login bernilai true saat user sedang login if(isset($datauserlogin[0])) { $user_sedang_login = $datauserlogin[0]; } else { $user_sedang_login = false; } // Data berikut ini ada saat user login // Memuat informasi Hak Akses // $hak_akses bernilai 1 sampai 10, jika user sedang login if(isset($datauserlogin[2]['hak_akses'])) { $hak_akses = $datauserlogin[2]['hak_akses']; } else { $hak_akses = 0; } ?>
Source Code Functions (functions.php)
functions.php berisi functions cek user login, cek ip user, cek browser user, cek sistem operasi user, dll.
<?php // Cek user login function fb_cek_user_login() { if(isset($_COOKIE['key_login'])) { $key_login = $_COOKIE['key_login']; $waktu_sekarang = date('Y-m-d H:i:s', time()); $sql_userlogin = " SELECT u.id AS id_user, u.username, u.nama, u.email, u.hak_akses, l.waktu_login, l.waktu_kadaluarsa, l.ip, l.pc_dan_browser FROM s_login l LEFT JOIN s_user u ON l.id_user = u.id WHERE l.key_login = '$key_login' AND u.status = 1 AND l.status = 1 AND '$waktu_sekarang' <= l.waktu_kadaluarsa LIMIT 1; "; $query_ceklogin = mysql_query($sql_userlogin); if($query_ceklogin) { if(mysql_num_rows($query_ceklogin) > 0) { $data_ceklogin = mysql_fetch_assoc($query_ceklogin); // print_r($data_ceklogin); return array(true, 'berhasil', $data_ceklogin); } else { return array(false, '#3'); } } else { return array(false, '#2'); } } else { return array(false, '#1'); } } // redirect function alihkan_halaman($halaman_tujuan) { error_reporting(0); header("location:".$halaman_tujuan); echo '<meta http-equiv="refresh" content="0; url='.$halaman_tujuan.'">'; echo '<script type="text/javascript"> window.location = "'.$halaman_tujuan.'"; </script>'; echo '<a href="'.$halaman_tujuan.'" >Redirect</a>...'; exit; } // Detect IP function info_client_ip_getenv() { $ipaddress = ''; if (getenv('HTTP_CLIENT_IP')) $ipaddress = getenv('HTTP_CLIENT_IP'); else if(getenv('HTTP_X_FORWARDED_FOR')) $ipaddress = getenv('HTTP_X_FORWARDED_FOR'); else if(getenv('HTTP_X_FORWARDED')) $ipaddress = getenv('HTTP_X_FORWARDED'); else if(getenv('HTTP_FORWARDED_FOR')) $ipaddress = getenv('HTTP_FORWARDED_FOR'); else if(getenv('HTTP_FORWARDED')) $ipaddress = getenv('HTTP_FORWARDED'); else if(getenv('REMOTE_ADDR')) $ipaddress = getenv('REMOTE_ADDR'); else $ipaddress = 'UNKNOWN'; return $ipaddress; } // Detect PC function info_pc_dan_browser() { $ua = $_SERVER["HTTP_USER_AGENT"]; return strtolower($ua); } ?>
----------------------------------------------------
----------------------------------------------------
Contoh dan Uji Coba Aplikasi
Anda dapat mengunjungi salah satu link di bawah ini yang konek :
- Sever 1 : Demo / Uji coba aplikasi
- Server 2 : Demo / Uji coba aplikasi
Download Full Source Code PHP dan Database MySQL
Download : Source Code Salim Basic Login PHP
Semoga bermanfaat.
Jika ada pertanyaan boleh email ke agussalim.us@gmail.com
.