โค้ดการ Login ด้วยการบันทึกคน login ลงไฟล์

โค้ดนี้เป็นโค้ด login ที่มีหน้าตาเหมือนกับกรอบ login ของเว็บผมในเวอร์ชั่นที่เป็น AJAX บันทึกคนที่ login ลงไฟล์ สำหรับเอาไว้แสดงรายชื่อคน online ได้

ในตัวอย่างคุณจำเป็นต้องกำหนดไม่ให้มีชื่อ User ซ้ำกันบนระบบนะครับ ในโปรแกรมผมทำการบันทึก user ลงบนไฟล์ ถ้าไม่สะดวก คุณอาจเปลี่ยนเป็นบันทึกลงฐานข้อมูลได้ ผมบันทึกลงบนไฟล์เพื่อให้สามารถทดสอบโค้ดได้ครับ ในตัวอย่างผมไม่ได้ใส่การตรวจสอบ ความถูกต้องของ User เอาไว้ให้ ผมสมมุติให้มีการ login สำเร็จทุกชื่อครับ

<?
 ob_start();

 $action = $_GET[action];

 if ( $action == "login" )
 {
  //สำหรับสมาชิก ลงทะเบียน หรือ เข้าระบบ
  $user = $_POST[user];
  $passwd = $_POST[passwd];

  echo "ทำการตรวจสอบความถูกต้องของสมาชิกที่นี่ และทำการเข้าระบบ<br />";
  echo "ด้วยการบันทึกลง Cookie หรือ Seesion<br />";
  echo "user=$user<br />";
  echo "passwd=$passwd<br />";
  echo "สมมุติให้ Login สำเร็จ ถ้า Login ไม่สำเร็จให้ Unset($user)<br /><br />";

  //บันทึกว่า user นี้เข้าระบบแล้ว สำหรับแสดงว่า user นี้ online
  $f = "user.dat";
  $online = false;

  if ( file_exists( $f ) )
  {
   $fr = file( $f ); //อ่านข้อมูลจากไฟล์ลงบน array (เป็นบรรทัด)
   for( $i = 0 ; $i < count( $fr ) && !$online ; $i++ )
   {
    $online = ( trim( $fr[$i] ) == $user ); //ตรวจสอบ ว่ามี user ซ้ำหรือไม่
   };
  };

  if ( !$online ) //ถ้าตรวจสอบแล้ว ไม่เคยมี user นี้ Login
  {
   $fw = fopen( $f , "w" ); //เปิดไฟล์เพื่อเขียน
   for( $i = 0 ; $i < count( $fr ) && !$online ; $i++ )
   {
    fputs( $fw , trim( $fr[$i] )." " ); //บันทึกรายการ user เดิม
   };
   fputs( $fw , "$user " ); //บันทึก user ใหม่
   fclose( $fw ); //ปิดไฟล์

   //บันทึก ลง Cookie เมื่อการ Login สมบูรณ์
   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>

<script language="JavaScript" type="text/javascript">
function check_login()
{
 var v1 = document.login_form.user.value;
 var v2 = document.login_form.passwd.value;

 if ( v1.length == 0 )
 {
  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 ครับ

ผู้เขียน goragod โพสต์เมื่อ 01 เม.ย. 2551 เปิดดู 15,234 ป้ายกำกับ PHPFormJavascript
^