នៅក្នុងsystem មិនថាជាប្រភេទ desktop ឬ web ទេ តែងតែមាននូវlogin page ដែលតំរូវឲ្យអ្នកប្រើប្រាស់វាយបំពេញឈ្មោះ និង លេខសំងាត់ឲ្យបានត្រឹមត្រូវ ទើបអាចប្រើប្រាស់ systemបាន។ នៅក្នុងមេរៀននេះ ខ្ញុំសូមលើកយកនូវការបង្កើត login page ដោយប្រើប្រាស់ភាសា php។ ខ្ញុំនឹងអនុវត្តជាមូយនឹង session និង PDO សំរាប់សរសេរភ្ជាប់ជាមួយ MySQL។
បង្កើតតារាងសំរាប់រក្សាទុកទិន្នន័យ (create table structure)
ខាងក្រោមនេះ ជា SQL Script សំរាប់បង្កើតជា tb_users
CREATE TABLE tb_users (
user_id INT (11) NOT NULL AUTO_INCREMENT,
user_name VARCHAR (100) NULL DEFAULT NULL,
user_pwd VARCHAR (72) NULL DEFAULT NULL,
PRIMARY KEY (user_id)
)
បង្កើត login.php (Create Login.php File)
បង្កើត File មួយសំរាប់ប្រកាស រាល់ព៏ត៌មានដែលចាំបាច់សំរាប់ភ្ជាប់ទៅកាន់ database និង ពិនិត្យថាតើឈ្មោះ និង លេខសំងាត់ត្រឹមត្រូវឬអត់?
<?php
session_start();
//DB configuration Constants
define('_HOST_NAME_', 'localhost');
define('_USER_NAME_', 'XXXXXX');
define('_DB_PASSWORD', 'XXXXXX');
define('_DATABASE_NAME_', 'XXXXXXX');
//PDO Database Connection
try {
$databaseConnection = new PDO('mysql:host='._HOST_NAME_.';dbname='._DATABASE_NAME_, _USER_NAME_, _DB_PASSWORD);
$databaseConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
if(isset($_POST['submit'])){
$errMsg = '';
//username and password sent from Form
$username = trim($_POST['username']);
$password = trim($_POST['password']);
if($username == '')
$errMsg .= 'You must enter your Username<br>';
if($password == '')
$errMsg .= 'You must enter your Password<br>';
if($errMsg == ''){
$records = $databaseConnection->prepare('SELECT id,username,password FROM tbl_users WHERE username = :username');
$records->bindParam(':username', $username);
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);
if(count($results) > 0 && password_verify($password, $results['password'])){
$_SESSION['username'] = $results['username'];
header('location:dashboard.php');
exit;
}else{
$errMsg .= 'Username and Password are not found<br>';
}
}
}
?>
<html>
<head><title>Login Page PHP Script</title></head>
<body>
<div align="center">
<div style="width:300px; border: solid 1px #006D9C; " align="left">
<?php
if(isset($errMsg)){
echo '<div style="color:#FF0000;text-align:center;font-size:12px;">'.$errMsg.'</div>';
}
?>
<div style="background-color:#006D9C; color:#FFFFFF; padding:3px;"><b>Login</b></div>
<div style="margin:30px">
<form action="" method="post">
<label>Username :</label><input type="text" name="username" class="box"/><br /><br />
<label>Password :</label><input type="password" name="password" class="box" /><br/><br />
<input type="submit" name='submit' value="Submit" class='submit'/><br />
</form>
</div>
</div>
</div>
</body>
</html>
បន្ទាប់ពីអ្មកប្រើប្រាស់បានបំពេញឈ្មោះអ្នក និង លេខសំងាត់បានត្រឹមត្រូវ វានឹងនាំគេទៅកាន់ page បន្ទាប់គឺ dashboard ហើយកូដខាងក្រោមនេះគឺសំរាប់ dashboard.php
<?php
session_start();
echo 'Welcome '.$_SESSION['username'];
?>
កូដខាងក្រោមនេះគឺសំរាប់ការ logout យើងនឹង destroy session នោះមានន័យថា កាលណាគេចុច loug out ហើយមិនគេមិនអាចចូលមកកាន់ page dashboard បានទេ ប្រសិនបើគេមិនបានlogin