|
|
|
สอบถามวิธีกาหนดเวลาการ Login เข้าทำงานกรณีที่ไม่มีการเคลื่อนไหวให้ระบบแจ้งว่า Login ใหม่ จะต้องเขียนยังไงบ้างค่ะ |
|
|
|
|
|
|
|
ผมว่าตัวอย่างนี้สามารถ Apply ได้ครับ => PHP ทำระบบ Login และป้องกันการ ล็อกอิน ซ้ำซ้อนใน User เดียวกัน (MySQLi , Duplicate Session)
Code (PHP)
//*** Reject user not online
$intRejectTime = 20; // Minute
$sql = "UPDATE member SET LoginStatus = '0', LastUpdate = '0000-00-00 00:00:00' WHERE 1 AND DATE_ADD(LastUpdate, INTERVAL $intRejectTime MINUTE) <= NOW() ";
$query = mysqli_query($con,$sql);
คุณจะต้องคิด Logic ให้ได้ครับ เช่น ในกรณีที่ Login ครั้งแรกให้ Insert ลงใน Table และตามอัพเดดเวลาเรื่อย ๆ เมื่อคลิกไปหน้าต่าง ๆ และใช้ Code นี้ Apply ในกรณีที่ไม่มีการเคลื่อนไหว 20 นาที
ในตัวอย่างจะเป็น MySQL แต่ใช้ Concept เดียวกันครับ
|
|
|
|
|
Date :
2015-11-09 16:25:03 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
กระจ่างเลยค่ะ
ขอบคุณมากมายก่ายกอง เลยค่ะคุณพี่
|
|
|
|
|
Date :
2015-11-12 09:28:30 |
By :
paphun |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
วิธีการแจ่มมากครับ แต่ขอแก้ statement ให้หน่อยนะครับ
Code (SQL)
UPDATE member SET LoginStatus = '0', LastUpdate = '0000-00-00 00:00:00'
WHERE 1
AND DATE_ADD(LastUpdate, INTERVAL $intRejectTime MINUTE) <= NOW()
แก้เป็น
Code (SQL)
UPDATE member SET LoginStatus = 0
WHERE LoginStatus<>0
AND DATE_ADD(LastUpdate, INTERVAL $intRejectTime MINUTE) <= NOW()
LastUpdate เก็บไว้อย่างนั้นครับ เอาไว้อ้างอิงได้
และไม่มีผลกับการ ตรวจสอบ
และ DATE_ADD(LastUpdate, INTERVAL $intRejectTime MINUTE) <= NOW()
อย่างเดียว โดยไม่มี LoginStatus=0 ก็จะมีการพยายามทำการแก้ไข record ที่ตรงตามเงือนไขครับ
เป็นการกำหนดให้มันผ่านไปไม่ต้องสนใจ LoginStatus=0 ลดเวลาการทำงานลงไปอีกหน่อย
และ ถ้า loginStatus เป็นตัวเลข ไม่ต้องใส่ quote ครับ เพราะตรวจสอบ ตัวเลข เร็วกว่า ตรวจสอบ text ครับ
ถ้ามีสมาชิกเป็น หมื่นเป็นแสน จะไม่มีปัญหา เน็ตล่ม เพราะมานั่งตรวจสอบ login logout นับ view นี่แหล่ะครับ
หลายเวปเดี้ยงเพราะ เก็บสถิติพวกนี้ แต่ไม่คำนึงถึงระยะเวลาการทำงานของ database นะครับ
|
ประวัติการแก้ไข 2015-11-12 10:09:13
|
|
|
|
Date :
2015-11-12 10:08:20 |
By :
NewbiePHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Date :
2015-11-12 10:23:27 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
บนโฮสจริงมันไม่เปลี่ยนค่าให้อะครับ ตั้งไว้ 1 นาที ก็ยังไม่ออกจากระบบให้เลย
|
|
|
|
|
Date :
2019-06-28 16:19:46 |
By :
ntp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 03
|