คือกำลังทำเว็บอยู่ แล้วเกิดสงสัยอยากทำตามคือ
อย่าง Facebook,google,อื่นๆ เวลาเข้าระบบ ก็พิมพ์ อีเมล์กับรหัสผ่าน แล้วก็ล็อกอิน เข้าไปได้เลย
ไม่มีหน้าแสดงผลการเข้าระบบ อย่างใน http://www.phpeasystep.com/phptu/6.html
เลยอยากทำได้บ้าง
ขอบคุณล่วงหน้า
//////////
ขอบคุณ คุณ jingjingmaple
แก้ปัญหาได้แล้ว
หน้าขึ้นมาเช็คกับฐานข้อมูลนี่คือยังไงครับ ปกติเวลาเราเข้าสู่ระบบ มันก็ต้องเข้าใช้งานได้เลยไม่ใช่หรือครับ ไม่จำเป้นต้องมีหน้าอะไรขึ้นมาขวาง
ใช่ๆ เราต้องการทำอย่างนั้นแหละ ล็อกอินแล้วก็ผ่านไปเลย แต่ที่เห็นสอนๆกันอยู่ ในเน็ตเนี้ย มันเป็นแบบมีหน้า เช็ดล็อกอินขึ้นมา แล้วก็ส่งไปอีกหน้าเอา
ถ้าผมเข้าใจไม่ผิดก็ลองดูอันล่างนี้
ของ 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 ประมาณนี้มั้งครับ
ไม่ใช่ครับ อันนั้นคือ 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 ไงครับ เราถึงยังปลอดภัยอยู่ถึงตอนนี้ หรือไม่ก็อาจจะมีวิธีพิศดารแบบอื่นก็เป็นไปได้
ปกติก็ส่ง request แล้วฝั่ง server ก็เช็คเสร็จแล้วจะ redirect ไปไหนหรือคืนข้อมูลอะไรก็ได้หนิครับ
อธิบายใหม่ละกัน คือ เข้าระบบปกติที่เห็นสอนๆกันคือ มีหน้า Login แล้วก็หน้าเช็ดกับฐานข้อมูลว่าตรงไหม แล้วก็ redirect ไป สงสัยว่า
พวก Facebook Google อื่นๆ มันไม่แสดงหน้า เช็ดล็อกอินให้เห็นเลย เขาเขียนโค้ดซ่อนไว้ หรือเร็วจน url ไม่เปลี่ยนเลย
ขอดูตัวอย่างที่ว่ามีหน้าเชคหน่อยสิครับ (ไม่เคยเหนเลย)
http://www.phpeasystep.com/phptu/6.html
ตอนนี้ เกิดไอเดียละ เดี้ยวจะลองก่อนว่าได้ไหม...
ปกติ เค้าก็ทำอย่างนี้กันนะครับ แต่ checklogin.php เนี่ย มันไม่ได้แสดงขึ้นมาให้ผู้ใช้เห็นอยู่แล้วครับ เพราะมันก็ redirect ไปเลย คนใช้ก็ไม่รู้อยู่ดีว่ามันทำงานผ่านไฟล์ไหนอะไรบ้าง
จะให้เร็วกว่านี้ก็คงต้อง AJAX ไปเลย แต่คิดว่าคงไม่จำเป็นครับ
ก็พอรับ @_POST มาแล้วก็ไม่ต้องเขียนหน้า check login ดิครับ
อยากโยนไปหน้าไหนก็ได้
อย่างที่ผมเขียนประจำก็โยนไปหน้าเดิม แล้วเช็คว่า UserID ตรงกับ Password ไหมค่อยทำอย่างอื่น
blog
เท่าที่นึกออกแบบเบสิค ก็คือมีหน้าเช็คอยู่ แต่แทนที่จะทำฟอร์มปกติแล้วโยนให้ไปอีกหน้านึงเพื่อล็อคอิน (ซึ่งต้องเปลี่ยนหน้า) ก็ใช้ ajax โยนแบบเงียบๆ ทำงานบนเบื้องหลังแทน
ลองดู http://api.jquery.com/jQuery.ajax/ ครับ
เดี้ยวจะลองดูนะ
ขอบคุณจ้า
ทำแบบนี้ก็ได้ครับ หน้า login.php แบ่งเป็น 2 ส่วนคือ GET กับ POST เวลาเข้าหน้า Login ให้ใช้ส่วนของ method GET แสดง
พอ user กด login ให้ยิง post form มาที่หน้าเดิมแล้วใช้ส่วนของ method post ในการเช็คจากฐานข้อมูล แล้วค่อย redirect
ตาม Design Pattern ปกติของการทำเว็บก็สมควรจะ Redirect นะครับ เวลา User Refresh จะได้ไม่เจอถามว่าจะ Submit form ซ้ำไหม
อ้างอิง: https://en.wikipedia.org/wiki/Post/Redirect/Get
วิธี 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 ก็ไม่ค่อยสวยเท่าไหร่
ตอนนี้ที่ลองทำอยู่ ยังไม่ได้ทดสอบกับตอนที่ปิด JavaScript ว่าจะเป็นยังไง
ตอนนี้กำลังมองหา Host ฟรี แต่จดโดเมนนี่น่าจะได้แล้ว
ทำเว็บบล็อกเล่นๆ ไม่อยากใช้พวกสำเร็จรูป เลยลองเขียนเองเล่นๆ
ขอบคุณที่แนะนำจ้า
น่ารักมากครับ ขยันศึกษาตั้งใจหาความรู้ดีมาก ^^