|
|
|
รบกวนสอบถามผู้รู้เรื่องระบบการ Login โดยใช้ session/cookie หน่อยค่ะ |
|
|
|
|
|
|
|
คงต้องตีโจทย์ก่อน คือ
- ผู้ใช้อยากให้ระบบ login อยู่ตลอด จนกว่าจะปิดหน้าจอหรือ logout ไป = มีค่าเท่ากับ session อยู่ดี เพราะถ้าทำ cookie ปิดหน้าจอ cookie ก็ยังคงอยู่
- หาก user ไม่มีการโต้ตอบกับระบบนานประมาณ 20 นาที ระบบจะ logout ไปเอง = ก็เท่ากับ session อยู่ดี (มีการเข้า Browser แต่ไม่ได้ใช้) set session.gc_maxlifetime ก็ได้ครับ
"อาจไม่จำเป็นต้องใช้ cookie เลยเพราะมีเงื่อนไขมีข้อกำหนดว่า จนกว่าจะปิดหน้าจอ"
|
|
|
|
|
Date :
2017-02-03 10:03:56 |
By :
dudesaranyu |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
โอ้.... หายไปนานเลย พอดีโดนย้ายให้ไปทำโปรเจคอื่น เลยไม่ได้เข้ามาดู
https://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes
- หาก user ไม่มีการโต้ตอบกับระบบนานประมาณ 20 นาที ระบบจะ logout ไปเอง = ก็เท่ากับ session อยู่ดี (มีการเข้า Browser แต่ไม่ได้ใช้) set session.gc_maxlifetime ก็ได้ครับ
ลอง set session.gc_maxlifetime แล้ว มันไม่ได้อ่ะค่ะ พอ 20 นาที session ก็หมดอายุอยู่ดี คำสั่ง session.gc_maxlifetime มีข้อจำกัดอะไรหรือเปล่าค่ะ
|
|
|
|
|
Date :
2017-07-13 14:51:06 |
By :
KatMee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ก็ทำ 2 session ก็ได้นี่
อันนึง session id เก็บว่า login หรือยัง เก็บจนกว่าจะปิดเบราเซอร์
ทำอีกอันนึงให้สร้างตอน login เช่นชื่อ session_endtime แล้วกำหนดเวลาที่จะหมดอายุลงไปเช่น 20 นาทีข้างหน้า
ทีนี้เวลาเข้าหน้าที่ต้องเช็คว่า login แล้ว เมื่อเช็คแล้วก็ให้กำหนด session_endtime ลงไปใหม่อีก 20 นาทีข้างหน้าจากเวลาปัจจุบัน
เช่น login ตอน 15.00 ก็จะหมด 15.20 เมื่อโหลดหน้าอื่นตอน 15.04 ก็จะหมดตอน 15.24 เป็นต้น
ในหน้าเช็คว่า login ก็ทำการตรวจก่อนด้วยว่า session_endtime หมดแล้วยัง ถ้าหมดแล้วก็คือ logout ไป ถ้ายังไม่หมดก็ต่อเวลาให้
|
|
|
|
|
Date :
2017-07-13 22:56:27 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตัวแปรอะไรขาดหาย ลองหาเติมดู
ปล. code ก็หาจากในบอร์ดนี่ล่ะ มีแจกอยู่ครับ
$hour=0; //เวลาทด เป็น + หรือ - ถ้าเวลาของ Server ไม่ตรงกับประเทศไทย
$min =0; //เวลาทด เป็น + หรือ - ถ้าเวลาของ Server ไม่ตรงกับประเทศไทย
$timeCurrent=date("U",mktime( date("H")+$hour, date("i")+$min ));
$timeFirstLog=$_SESSION['timeFirstLog'];
$timeEndLogin = $_SESSION['timeEndLogin'];
$DelTime = $timeCurrent-$timeFirstLog;
$timeCount = $timeEndLogin-$DelTime ;
/*
echo "timeCurrent ".$timeCurrent."<hr>";
echo "timeFirstLog ".$timeFirstLog."<hr>";
echo "timeEndLogin ".$timeEndLogin."<hr>";
echo "DelTime ".$DelTime."<hr>";
echo "timeCount ".$timeCount."<hr>";
*/
if ($timeCurrent-$timeFirstLog > $timeEndLogin ){ //กำหนดเวลาที่จะให้อยู่บนระบบได้ที่นี่ 60=1 นาที
session_destroy();
echo "<script>alert('Sorry, Login Timeout! Please Login.'); window.location='out.php';</script>";
} else {
}
|
|
|
|
|
Date :
2017-07-14 05:54:47 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
หรือว่าเราควรทำแบบนี้ดี
- User login เข้ามา => สร้าง session => เก็บข้อมูล session ลง database
- Check login => check session
=> ถ้า session ยังอยู่ ให้ทำงานคำสั่งถัดไป
=> ถ้า session timout ให้ไปอ่านค่าใน database และ set session ใหม่ เพื่่อให้ระบบอยู่ต่อ ไม่ logout ออกเอง
อย่างนี้ดีหรือเปล่าอ่ะ
|
|
|
|
|
Date :
2017-07-14 10:06:23 |
By :
KatMee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1.ถ้าเป็นคนในองค์กรเราเอง แจ้งเรื่องตามลำดับขั้น ว่าไอ้ที่ user ต้องการ ในมิติความเป็นจริงมันไม่ควรเป็นแบบนั้น
2.แต่ถ้าเขียนงานให้ลูกค้า ก็ก้มหน้าทำใจ แก้ตามที่คิดมาละครับ แต่ไม่เข้าในมันจะค้างไว้ทำมะเขืออะไร
|
|
|
|
|
Date :
2017-07-14 11:54:25 |
By :
apisitp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ่านแล้วงง สรุปว่า idle 20 นาทีจะเอาไว้มั้ย ถ้าจะเอาไว้จะเอาไว้เพื่ออะไร?ในเมื่อมันขัดกับต้องอยู่ในระบบตลอดจนกว่าจะปิดเบราเซอร์
|
|
|
|
|
Date :
2017-07-17 10:51:24 |
By :
mr.v |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ใช้ cookie ช่วย
|
|
|
|
|
Date :
2017-07-21 15:45:09 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำได้แล้วค่ะ
เราใช้ Cookie ช่วย โดยทำดังนี้
- User login เข้ามา => สร้าง session => สร้าง cookie => เก็บข้อมูล session ลง database (ไว้ดู log)
- Check login => check session
=> ถ้า session ยังอยู่ ให้ทำงานคำสั่งถัดไป
=> ถ้า session timout ให้ไปอ่านค่าใน cookie
=> หาก cookie ยังอยู่ ให้ set session ใหม่ เพื่่อให้ระบบอยู่ต่อ ไม่ logout ออกเอง
=> หาก cookie หมดอายุแล้ว ให้ระบบ logout ออก
ที่ใช้ cookie ช่วย เพราะ cookie สามารถกำหนดเวลาหมดอายุได้ว่าจะให้อยู่ในระบบได้นานแค่ไหน
ส่วน session นั้น หากระบบไม่มีการโต้ตอบใดๆ มันจะหมดอายุใน 20 นาที
เหมือนใช้ cookie ช่วยในการต่อ session ให้ระบบยังคง login อยู่
ง่ายมากค่ะ.... ก่อนหน้านี้คิดอะไรวกวน ยังไม่เข้าใจว่า cookie มันใช้ทำอะไร ต้องเจอกับตัว ถึงเข้าใจ
ขอบคุณทุกท่านที่เข้ามาตอบคำถามเรานะคะ
|
|
|
|
|
Date :
2017-07-26 17:23:52 |
By :
KatMee |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|