GORAGOD.com

freelance, web developer, web designer, hosting, domain name

ช่วยดูการบันทึกชื่อ user ที่กำลังออนไลน์ทีครับ

คือผมได้ลองอ่านในบทความที่การทำแสดงรายชื่อ user ที่กำลังออนไลน์หรือที่ล็อกอินเข้าสู่ระบบน่ะครับ

ผมลองนำมาประยุกต์ใช้กับฟอร์มของผม ไม่สำเร็จสักทีครับ เนื่องจากผมยังไม่ค่อยสันทัดเรื่องนี้น่ะครับ

ของผมแอ๊คชั่นไปอีกหน้าอ่ะครับ ลองช่วยประยุกต์ให้ผมหน่อยนะครับ จนปัญญาจิงๆครับ

(ผมมาถามรอบสองแล้วครับ รอบแรกมาถามครั้งนึงแล้ว แต่ก็ไม่สำเร็จ)


นี่หน้าฟอร์มของผมครับ

<form name="checkForm" action="login_check.php" method="post" onSubmit="return check();">
          
           <input name="user_login" type="text" id="user_login" size="15">
                       
<input name="pwd_login" type="password" id="pwd_login" size="15">
           
             <input name="Submit" type="submit" value="เข้าสู่ระบบ" alt="เข้าสู่ระบบ" />
             <script language="JavaScript">
function check() {
if(document.checkForm.user_login.value=="") {
alert("กรุณากรอกชื่อที่ใช้ในการล็อกอินด้วยครับ") ;
document.checkForm.user_login.focus() ;
return false ;
}
else if(document.checkForm.pwd_login.value=="") {
alert("กรุณากรอกรหัสผ่านด้วยครับ") ;
document.checkForm.pwd_login.focus() ;
return false ;
}
else
return true ;

}
                         </script>

                  
         </form>




ส่วนนี่หน้า login_check.php


<?php
session_start() ;

$user_login = $_POST['user_login'];
$pwd_login = $_POST['pwd_login'];


 if(isset($user_login) and isset($pwd_login)) {
include("config.inc.php") ;

?>
<html>
<head>
<title>กำลังโหลด...</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-874">
</head>

<body bgcolor="#FFFFFF">

<?php
mysql_select_db($db) ;
$result = mysql_query("select user,password from member where user='$user_login' and password='$pwd_login'") ;
$num = mysql_num_rows($result) ;
if($num<=0) {
echo "<br><br><center><font size='3' face='MS Sans Serif' color='red'><b>รหัสผ่านไม่ถูกต้องครับ กรุณาตรวจสอบ!!!</b></font></center>" ;
print "<meta http-equiv=refresh content=2;URL=index.php>";
exit() ;
}
else {

$dbarr = mysql_fetch_array($result) ;
if($user_login!=$dbarr['user'] and $pwd_login!=$dbarr['password']) {
echo "รหัสผ่านไม่ถูกต้อง" ;
exit() ;
}

else {
$login_true = $user_login ;
session_register("login_true") ;
echo "<meta http-equiv='refresh' content='3 ;url=index.php'>" ;
echo "<br><br><br><br><br><center><img src='load2.gif' border='0' align='absmiddle'>&nbsp; กำลังโหลด...</center>" ;
exit() ;
}
}
}
?>


</body>
</html>

26 ก.ค. 2552 7 2,314

คำถามคืออะไร ?
#1

ผมต้องนำพวกเนี้ยไปไว้ตรงไหนครับ  หรือไปประยุกต์ใช้กับฟอร์มของผมยังไงครับ


 //บันทึกว่า 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" , "" );
 };

#2

ที่ไม่สำเร็จก็เพราะไม่ยอมศึกษาลำดับการทำงานให้ดีก่อน แล้วเขียนโค้ดไปตามลำดับการทำงาน ถ้าเข้าใจลำดับการทำงานของโค้ด ก็จะออกแบบได้ไม่ยาก

บันทึกคนที่ login ก็ต้องเอาไว้ส่วนที่เมือ login สำเร็จ ลองหาดูว่า login (สำเร็จตอนไหน)

ลบ cookie ก็ต้องเอาไว้ เมื่อตอน logout เรียบร้อยแล้ว (ยังไม่เห็นโค้ด)

form login => submit => ตรวจสอบชื่อ และ รหัสผ่าน => login สำเร็จ บันทึก cookie และ redirect ไปหน้าที่ต้องการ

form login => submit => ตรวจสอบชื่อ และ รหัสผ่าน => login ไม่สำเร็จ => แสดงข้อผิดพลาด => กลับไปแสดงฟอร์ม

ลำดับขั้นก็มีเท่านี้ ก็ลองออกแบบดู

$dbarr = mysql_fetch_array($result) ;
if($user_login!=$dbarr['user'] and $pwd_login!=$dbarr['password']) {
   // login ไม่สำเร็จ
   echo "รหัสผ่านไม่ถูกต้อง" ;
   exit() ;
}else {
  // login สำเร็จ อยากเขียนโค้ดอะไรก็เขียนตรงนี้
  $login_true = $user_login ;
  session_register("login_true") ;
  echo "<meta http-equiv='refresh' content='3 ;url=index.php'>" ;
  echo "<br><br><br><br><br><center><img src='load2.gif' border='0' align='absmiddle'>&nbsp; กำลังโหลด...</center>" ;
  exit() ;

}

#3

ขอบคุณคับ

จะลองดูอีกครั้งนะครับ
#4

อาจารย์ครับ  โค๊ดในส่วนนี้มีหน้าที่อะไรหรอครับ

ผมลองทำดูแล้วครับมันบันทึกลงไฟล์ user.dat ได้แล้วครับ

แต่มันฟ้องแบบนี้ที่หน้า login_check.php  แต่มันก็รีไดเรคไปหน้าต่อไปนะครับ ก็เลยอยากรู้ว่ามันเป็นเพราะอะไรครับ


Warning: Cannot modify header information - headers already sent by (output started at /home/buumedclub/domains/buumedclub.in.th/public_html/thaimusicbuu/config.inc.php:2) in /home/buumedclub/domains/xxxxxxxxxxxx/public_html/thaimusicbuu/login_check.php on line 63

Warning: Cannot modify header information - headers already sent by (output started at /home/buumedclub/domains/buumedclub.in.th/public_html/thaimusicbuu/config.inc.php:2) in /home/buumedclub/domains/xxxxxxxxxxxx/public_html/thaimusicbuu/login_check.php on line 64 


โค๊ดในส่วนนี้มีหน้าที่อะไรหรอครับ

  //บันทึก ลง Cookie เมื่อการ Login สมบูรณ์
line 63 ->   setCookie( "user" , $user_login , time() + 3600 * 24 * 365 ); //กำหนดให้ cookie หมดเวลาใน 1 ปี
line 64 ->   setCookie( "password" , $pwd_login , time() + 3600 * 24 * 365 ); //กำหนดให้ cookie หมดเวลาใน 1 ปี
  }
  else
  {
   echo "<font color='red'>ชื่อนี้ Login แล้ว<br />ขออภัย กรุณา Login โดยใช้ User อื่น</font>";
   $user_login = '';

ขอบคุณค้าบ
#5

Cannot modify header information

//บันทึก ลง Cookie เมื่อการ Login สมบูรณ์

คำอธิบายก็มีนี่ อธิบายอีกทีก็ได้แบบนี้ ผมต้องแปลไทยเป็นไทยด้วยเหรอ 555++
#6

5555+ 

แล้วถ้าผมไม่ใส่ในส่วนของ บันทึก cookie มันจะเกิดปัญหาอะไรป่าวครับ

มันจะทำงานผิดเพี้ยนหรือป่าวคับ
#7
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^