Login แบบที่กำหนดเวลาอยู่บนระบบได้
หลักการก็คือ เมื่อ login สำเร็จ จะทำการบันทึกเวลา เมื่อ logon ลง session ไว้ และ ในหน้าที่ต้องการตรวจสอบการ login(testlogin .php) ก็ให้แทรกโค้ด เพื่อตรวจเวลที่บันทึกไว้ หากหมดเวลา ให้กลับมาหน้า login อีกครั้ง
<!--โค้ดหน้า Login-->
<?php
//เวลาปัจจุบัน จาก server
$hour=0; //เวลาทด เป็น + หรือ - ถ้าเวลาของ Server ไม่ตรงกับประเทศไทย
$min =0; //เวลาทด เป็น + หรือ - ถ้าเวลาของ Server ไม่ตรงกับประเทศไทย
$logtime=date("U",mktime( date("H")+$hour, date("i")+$min ));
$action=$_POST["action];
if (isset($action) && $action=="เข้าระบบ") {
//สำหรับสมาชิก ลงทะเบียน หรือ เข้าระบบ
$user=$_POST["user];
$passwd=$_POST["passwd];
//ตรวจสอบ username และ password ที่นี่
//สมมุติว่า Login สำเร็จ ถ้าไม่สำเร็จให้ Unset($user)
if ($user!="") {
//บันทึก user ลง session
session_start();
$_SESSION["sesuser]=$user;
$_SESSION["sespasswd]=$passwd;
//บันทึกเวลาลง session
$_SESSION["sestime]=$logtime;
//เรียกไปหน้าหลัก สำหรับทดสอบ
echo "<META HTTP-EQUIV=REFRESH CONTENT=\"0; URL=testlogin.php\">";
}
}
?>
<table>
<tr><td align="center" colspan="2"><font color=#555555 size=1>ฟอร์ม Login</font></td></tr>
<form method=post action="?">
<tr><td align=right><font color=#555555 size=1>user : </font></td><td><input size=15 type=text name=user maxlength=15></td></tr>
<tr><td align=right><font color=#555555 size=1>passwd : </font></td><td><input size=15 type=password name=passwd maxlength=15></td></tr>
<tr><td align=right colspan=2><input type=submit name=action value=เข้าระบบ title=\"สมาชิก เข้าระบบ\"></td></tr>
</form>
</table>
ฟอร์มสำหรับการ login ในหน้าหลักครับ
<!--โค้ดหน้า testlogin ที่จะเข้าเมื่อ login สำเร็จ-->
<?php
session_start();
//เวลาปัจจุบัน จาก server
$hour=0; //เวลาทด เป็น + หรือ - ถ้าเวลาของ Server ไม่ตรงกับประเทศไทย
$min =0; //เวลาทด เป็น + หรือ - ถ้าเวลาของ Server ไม่ตรงกับประเทศไทย
$logtime=date("U",mktime( date("H")+$hour, date("i")+$min ));
$action=$_GET["action];
if (isset($action) && $action=="logout") {
unset($_SESSION["sesuser]);
unset($_SESSION["sespasswd]);
unset($_SESSION["sespasswd]);
session_destroy();
echo "ออกจากระบบเรียบร้อย<br />";
} else {
$user=$_SESSION["sesuser];
$passwd=$_SESSION["sespasswd];
$time=$_SESSION["sestime];
//คุณสามารถตรวจสอบ ความถูกต้องของการ Login หรือ สิทธิ์ในการเข้าถึงหน้านี้ได้ที่นี่
//ถ้าไม่ถูกต้อง ให้ exit(); ออกจากหน้านี้ หรือ Redirect กลับไปที่หน้า Login ก็ได้
if ($logtime-$time>60) { //กำหนดเวลาที่จะให้อยู่บนระบบได้ที่นี่ 60=1 นาที
echo "คุณ $user Login นานเกิน 1 นาที แล้ว กรุณากลับไป Login ใหม่<br />";
unset($_SESSION["sesuser]);
unset($_SESSION["sespasswd]);
unset($_SESSION["sespasswd]);
session_destroy();
echo "ออกจากระบบเรียบร้อย<br />";
} else {
echo "คุณ $user อยู่บนระบบนาน ".($logtime-$time)." วินาที แล้ว<br />";
echo "ทดสอบ Click Refresh เป็นระยะๆ<br />";
echo "<a href=?action=logout>ออกจากระบบ</a>";
}
}
?>
ส่วนที่ 2 ชื่อ testlogin.php ถ้าคุณต้องการตรวจสอบเวลา ที่มีการ Login เข้ามาแล้ว ให้ตรวจสอบด้วยโค้ดนี้ หรือ แทรกโค้ดนี้ในหน้าที่ต้องการตรวจสอบการหมดเวลาการ login อาจทำได้ง่ายๆ โดยการ include ไปยังหน้าที่ต้องการก็ได้