A-AA+then

โค้ดนี้เป็นโค้ด 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 ครับ

Relate

^