Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,027

HOME > PHP > PHP Forum > รบกวนสอบถามผู้รู้เรื่องระบบการ Login โดยใช้ session/cookie หน่อยค่ะ



 

รบกวนสอบถามผู้รู้เรื่องระบบการ Login โดยใช้ session/cookie หน่อยค่ะ

 



Topic : 126229



โพสกระทู้ ( 58 )
บทความ ( 0 )



สถานะออฟไลน์




โจทย์คือ ผู้ใช้อยากให้ระบบ login อยู่ตลอด จนกว่าจะปิดหน้าจอหรือ logout ไป
ซึ่งตอนนี้ หาก user ไม่มีการโต้ตอบกับระบบนานประมาณ 20 นาที ระบบจะ logout ไปเอง (Session time out)
จึงอยากรบกวนขอคำแนะนำหน่อยค่ะว่า ควรจะใช้วิธีการไหนถึงจะดี

ที่ตอนนี้คิดออกคือ
1. ใช้ session ร่วมกับ cookie คือ
พอ login ได้ => เก็บค่าใน session(มีหมดอายุ) => เก็บค่าใน cookie(Lifetime)
หาก session timeout ก็ให้ไป get ค่าจาก cookie => สร้างและเก็บค่าใน session ใหม่ (เพื่อนำไปใช้งานต่อ)
หาก user logout ก้อสั่งทำลายทั้ง session และ cookie

ไม่รู้ว่าวิธีการนี้ จะ work หรือเปล่าน่ะค่ะ (เพราะเคยใช้แต่ session ยังไม่เคยใช้ cookie) รบกวนขอคำชี้แนะด้วยค่ะ



Tag : PHP, HTML/CSS







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2017-02-02 14:37:08 By : KatMee View : 5722 Reply : 12
 

 

No. 2



โพสกระทู้ ( 4,169 )
บทความ ( 7 )

Hall of Fame 2012

สถานะออฟไลน์


คงต้องตีโจทย์ก่อน คือ
- ผู้ใช้อยากให้ระบบ login อยู่ตลอด จนกว่าจะปิดหน้าจอหรือ logout ไป = มีค่าเท่ากับ session อยู่ดี เพราะถ้าทำ cookie ปิดหน้าจอ cookie ก็ยังคงอยู่
- หาก user ไม่มีการโต้ตอบกับระบบนานประมาณ 20 นาที ระบบจะ logout ไปเอง = ก็เท่ากับ session อยู่ดี (มีการเข้า Browser แต่ไม่ได้ใช้) set session.gc_maxlifetime ก็ได้ครับ
"อาจไม่จำเป็นต้องใช้ cookie เลยเพราะมีเงื่อนไขมีข้อกำหนดว่า จนกว่าจะปิดหน้าจอ"






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-02-03 10:03:56 By : dudesaranyu
 


 

No. 3



โพสกระทู้ ( 58 )
บทความ ( 0 )



สถานะออฟไลน์


โอ้.... หายไปนานเลย พอดีโดนย้ายให้ไปทำโปรเจคอื่น เลยไม่ได้เข้ามาดู

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
 

 

No. 4



โพสกระทู้ ( 4,720 )
บทความ ( 8 )



สถานะออฟไลน์


ก็ทำ 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
 


 

No. 5



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ตัวแปรอะไรขาดหาย ลองหาเติมดู
ปล. 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
 


 

No. 6



โพสกระทู้ ( 58 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 4 เขียนโดย : mr.v เมื่อวันที่ 2017-07-13 22:56:27
รายละเอียดของการตอบ ::
วิธีนี้ก็เคยคิดอยู่เหมือนกันค่ะ แต่ติดอยู่ที่ว่า หาก login ตอน 15.00 แล้วไม่มี action กับระบบเลยเกิน 20 นาที จะเกิด session timout อยู่ดี
ประเด็นคือ user ไม่ต้องการให้ระบบ logout เอง ประมาณว่า ชั้น login เข้าระบบตอนเช้า เปิดทิ้งไว้ไปทำอย่างอื่นได้ ตอนเย็น ชั้นก็ยังคงอยู่ในระบบ จนกว่าชั้นจะกด logout หรือ close windows หรือ shutdown computer นั่นแล...



ประวัติการแก้ไข
2017-07-14 09:55:37
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-07-14 09:53:49 By : KatMee
 


 

No. 7



โพสกระทู้ ( 58 )
บทความ ( 0 )



สถานะออฟไลน์


หรือว่าเราควรทำแบบนี้ดี

- 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
 


 

No. 8



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


1.ถ้าเป็นคนในองค์กรเราเอง แจ้งเรื่องตามลำดับขั้น ว่าไอ้ที่ user ต้องการ ในมิติความเป็นจริงมันไม่ควรเป็นแบบนั้น
2.แต่ถ้าเขียนงานให้ลูกค้า ก็ก้มหน้าทำใจ แก้ตามที่คิดมาละครับ แต่ไม่เข้าในมันจะค้างไว้ทำมะเขืออะไร
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-07-14 11:54:25 By : apisitp
 


 

No. 9



โพสกระทู้ ( 58 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : apisitp เมื่อวันที่ 2017-07-14 11:54:25
รายละเอียดของการตอบ ::
นั่นน่ะสิคะ..... จะ login ค้างไว้เพื่อ..... เราก็อธิบายไปแล้วว่ามันไม่ปลอดภัย แต่คงต้องแก้ตามที่ลูกค้าเค้าต้องการ บางที ความต้องการของลูกค้าก็ย้อนแย้งกันเอง เราก็ได้แต่อธิบาย ชี้แนะ แต่ถ้าเค้ายืนกรานจะเอาแบบนี้ ก็ต้องแก้ตามกันไป

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-07-17 10:02:25 By : KatMee
 


 

No. 10



โพสกระทู้ ( 4,720 )
บทความ ( 8 )



สถานะออฟไลน์


อ่านแล้วงง สรุปว่า idle 20 นาทีจะเอาไว้มั้ย ถ้าจะเอาไว้จะเอาไว้เพื่ออะไร?ในเมื่อมันขัดกับต้องอยู่ในระบบตลอดจนกว่าจะปิดเบราเซอร์
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-07-17 10:51:24 By : mr.v
 


 

No. 11



โพสกระทู้ ( 58 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 10 เขียนโดย : mr.v เมื่อวันที่ 2017-07-17 10:51:24
รายละเอียดของการตอบ ::
ไม่เอา idle 20 นาที ค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-07-20 14:19:47 By : KatMee
 


 

No. 12



โพสกระทู้ ( 9,559 )
บทความ ( 2 )



สถานะออฟไลน์


ใช้ cookie ช่วย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2017-07-21 15:45:09 By : Chaidhanan
 


 

No. 13



โพสกระทู้ ( 58 )
บทความ ( 0 )



สถานะออฟไลน์


ทำได้แล้วค่ะ

เราใช้ 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
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : รบกวนสอบถามผู้รู้เรื่องระบบการ Login โดยใช้ session/cookie หน่อยค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 02
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่