SESSION dan Log Masuk (Login)
Dalam artikel kali ini, aku akan menunjukkan bagaimana membuat Log masuk (login) bersama penggunaan sintaks $_SESSION. Selesai kamu membaca artikel ini. Pastikan kamu mencapai objektif dibawah.
1. Penggunaan WHERE dalam SQL.
2. Penggunaan sintak <form> dalam HTML
3. Penggunaan $_POST dalam PHP
4. Penggunaan $_SESSION dalam PHP.
5. Kamu berjaya membuat log masuk dan memaparkan data pengguna.
Sekarang kita perlu fahamkan dahulu aliran dan proses yang terlibat.
1. Pengguna masukkan katanama dan juga katalaluan.
2. Sistem akan memeriksa maklumat yang dimasukkan. Sekiranya benar, pengguna akan dapat melihat maklumat mereka sendiri. Sekiranya salah, pengguna akan melihat ralat yang dipaparkan.
Dibawah merupakan kod aturcara untuk fail login.html
<html> <head> <title>Log Masuk</title> </head> <body> <div id="wrapper"> <form id="login" name="login" action="login.php" method="POST"> <p> Katanama : <input type="text" name="username" id="username" /> </p> <p> Katalaluan : <input type="password" name="password" id="password" /> </p> <p> <input type="submit" name="send" id="send" value="Log Masuk" /> </p> </form> </div> </body> </html>
Ini merupakan fail yang akan menerima input dari pengguna.
Dibawah pula adalah kod aturcara dalam PHP bagaimana mahu menyemak maklumat yang dimasukkan oleh pengguna. Simpan kod ini sebagai login.php. Rujuk artikel ini bagi mendapatkan fail db.php
<?php session_start(); include 'db.php'; $username = mysql_real_escape_string($_POST['username']); $password = mysql_real_escape_string($_POST['password']); $sql = "SELECT * FROM logins2 " ."WHERE username='$username' " ."AND password='$password'"; $query = mysql_query($sql) or die(mysql_error()); $check_valid = mysql_num_rows($query); if($check_valid > 0) { $result = mysql_fetch_array($query); $_SESSION['username'] = $result['username']; $_SESSION['user_id'] = $result['user_id']; echo '<script type="text/javascript"> window.location.href="success.php"; </script>'; } else { echo 'Wrong Password or Username'; } ?>
Kod ini pula akan memaparkan maklumat didalam borang bagi tujuan kemaskini. Simpan kod ini didalam fail success.php
<?php session_start(); include 'db.php'; if(isset($_SESSION['username'])) { $sql = "SELECT * FROM users WHERE id='".$_SESSION['user_id']."'"; $query = mysql_query($sql) or die(mysql_error()); $results = mysql_fetch_array($query); ?> <html> <head> <title> Berjaya </title> </head> <body> <form name="detail" id="detail"> <p> First Name : <input type="text" value="<?php echo $results['first_name'];?>" name="first_name" /> </p> <p> Last Name : <input type="text" value="<?php echo $results['last_name'];?>" name="last_name" /> </p> </form> </body> </html> <?php } else { echo 'You need to login first'; } ?>
Ini pula pernyataan SQL untuk jadual-jadual yang terlibat.
CREATE DATABASE `test_tutorial` ; CREATE TABLE `test_tutorial`.`users` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , `first_name` TEXT NOT NULL , `last_name` TEXT NOT NULL , `date_of_birth` DATE NOT NULL ) ENGINE = MYISAM INSERT INTO `test_tutorial`.`users` ( `id` , `first_name` , `last_name` , `date_of_birth` ) VALUES ( NULL , 'Jasdy', 'Syarman', '1980-01-16' ), ( NULL , 'Abu', 'Ahmad', '2004-03-16' ); CREATE TABLE IF NOT EXISTS `logins2` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` text NOT NULL, `password` text NOT NULL, `user_id` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM; INSERT INTO `logins2` (`id`, `username`, `password`, `user_id`) VALUES (1, 'jasdy', 'jasdy', '1'), (2, 'tester', 'tester', '2');
Bahagian kemaskini tidak akan aku sentuh pada artikel kali ini. Ianya akan dilakukan pada artikel lain mengikut kadar kerajinan aku. Sesiapa yang tidak mahu memaparkan datanya dalam bentuk borang, sila rujuk artikel ini