Tags:

คือกำลังทำเว็บอยู่ แล้วเกิดสงสัยอยากทำตามคือ

อย่าง Facebook,google,อื่นๆ เวลาเข้าระบบ ก็พิมพ์ อีเมล์กับรหัสผ่าน แล้วก็ล็อกอิน เข้าไปได้เลย

ไม่มีหน้าแสดงผลการเข้าระบบ อย่างใน http://www.phpeasystep.com/phptu/6.html

เลยอยากทำได้บ้าง

ขอบคุณล่วงหน้า

//////////
ขอบคุณ คุณ jingjingmaple

แก้ปัญหาได้แล้ว

Get latest news from Blognone
By: AmidoriA
UbuntuWindows
on 5 October 2015 - 18:32 #849753
AmidoriA's picture

หน้าขึ้นมาเช็คกับฐานข้อมูลนี่คือยังไงครับ ปกติเวลาเราเข้าสู่ระบบ มันก็ต้องเข้าใช้งานได้เลยไม่ใช่หรือครับ ไม่จำเป้นต้องมีหน้าอะไรขึ้นมาขวาง

By: KuroNeko_Hiki
AndroidUbuntuWindows
on 5 October 2015 - 20:51 #849781 Reply to:849753
KuroNeko_Hiki's picture

ใช่ๆ เราต้องการทำอย่างนั้นแหละ ล็อกอินแล้วก็ผ่านไปเลย แต่ที่เห็นสอนๆกันอยู่ ในเน็ตเนี้ย มันเป็นแบบมีหน้า เช็ดล็อกอินขึ้นมา แล้วก็ส่งไปอีกหน้าเอา

By: mix5003
AndroidUbuntuWindows
on 5 October 2015 - 18:56 #849759

ถ้าผมเข้าใจไม่ผิดก็ลองดูอันล่างนี้

ของ Facebook
https://developers.facebook.com/docs/facebook-login/web#steps

ของ Google อันนี้มั้ง
https://developers.google.com/identity/sign-in/web/backend-auth

หลัก Flow การทำงานของมันคือเวลากด login มันจะ popup หน้า login ของ facebook,google
จากนั้นพอ login เสร็จ เค้าจะส่ง access_token มาซึ่งเราเอาไปใช้ get id ของ facebook,google ได้
จากนั้นเราก็เก็บ id ที่ได้มาบนเว็บเราซะ ส่วน access_token ไม่ต้องเก็บใน db เพราะเดียวมันก็หมดอายุ
พอเค้า login มาก็ เอา access_token ส่งให้ server เรา เราก็เอา access_token ไปดูว่าอันนี้ของ user id ใด แล้วก็ให้ login ประมาณนี้มั้งครับ

By: cmmadnat
iPhoneUbuntuWindows
on 5 October 2015 - 19:25 #849768 Reply to:849759

ไม่ใช่ครับ อันนั้นคือ OAuth login สำหรับแอพข้างนอกที่จะเข้าไปใช้ข้อมูลของ Facebook, google, twitter

ส่วนใหญ่แอพพวกนี้จะมี Cookie ทำหน้าที่เหมือนกับเป็น Remember me
ค่าใน Cookie มักจะเป็น MD5 Hash หรือการเข้ารหัสของ Username, Password, Salt แล้วแต่ที่ว่าจะผสมยังไง อันนี้ก็คือแบบที่ 1 เวลาเราเปิด Facebook เราก็จะส่ง Cookie ไปให้ทาง Facebook แล้ว Facebook ก็จะทำการ ล็อกอินให้กับเราเองครับ

แบบที่ 2 ก็คือ Cookie ข้างในมีค่า Random อะไรซักอย่างที่ Facebook สร้างขึ้นมา
เวลาเราเปิด Facebook. คุ๊กกี้จะถูกส่งไป Facebook ก็จะเช็คกับฐานข้อมูลว่า cookie นี้ของใคร แล้วก็ Login ให้

ปัญหาก็คือ ไม่มีใครรู้ว่า Facebook, twitter, google ใช้วิธีไหนในการเก็บ cookie ไงครับ เราถึงยังปลอดภัยอยู่ถึงตอนนี้ หรือไม่ก็อาจจะมีวิธีพิศดารแบบอื่นก็เป็นไปได้

By: varavut
ContributorWindows PhoneAndroidBlackberry
on 5 October 2015 - 20:28 #849777

ปกติก็ส่ง request แล้วฝั่ง server ก็เช็คเสร็จแล้วจะ redirect ไปไหนหรือคืนข้อมูลอะไรก็ได้หนิครับ

By: KuroNeko_Hiki
AndroidUbuntuWindows
on 5 October 2015 - 20:50 #849780
KuroNeko_Hiki's picture

อธิบายใหม่ละกัน คือ เข้าระบบปกติที่เห็นสอนๆกันคือ มีหน้า Login แล้วก็หน้าเช็ดกับฐานข้อมูลว่าตรงไหม แล้วก็ redirect ไป สงสัยว่า

พวก Facebook Google อื่นๆ มันไม่แสดงหน้า เช็ดล็อกอินให้เห็นเลย เขาเขียนโค้ดซ่อนไว้ หรือเร็วจน url ไม่เปลี่ยนเลย

By: lancaster
Contributor
on 5 October 2015 - 21:04 #849786 Reply to:849780

ขอดูตัวอย่างที่ว่ามีหน้าเชคหน่อยสิครับ (ไม่เคยเหนเลย)

By: KuroNeko_Hiki
AndroidUbuntuWindows
on 5 October 2015 - 21:16 #849790 Reply to:849786
KuroNeko_Hiki's picture

http://www.phpeasystep.com/phptu/6.html

ตอนนี้ เกิดไอเดียละ เดี้ยวจะลองก่อนว่าได้ไหม...

By: AmidoriA
UbuntuWindows
on 6 October 2015 - 10:06 #849937 Reply to:849790
AmidoriA's picture

ปกติ เค้าก็ทำอย่างนี้กันนะครับ แต่ checklogin.php เนี่ย มันไม่ได้แสดงขึ้นมาให้ผู้ใช้เห็นอยู่แล้วครับ เพราะมันก็ redirect ไปเลย คนใช้ก็ไม่รู้อยู่ดีว่ามันทำงานผ่านไฟล์ไหนอะไรบ้าง

จะให้เร็วกว่านี้ก็คงต้อง AJAX ไปเลย แต่คิดว่าคงไม่จำเป็นครับ

By: saratlim
ContributorAndroid
on 5 October 2015 - 22:31 #849806
saratlim's picture

ก็พอรับ @_POST มาแล้วก็ไม่ต้องเขียนหน้า check login ดิครับ

อยากโยนไปหน้าไหนก็ได้

อย่างที่ผมเขียนประจำก็โยนไปหน้าเดิม แล้วเช็คว่า UserID ตรงกับ Password ไหมค่อยทำอย่างอื่น


blog

By: jingjingmaple
ContributorWindows PhoneAndroidUbuntu
on 5 October 2015 - 22:33 #849807

เท่าที่นึกออกแบบเบสิค ก็คือมีหน้าเช็คอยู่ แต่แทนที่จะทำฟอร์มปกติแล้วโยนให้ไปอีกหน้านึงเพื่อล็อคอิน (ซึ่งต้องเปลี่ยนหน้า) ก็ใช้ ajax โยนแบบเงียบๆ ทำงานบนเบื้องหลังแทน
ลองดู http://api.jquery.com/jQuery.ajax/ ครับ

By: KuroNeko_Hiki
AndroidUbuntuWindows
on 5 October 2015 - 22:37 #849808 Reply to:849807
KuroNeko_Hiki's picture

เดี้ยวจะลองดูนะ

ขอบคุณจ้า

By: kamij33
Windows PhoneWindows
on 6 October 2015 - 02:22 #849865

ทำแบบนี้ก็ได้ครับ หน้า login.php แบ่งเป็น 2 ส่วนคือ GET กับ POST เวลาเข้าหน้า Login ให้ใช้ส่วนของ method GET แสดง
พอ user กด login ให้ยิง post form มาที่หน้าเดิมแล้วใช้ส่วนของ method post ในการเช็คจากฐานข้อมูล แล้วค่อย redirect

By: aimakung
AndroidUbuntuWindowsIn Love
on 6 October 2015 - 11:09 #849960

ตาม Design Pattern ปกติของการทำเว็บก็สมควรจะ Redirect นะครับ เวลา User Refresh จะได้ไม่เจอถามว่าจะ Submit form ซ้ำไหม

อ้างอิง: https://en.wikipedia.org/wiki/Post/Redirect/Get

By: HMage
AndroidWindows
on 7 October 2015 - 14:50 #850563

วิธี login มีหลายแบบ คนอื่นตอบให้แล้ว ผมขอพูดอย่างอื่นต่อเลยแล้วกัน

ประเด็นของการ log in คือ ทำยังไงให้ server รู้ว่า request หลังจากนั้นเป็น user คนไหน
ปกติก็จะจำ ID อะไรสักอย่างไว้ใน cookie ฝั่ง client หรือ session ฝั่ง server
วิธีมันพลิกแพลงได้หลากหลายมากครับ แล้วแต่ภาษาหรือวิธีที่ถนัดเลย

ปกติผมจะใช้วิธีจำใส่ session ที่ server ครับ โดยแยกส่วน web ของเราไว้ดังนี้

(1. ขั้นตอนการ log in

1.1. หน้า log in form สำหรับให้ user ส่ง user หรือ password หรืออะไรที่ใช้แสดงและยืนยันตนได้
ตรงนี้จะใช้ HTML tag form post หรือ get ก็ได้ทั้งนั้น
หรือจะใช้ JavaScript AJAX ก็ได้ แล้วแต่ความล้ำ

1.2. Log in script ฝั่ง server สำหรับรับจาก 1.1 และสร้างและจำ ID ที่จะใช้ระบุตัว user ทีหลัง
ถ้าเก็บใส่ cookie ก็ระวังไว้ด้วยว่ามันเก็บอยู่ที่ browser ฝั่ง client ซึ่ง user สามารถแก้เองได้
ถ้าเก็บใส่ session ฝั่ง server PHP ก็จะแยกให้เองว่าเป็นคนไหน แต่ถ้าปิด browser ก็จะหายทันที

(2. หน้าเนื้อหาอื่นๆ ของ web ทุกๆ หน้าจะ check ID ว่า log in หรือยังและเป็น user คนไหน
ถ้ายังไม่ log in ก็ redirect ไปหน้า log in form
ถ้า log in แล้วก็ดึงข้อมูลของ web สำหรับ user คนนั้น

(3. ส่วน redirect ทำได้หลายแบบ แบ่งเป็น 2 แบบใหญ่ๆ คือ

3.1. Redirect ด้วย client: จะใช้วิธีดั้งเดิมใส่ HTML tag meta refresh ก็ได้ หรือจะ redirect ด้วย JavaScript ก็ได้

3.2. แอบ redirect จาก server วิธีนี้เร็วกว่าเพราะไม่ต้องรอ request/response กลับไปกลับมาและ user จะไม่เห็นลำดับการ redirect แต่ข้อเสียคือทำให้ URL ค้างอยู่ที่ log in script เช่น เมื่อ log in แล้วให้แสดงหน้า newTopic.php ต่อเลย เราก็ใช้วิธี include ท้าย log script ให้ส่งเนื้อหาของ newTopic.php กลับไปให้ browser ได้เลย แต่ browser จะค้างอยู่ที่ logInScript.php ก็ไม่ค่อยสวยเท่าไหร่

By: KuroNeko_Hiki
AndroidUbuntuWindows
on 7 October 2015 - 22:55 #850710 Reply to:850563
KuroNeko_Hiki's picture

ตอนนี้ที่ลองทำอยู่ ยังไม่ได้ทดสอบกับตอนที่ปิด JavaScript ว่าจะเป็นยังไง

ตอนนี้กำลังมองหา Host ฟรี แต่จดโดเมนนี่น่าจะได้แล้ว

ทำเว็บบล็อกเล่นๆ ไม่อยากใช้พวกสำเร็จรูป เลยลองเขียนเองเล่นๆ

ขอบคุณที่แนะนำจ้า

By: crucifier
iPhoneAndroidUbuntu
on 7 October 2015 - 20:20 #850671

น่ารักมากครับ ขยันศึกษาตั้งใจหาความรู้ดีมาก ^^