ช่วยดูการบันทึกชื่อ 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'> กำลังโหลด...</center>" ;
exit() ;
}
}
}
?>
</body>
</html>
ผมต้องนำพวกเนี้ยไปไว้ตรงไหนครับ หรือไปประยุกต์ใช้กับฟอร์มของผมยังไงครับ
//บันทึกว่า 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" , "" );
};
บันทึกคนที่ 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'> กำลังโหลด...</center>" ;
exit() ;
จะลองดูอีกครั้งนะครับ
ผมลองทำดูแล้วครับมันบันทึกลงไฟล์ 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 = '';
ขอบคุณค้าบ
//บันทึก ลง Cookie เมื่อการ Login สมบูรณ์
คำอธิบายก็มีนี่ อธิบายอีกทีก็ได้แบบนี้ ผมต้องแปลไทยเป็นไทยด้วยเหรอ 555++
แล้วถ้าผมไม่ใส่ในส่วนของ บันทึก cookie มันจะเกิดปัญหาอะไรป่าวครับ
มันจะทำงานผิดเพี้ยนหรือป่าวคับ