โค้ดการ Login ด้วยการบันทึกคน login ลงไฟล์
โค้ดนี้เป็นโค้ด login ที่มีหน้าตาเหมือนกับกรอบ login ของเว็บผมในเวอร์ชั่นที่เป็น AJAX บันทึกคนที่ login ลงไฟล์ สำหรับเอาไว้แสดงรายชื่อคน online ได้ $action = $_GET[action]; if ( $action == "login" ) echo "ทำการตรวจสอบความถูกต้องของสมาชิกที่นี่ และทำการเข้าระบบ<br />"; //บันทึกว่า user นี้เข้าระบบแล้ว สำหรับแสดงว่า user นี้ online if ( file_exists( $f ) ) if ( !$online ) //ถ้าตรวจสอบแล้ว ไม่เคยมี user นี้ Login //บันทึก ลง Cookie เมื่อการ Login สมบูรณ์ <script language="JavaScript" type="text/javascript"> if ( v1.length == 0 )
ในตัวอย่างคุณจำเป็นต้องกำหนดไม่ให้มีชื่อ User ซ้ำกันบนระบบนะครับ ในโปรแกรมผมทำการบันทึก user ลงบนไฟล์ ถ้าไม่สะดวก คุณอาจเปลี่ยนเป็นบันทึกลงฐานข้อมูลได้ ผมบันทึกลงบนไฟล์เพื่อให้สามารถทดสอบโค้ดได้ครับ ในตัวอย่างผมไม่ได้ใส่การตรวจสอบ ความถูกต้องของ User เอาไว้ให้ ผมสมมุติให้มีการ login สำเร็จทุกชื่อครับ
ob_start();
{
//สำหรับสมาชิก ลงทะเบียน หรือ เข้าระบบ
$user = $_POST[user];
$passwd = $_POST[passwd];
echo "ด้วยการบันทึกลง Cookie หรือ Seesion<br />";
echo "user=$user<br />";
echo "passwd=$passwd<br />";
echo "สมมุติให้ Login สำเร็จ ถ้า Login ไม่สำเร็จให้ Unset($user)<br /><br />";
$f = "user.dat";
$online = false;
{
$fr = file( $f ); //อ่านข้อมูลจากไฟล์ลงบน array (เป็นบรรทัด)
for( $i = 0 ; $i < count( $fr ) && !$online ; $i++ )
{
$online = ( trim( $fr[$i] ) == $user ); //ตรวจสอบ ว่ามี user ซ้ำหรือไม่
};
};
{
$fw = fopen( $f , "w" ); //เปิดไฟล์เพื่อเขียน
for( $i = 0 ; $i < count( $fr ) && !$online ; $i++ )
{
fputs( $fw , trim( $fr[$i] )."
" ); //บันทึกรายการ user เดิม
};
fputs( $fw , "$user
" ); //บันทึก user ใหม่
fclose( $fw ); //ปิดไฟล์
setCookie( "user" , $user , time() + 3600 * 24 * 365 ); //กำหนดให้ cookie หมดเวลาใน 1 ปี
setCookie( "passwd" , $passwd , time() + 3600 * 24 * 365 ); //กำหนดให้ cookie หมดเวลาใน 1 ปี
}
else
{
echo "<font color='red'>ชื่อนี้ Login แล้ว<br />ขออภัย กรุณา Login โดยใช้ User อื่น</font>";
$user = '';
};
}
else if ( $action == "logout" )
{
$f = "user.dat";
$user = $_COOKIE[user]; //อ่าน user จาก cookie
if ( file_exists( $f ) )
{
$fr = file( $f ); //อ่านข้อมูลจากไฟล์ลงบน array (เป็นบรรทัด)
$fw = fopen( $f , "w" ); //เปิดไฟล์เพื่อเขียน
for( $i = 0 ; $i < count( $fr ) ; $i++ )
{
if ( trim( $fr[$i] ) != $user )
{
fputs( $fw , trim( $fr[$i] )."
" ); //บันทึกรายการ user เดิม
};
};
fclose( $fw ); //ปิดไฟล์
};
$user = ''; //ลบ user
//Logout ลบ cookie ออก
setCookie( "user" , "" );
setCookie( "passwd" , "" );
};
?>
<table border="0" cellspacing="1" cellpadding="0" bgcolor="black">
<tr><td background="btn_blue.gif"><img src="btn_blue.gif" /></td>
</tr>
<tr><td>
<table border="0" cellspacing="0" cellpadding="4">
<tr><td bgcolor="#D3E4F5" align="center">
<table bgcolor="#999999" cellspacing="0" cellpadding="1" width="100%"><tr><td>
<table cellspacing="5" cellpadding="0" background="lbkg.gif" width="100%">
<tr><td colspan="2" align="center">g-<font face="Arial" size="4" color="red">O</font>-r-a-g-o-d.com</td></tr>
<tr><td colspan="2" align="center"><font size="1" color="#666666">แหล่งเรียนรู้จากซอร์สโค้ด<br />และแอพพลิเคชั่น</font></td></tr>
<?
if ( $user != "" ) //ถ้า Login สำเร็จให้เก็บ user ไว้ และมาแสดง user
{
echo "<tr><td colspan='2' align='center'>สวัสดี คุณ $user</td></tr>";
echo "<tr><td colspan='2' align='center'><a href='?action=logout'>Logout</a></td></tr>";
}
else //ถ้า Login ไม่สำเร็จ กลับมาแสดงตารางกรอก password ใหม่
{
?>
<form action="?action=login" method="post" name="login_form" id="login_form" onsubmit="return check_login()">
<tr><td align="right"><font color="#555555" size="1">user : </font></td><td><input size="15" type="text" name="user" maxlength="15" class="red" /></td></tr>
<tr><td align="right"><font color="#555555" size="1">passwd : </font></td><td><input size="15" type="password" name="passwd" maxlength="15" class="red" /></td></tr>
<tr><td align="right" colspan="2"><input type="submit" name="submit" value="เข้าระบบ" class="red" title="สมาชิก เข้าระบบ" /></td></tr>
</form>
<?
};
?>
</table>
</td></tr></table>
</td></tr>
</table>
</td></tr>
</table>
function check_login()
{
var v1 = document.login_form.user.value;
var v2 = document.login_form.passwd.value;
{
alert('กรุณาป้อน Username ก่อน');
document.login_form.user.focus();
return false;
}
else if ( v2.length == 0 )
{
alert('กรุณาป้อน Password ก่อน') ;
document.login_form.passwd.focus();
return false;
};
return true;
};
</script>
สำหรับการตรวจสอบว่ามีใคร login บ้าง สามารถดูได้จากไฟล์ user.dat ครับ