การสร้างการลงทะเบียนและการอนุญาตผู้ใช้ PHP การสร้างระบบการลงทะเบียนผู้ใช้อย่างง่ายใน PHP และ MySQL

ไม่นานมานี้ มีผู้มาเยี่ยมคนหนึ่งขอให้ฉันเขียนบทความเกี่ยวกับ วิธีการลงทะเบียนและอนุญาตผู้ใช้บนเว็บไซต์- อันที่จริงฉันกำลังทำตามคำขอของเขาอยู่ และในบทความนี้ฉันจะพูดถึงวิธีการทำสิ่งนี้

มีหลายวิธี การสร้างการลงทะเบียนผู้ใช้และการอนุญาตแต่ในบทความนี้ ฉันจะวิเคราะห์สิ่งที่ฉันชอบ - ผ่านกลไกเซสชันหรือคุกกี้

ก่อนอื่นถ้าคุณต้องการ ลงทะเบียนบนเว็บไซต์ของคุณจากนั้นคุณจะต้องเข้าใจว่าข้อมูลผู้ใช้จะถูกเก็บไว้ที่ใด สามารถจัดเก็บไว้ในไฟล์ข้อความปกติได้ ไฟล์ XMLหรือในฐานข้อมูล สองตัวเลือกแรกนั้นอันตรายมาก ดังนั้นฉันไม่แนะนำให้คุณใช้มัน และนี่คือตัวเลือกที่สาม - จัดเก็บข้อมูลผู้ใช้ในฐานข้อมูล- เป็นที่นิยมที่สุดและเป็นวิธีการจัดเก็บข้อมูลที่ฉันแนะนำให้คุณใช้

เราได้ตัดสินใจเกี่ยวกับสถานที่จัดเก็บแล้ว ตอนนี้เรามาดูตรงไปที่ อัลกอริธึมการอนุญาต:

  1. สร้างแบบฟอร์มลงทะเบียนสำหรับ HTML.
  2. รับข้อมูลจากแบบฟอร์มในสคริปต์ตัวจัดการ
  3. ตรวจสอบข้อมูลที่ได้รับ และหากไม่ถูกต้อง ให้เปลี่ยนเส้นทางกลับไปยังแบบฟอร์มลงทะเบียน
  4. หากข้อมูลถูกต้องให้เขียนลงฐานข้อมูล

นั่นคือกระบวนการทั้งหมด การลงทะเบียนผู้ใช้บนเว็บไซต์- นั่นคือการลงทะเบียนคือการบันทึกข้อมูลเกี่ยวกับผู้ใช้บนเว็บไซต์

ประเด็นต่อไปก็คือ การอนุญาตผู้ใช้บนเว็บไซต์อย่างไรก็ตาม ก่อนที่จะดำเนินการต่อ ฉันจะบอกคุณเกี่ยวกับประเด็นสำคัญอย่างหนึ่งในแบบฟอร์มการลงทะเบียน นั่นคือรหัสผ่าน ฉันขอแนะนำอย่างยิ่งให้คุณอย่าเก็บรหัสผ่านในรูปแบบข้อความที่ชัดเจน (เช่น " 123456 ") อย่าลืมเข้ารหัสอย่างน้อยก็ใช้ฟังก์ชัน md5()- และจัดเก็บรหัสผ่านที่เข้ารหัสไว้ในฐานข้อมูล

ตอนนี้ได้รับอนุมัติแล้ว. สิ่งแรกที่คุณต้องเข้าใจคือข้อมูลการอนุญาตจะต้องเก็บไว้ที่ใดที่หนึ่ง ตัวเลือกที่ง่ายที่สุดคือการจัดเก็บข้อมูลในเซสชัน (หรือใน คุกกี้- และตอนนี้อัลกอริทึม:

  1. สร้างแบบฟอร์มการอนุญาตผู้ใช้บน HTMLโดยที่ผู้ใช้จะต้องป้อนข้อมูลเข้าสู่ระบบและรหัสผ่านของเขา
  2. ในสคริปต์ตัวจัดการ ให้ยอมรับข้อมูลจากผู้ใช้ หากคุณฟังฉันและเก็บรหัสผ่านที่เข้ารหัสไว้ในฐานข้อมูล ให้เข้ารหัสรหัสผ่านผลลัพธ์ก่อน หากมีรหัสผ่านที่ชัดเจนในฐานข้อมูล ก็ไม่จำเป็นต้องเข้ารหัสรหัสผ่านเหล่านั้น
  3. ตรวจสอบความถูกต้องของข้อมูลที่ป้อน และหากการเข้าสู่ระบบและรหัสผ่านตรงกับผู้ใช้ที่มีอยู่ในฐานข้อมูล ให้เขียนลงไป คุกกี้หรือข้อมูลเซสชันที่มีการเข้าสู่ระบบและรหัสผ่านที่เข้ารหัส (หรือรหัสผ่านแบบเปิดหากคุณไม่ได้เข้ารหัส)
  4. หากการเข้าสู่ระบบและ/หรือรหัสผ่านไม่ถูกต้อง ให้เปลี่ยนเส้นทางกลับไปยังแบบฟอร์มการอนุญาต

ตอนนี้คุณมีข้อมูลที่จำเป็นเกี่ยวกับ การอนุญาตผู้ใช้ซึ่งถูกเก็บไว้ในของเขา คุกกี้หรือบนเซิร์ฟเวอร์ (หากเป็นเซสชัน) ในความเป็นจริงตอนนี้คุณต้องตรวจสอบข้อมูลนี้ในแต่ละหน้าของเว็บไซต์และยืนยันในลักษณะเดียวกับการตรวจสอบแบบฟอร์มการอนุญาต นั่นคือคุณอ่านจาก คุกกี้(เซสชัน) เข้าสู่ระบบและรหัสผ่าน และตรวจสอบ หากถูกต้องให้แสดงหน้าหนึ่ง (สำหรับผู้ใช้ที่ลงทะเบียน) และหากไม่ถูกต้องให้แสดงหน้าอื่น (สำหรับผู้ใช้ทั่วไป)

และสิ่งสุดท้ายอย่างหนึ่ง วิธีทำปุ่ม ออก“? ง่ายมาก เมื่อคุณกดปุ่มนี้ คุกกี้หรือเซสชัน ดังนั้นผู้ใช้จะถูกไล่ออกจากไซต์โดยอัตโนมัติ

อย่างที่คุณเห็นทุกอย่างเป็นเรื่องพื้นฐาน แต่เมื่อใช้อัลกอริธึมนี้คุณจะมีคำถามมากมายอย่างแน่นอน เช่น จะต้องทำอย่างไรเมื่อลงทะเบียนผู้ใช้ที่มีการล็อกอินอยู่ในฐานข้อมูลแล้ว การดำเนินการตรวจสอบอินพุตต่างๆ การดำเนินการตรวจสอบการมีอยู่ อีเมลและอื่น ๆ - ทั้งหมดนี้ค่อนข้างซับซ้อนหากคุณทำเป็นครั้งแรก อย่างไรก็ตาม ฉันแจกน้ำผลไม้ไปแล้ว หากคุณมีคำถามระหว่างการใช้งาน โปรดถามในฟอรัมหรือในความคิดเห็น

ทุกคนที่พัฒนาเว็บไซต์ไม่ช้าก็เร็วต้องเผชิญกับงานเช่น การอนุญาตและการรับรองความถูกต้องของผู้ใช้นำไปใช้อย่างแม่นยำโดยใช้ภาษาการเขียนโปรแกรม และไม่ใช้มาตรฐานโปรโตคอล http วันนี้เราจะมาดูตัวอย่างการสร้างการอนุญาตอย่างง่ายโดยใช้ภาษาการเขียนโปรแกรม PHP และเราจะเก็บข้อมูลผู้ใช้ไว้ในฐานข้อมูล MySQL

วิธีการด้านล่างนั้นง่ายหรือเป็นพื้นฐานสำหรับการสร้างการอนุญาตตามปกติ แต่คุณสามารถใช้งานได้ง่ายเนื่องจากใช้งานได้ค่อนข้างดีและคุณสามารถปรับปรุงวิธีการนี้ด้วยตัวเองและนำไปใช้กับเว็บไซต์ของคุณได้

วิธีการนี้ขึ้นอยู่กับเซสชัน แต่ฉันยังใช้คุกกี้ที่นี่เพื่อให้เบราว์เซอร์จดจำผู้ใช้ที่รับรองความถูกต้องครั้งล่าสุด เพื่อไม่ให้เข้าสู่ระบบทุกครั้งคุณสามารถจัดเก็บรหัสผ่านในคุกกี้ได้แน่นอน แต่นี่คือ ไม่ปลอดภัยแม้ว่าจะถูกเข้ารหัสก็ตาม หากต้องการสิ้นสุดเซสชัน เพียงปิดเบราว์เซอร์แล้วเปิดใหม่อีกครั้ง

การสร้างวัตถุในฐานข้อมูล

เรามาฝึกกันต่อ ขั้นแรก เรามาสร้างตารางสำหรับจัดเก็บข้อมูลผู้ใช้ในฐานข้อมูล MySQL กันก่อน ฉันแนะนำให้ใช้โครงสร้างตารางอย่างง่าย ( แน่นอน คุณสามารถเสริมด้วยบางสิ่งได้ ฐานข้อมูลของฉันเรียกว่าการทดสอบ และตารางคือผู้ใช้):

สร้างตาราง test.users (user_id INT (11) ไม่ได้ลงนามไม่เป็นโมฆะ AUTO_INCREMENT, user_login VARCHAR (30) ไม่เป็นโมฆะ, user_password VARCHAR (32) ไม่เป็นโมฆะ, คีย์หลัก (user_id)) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_general_ci;

และเราจะเพิ่มหนึ่งรายการลงในตารางนี้ทันที:

แทรกลงในค่า test.users (user_login, user_password) ("mylogin", "202cb962ac59075b964b07152d234b70")

โดยรวมแล้วเราได้รับ:

  • เข้าสู่ระบบ– มายล็อกอิน;
  • รหัสผ่าน -;

แน่นอนว่าเราจะจัดเก็บรหัสผ่านในรูปแบบแฮช เนื่องจากการจัดเก็บรหัสผ่านในรูปแบบข้อความที่ชัดเจน พูดง่ายๆ ก็คือไม่ปลอดภัย แฮชรหัสผ่านด้านบนของเราคือ 123 ดังนั้นเมื่อเราป้อนรหัสผ่านลงในแบบฟอร์ม เราจะป้อน 123 ให้ตรงกันทุกประการ ไม่ใช่

การสร้างแบบฟอร์มการลงทะเบียน

เพื่อให้ผู้ใช้สามารถลงทะเบียนด้วยตนเอง ให้สร้างแบบฟอร์ม ข้อมูลที่จะถูกส่งไปยังไฟล์ประมวลผลการลงทะเบียน เช่น จะถูกบันทึกไว้ในฐานข้อมูล ตัวอย่างเช่น นี่เป็นวิธีที่ง่ายที่สุด:

0) ( $error = "มีผู้ใช้ที่ใช้ล็อกอินนี้อยู่แล้ว"; ) // หากไม่ใช่ ให้เพิ่มผู้ใช้ใหม่ if(!isset($error)) ( $login = mysql_real_escape_string(trim(htmlspecialchars($_POST[ "login" ]))); // ลบช่องว่างและแฮชรหัสผ่าน $password = md5(trim($_POST["password"])); mysql_query("INSERT INTO users SET user_login="".$login.", user_password=" ".$password"""); echo "คุณได้ลงทะเบียนด้วยการเข้าสู่ระบบสำเร็จ - ".$login; exit(); // หากมีการเข้าสู่ระบบดังกล่าว ให้พูดถึงมัน echo $error; ) ) //โดยค่าเริ่มต้น ข้อมูลจะถูกส่งไปยังไฟล์พิมพ์เดียวกัน<<< html

เข้าสู่ระบบ
รหัสผ่าน
html;

- อย่างไรก็ตาม ด้วยวิธีนี้ เป็นการดีที่สุดที่จะใช้ตัวอักษรละตินในการเข้าสู่ระบบ (เหล่านั้น. ภาษาอังกฤษ ) หากคุณต้องการเขียนข้อมูลเข้าสู่ระบบเป็นภาษารัสเซีย คุณจะต้องปรับโค้ดเล็กน้อย คุณสามารถตั้งชื่อไฟล์ตามที่คุณต้องการ ().

สำหรับการทดสอบฉันใช้ reg.html บันทึก!

การสร้างแบบฟอร์มการอนุญาต

"."คุณเข้าสู่ระบบแล้ว
เหล่านั้น. เราได้ตรวจสอบเซสชันแล้วและสามารถเปิดการเข้าถึงข้อมูลบางอย่างได้"; ) else ( $login = ""; //ตรวจสอบคุกกี้ บางทีเขาอาจเคยเยี่ยมชมที่นี่แล้วถ้า (isset($_COOKIE["CookieMy"]))( $ เข้าสู่ระบบ = htmlspecialchars( $_COOKIE["CookieMy"]); // พิมพ์แบบฟอร์มธรรมดา<<< html

เข้าสู่ระบบ
รหัสผ่าน
html;

สำหรับการทดสอบฉันใช้ reg.html -

หากจู่ๆ โปรแกรมแยกวิเคราะห์ php ของคุณปฏิเสธที่จะทำงาน เช่น รหัส php ปรากฏบนหน้าจอของคุณ จากนั้นคุณไม่ได้เปิดใช้งานการประมวลผล PHP ในไฟล์ html การตั้งค่าจะทำในไฟล์กำหนดค่าเว็บเซิร์ฟเวอร์ httpd.conf (หากเป็น apache):

แอปพลิเคชัน AddType/x-httpd-php .php .html

ใน IIS ในหน้าต่าง Add Module Mapping ให้เพิ่ม *.php ใน *.html โดยคั่นด้วยเครื่องหมายจุลภาค นี่คือถ้าคุณทำที่บ้านบนเว็บเซิร์ฟเวอร์ของคุณและถ้าคุณทำทั้งหมดนี้ที่โฮสต์คุณจะต้องเขียนถึงพวกเขาและขอให้พวกเขาทำการเปลี่ยนแปลงที่จำเป็น;

ฉันแสดงความคิดเห็นรหัสดังนั้นฉันคิดว่าทุกอย่างชัดเจน ฉันขอเตือนคุณอีกครั้งว่าในไฟล์ทั้งหมดที่มีเนื้อหาที่คุณไม่ต้องการแสดงต่อผู้ใช้ที่ไม่ได้รับอนุญาตคุณต้องเขียน session_start และนั่นอาจเป็นทั้งหมด หากคุณมีคำถามถามในความคิดเห็น ขอให้โชคดี!จากผู้เขียน:

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

ในบทนี้เราจะพยายามเขียนระบบการอนุญาตแบบง่ายๆ ของเราเอง เราจะมีเพจลับ - สมมติว่ามันจะเป็นเพจผู้ดูแลระบบซึ่งเราจะให้สิทธิ์การเข้าถึงแก่ผู้ใช้ที่ได้รับอนุญาตเท่านั้น ระบบการอนุญาตของเราจะขึ้นอยู่กับกลไกเซสชัน ก่อนที่จะเรียนบทเรียนนี้ต่อ ฉันขอแนะนำให้คุณทำความคุ้นเคยกับบทเรียนก่อนหน้าบทใดบทหนึ่งของฉัน ซึ่งโดยเฉพาะอย่างยิ่งเราจะพิจารณางานของเซสชัน -

พิธีเปิดเซสชั่น. ในทุกเพจที่มีการกล่าวถึงการทำงานกับเซสชัน เซสชันต้องเริ่มต้นโดยใช้ฟังก์ชัน session_start()

การลงทะเบียนตัวแปรเซสชัน

การยกเลิกการลงทะเบียนตัวแปรเซสชันโดยใช้ฟังก์ชัน unset() และการปิดเซสชันโดยใช้ฟังก์ชัน session_destroy()

ขั้นตอนที่ 1

ดังนั้นสำหรับงานของเรา เราจะสร้างไฟล์ 3 ไฟล์ ได้แก่ หน้าแรก (index.php) รายชื่อติดต่อ (contact.php) และแผงผู้ดูแลระบบ (admin.php) โปรดทราบว่านามสกุลไฟล์ที่เราจะจำกัดการเข้าถึงควรเป็น .php ตามที่คุณเดา เราจะจำกัดการเข้าถึงไฟล์ admin.php รหัสสำหรับไฟล์ทั้งหมดนั้นง่ายที่สุด - เป็นเมนูประเภทหนึ่งในบรรทัดที่มีลิงก์ไปยังหน้าอื่น ๆ และอยู่ใต้ข้อความแต่ละหน้าเพื่อให้เราสามารถแยกแยะความแตกต่างระหว่างกันได้ ตัวอย่างเช่น นี่คือโค้ดสำหรับหน้าดัชนี:

หน้าแรก | รายชื่อผู้ติดต่อ | ผู้ดูแลระบบ


นี่คือหน้าหลัก

อย่างที่ฉันบอกไปแล้วว่าหน้าที่เหลือนั้นแตกต่างไปจากข้อความที่อยู่หลังแท็กบรรทัดเท่านั้น ฉันไม่ได้สร้างหน้าเว็บที่มีคุณสมบัติครบถ้วนด้วยเมตาแท็ก เนื่องจากงานของเราคือการจำกัดการเข้าถึงหน้าเว็บบางหน้าเท่านั้น

ขั้นตอนที่ 2

ในตอนนี้ เราสามารถสำรวจทุกหน้าได้อย่างอิสระ รวมถึงหน้าผู้ดูแลระบบด้วย เราจะจำกัดการเข้าถึงได้อย่างไร? อัลกอริธึมจะเป็นอย่างไร? เราจะทำสิ่งต่อไปนี้: ที่จุดเริ่มต้นของหน้า เราจะตรวจสอบว่าป้ายกำกับที่เราต้องการนั้นอยู่ในเซสชันหรือไม่ หรือพูดง่ายๆ ก็คือว่ามีตัวแปรเซสชันบางตัวอยู่หรือไม่ (เรายังสามารถตรวจสอบได้ว่าค่าของตัวแปรเซสชันนั้นเท่ากันหรือไม่ ถึงค่าที่แน่นอน) หากไม่มีตัวแปรดังกล่าว ผู้ใช้ที่ร้องขอหน้านี้ไม่ได้รับอนุญาต ซึ่งหมายความว่าเราจะเปลี่ยนเส้นทางเขาไปยังหน้าการอนุญาต ซึ่งเขาจะถูกขอให้กรอกแบบฟอร์มพร้อมชื่อและรหัสผ่าน อัลกอริธึมนั้นง่ายมาก - มาปรับใช้กัน ไปที่ไฟล์ admin.php เปิดโครงสร้าง PHP ที่ด้านบนสุดแล้วเขียนโค้ดต่อไปนี้:

session_start();

ถ้า (! $_SESSION [ "ผู้ดูแลระบบ" ] ) (

header("ตำแหน่ง: enter.php");

ออก ;

ตอนนี้เรามาอ่านโค้ดนี้กัน ประการแรก เราเปิดเซสชันตามที่คุณจำได้ นี่เป็นข้อกำหนดเบื้องต้นเมื่อทำงานกับเซสชัน ต่อไป เราสร้างเงื่อนไขง่ายๆ ที่สามารถอ่านได้ดังนี้: “หากไม่มีองค์ประกอบผู้ดูแลระบบในอาร์เรย์ $_SESSION เราจะดำเนินการบล็อกการดำเนินการที่อยู่ในวงเล็บเหลี่ยมตัวดำเนินการ” และในบล็อกโค้ด โดยใช้ฟังก์ชัน header() เราจะเปลี่ยนเส้นทางผู้ใช้ไปยังหน้า enter.php (นี่คือหน้าการอนุญาต) หลังจากฟังก์ชัน header() เราจะต้องดำเนินการสคริปต์ให้เสร็จสิ้นโดยใช้ฟังก์ชัน exit() หากไม่ตรงตามเงื่อนไข กล่าวคือ จะมีองค์ประกอบผู้ดูแลระบบในอาร์เรย์ $_SESSION ซึ่งหมายความว่าผู้ใช้ได้รับการอนุมัติเรียบร้อยแล้ว และเราจะข้ามบล็อกการดำเนินการในวงเล็บเหลี่ยมตัวดำเนินการ กล่าวคือ จะไม่มีการเปลี่ยนเส้นทางเกิดขึ้น และเราแสดงหน้าที่ร้องขอ

ขั้นตอนที่ 3

ตอนนี้เราต้องสร้างหน้าเข้าสู่ระบบ - enter.php ในการดำเนินการนี้ ให้คัดลอกโค้ด เช่น ของหน้า contact.php สร้างไฟล์ใหม่และวางโค้ดที่คัดลอกไว้ลงไป บันทึกไฟล์ภายใต้ชื่อ enter.php ในหน้านี้เราจะเขียนแบบฟอร์มง่ายๆ สำหรับการเข้าสู่ระบบและรหัสผ่านของคุณ:

หน้าแรก | รายชื่อผู้ติดต่อ | ผู้ดูแลระบบ


นี่คือหน้าเข้าสู่ระบบ
ชื่อผู้ใช้:
รหัสผ่าน:

< p > < a href = "index.php" >บ้าน< / a > | < a href = "contact.php" >รายชื่อผู้ติดต่อ< / a > | < a href = "admin.php" >ผู้ดูแลระบบ< / a > < / p >

< hr / >

< br / >

< form method = "post" >

ชื่อผู้ใช้:< input type = "text" name = "user" / > < br / >

รหัสผ่าน:< input type = "password" name = "pass" / > < br / >

< input type = "submit" name = "submit" value = "เข้าสู่ระบบ" / >

< / form >

ทุกอย่างเรียบง่ายที่นี่ แบบฟอร์มมี 2 ช่อง: ช่องเข้าสู่ระบบ (เราตั้งชื่อว่า "ผู้ใช้") และช่องรหัสผ่าน (ชื่อ "ผ่าน") นอกจากนี้เรายังสร้างปุ่ม (ชื่อ “ส่ง”) เมื่อคลิก ข้อมูลจากแบบฟอร์มจะถูกส่งไป ข้อมูลจะถูกส่งโดยใช้วิธีการโพสต์ - เราระบุไว้ในแอตทริบิวต์วิธีการของแท็กแบบฟอร์ม - และจะได้รับการประมวลผลในหน้าเดียวกัน ตอนนี้เราสามารถลองไปที่หน้าผู้ดูแลระบบได้แล้ว หากทำทุกอย่างโดยไม่มีข้อผิดพลาด เราจะไม่สามารถไปถึงที่นั่นได้ แต่จะจบลงที่หน้าการอนุญาตอย่างสม่ำเสมอ

อัศจรรย์!

ขั้นตอนที่ 4

ต่อไปเราต้องเขียนตัวจัดการบนเพจด้วยแบบฟอร์มที่จะรับข้อมูลจากแบบฟอร์มและเปรียบเทียบว่าล็อกอินและรหัสผ่านจากแบบฟอร์มตรงกับที่เรามีหรือไม่ ในการดำเนินการนี้ ให้เปิดโครงสร้าง PHP ที่ด้านบนของหน้าเข้าสู่ระบบ และเริ่มเขียนโค้ด ขั้นแรก เราต้องเปิดเซสชัน เพราะนี่คือที่ที่เราจะสร้างป้ายกำกับในเซสชันหากเราได้รับข้อมูลเข้าสู่ระบบและรหัสผ่านที่ถูกต้อง ในหน้าเดียวกันนี้ เราจะจัดเก็บข้อมูลล็อกอินและรหัสผ่านของผู้ดูแลระบบ โดยปกติแล้วข้อมูลนี้จะถูกเก็บไว้ในฐานข้อมูล (DB) แต่เราจะมีผู้ใช้เพียง 1 คน (ผู้ดูแลระบบ) ดังนั้นการจัดเก็บข้อมูลของเขาเพื่อเข้าสู่ฐานข้อมูลจึงไม่ได้มีเหตุผลทั้งหมด หากมีผู้ใช้มากกว่าหนึ่งราย เช่น เรากำลังเขียนโปรเจ็กต์ที่มีการลงทะเบียน แน่นอนว่าในกรณีนี้ จะทำได้ยากหากไม่มีฐานข้อมูล

ดังนั้นข้อมูลเข้าสู่ระบบของเราจะเป็น "ผู้ดูแลระบบ" และเราจะเก็บไว้ในตัวแปร $admin รหัสผ่านจะเป็น “mypass” และจะถูกเก็บไว้ในตัวแปร $pass แต่ไม่ยอมรับการเก็บรหัสผ่านในรูปแบบข้อความที่ชัดเจน ซึ่งขัดต่อหลักความปลอดภัย เราจะจัดเก็บรหัสผ่านในรูปแบบที่เข้ารหัส และฟังก์ชัน md5() จะช่วยเราเข้ารหัส ฟังก์ชันนี้เข้ารหัสสตริงโดยใช้อัลกอริธึมพิเศษ และเอาต์พุตเป็นสตริงยาว 32 อักขระ (เรียกว่าแฮช) หากเราเข้ารหัสสตริง “mypass” (ซึ่งสามารถทำได้ เช่น ในไฟล์ contact.php):

echo md5 ("มายพาส" );

จากนั้นเอาต์พุตจะเป็นบรรทัด "a029d0df84eb5549c641e04a9ef389e5" - นี่จะเป็นรหัสผ่านที่เข้ารหัสของเรา ในตอนนี้ รหัสหน้าเข้าสู่ระบบจะเป็นดังนี้:

หน้าแรก | รายชื่อผู้ติดต่อ | ผู้ดูแลระบบ


นี่คือหน้าเข้าสู่ระบบ
ชื่อผู้ใช้:
รหัสผ่าน:

session_start();

$ผู้ดูแลระบบ = "ผู้ดูแลระบบ" ;

$ผ่าน= "a029d0df84eb5549c641e04a9ef389e5";

< p > < a href = "index.php" >บ้าน< / a > | < a href = "contact.php" >รายชื่อผู้ติดต่อ< / a > | < a href = "admin.php" >ผู้ดูแลระบบ< / a > < / p >

< hr / >

< br / >

< form method = "post" >

ชื่อผู้ใช้:< input type = "text" name = "user" / > < br / >

รหัสผ่าน:< input type = "password" name = "pass" / > < br / >

< input type = "submit" name = "submit" value = "เข้าสู่ระบบ" / >

< / form >

ขั้นตอนที่ 5

ตอนนี้เรามาตรวจสอบสิ่งที่เราได้รับจากแบบฟอร์มพร้อมกับสิ่งที่เรามีในตัวแปรล็อกอินและรหัสผ่าน เราจะทำสิ่งนี้ตามเงื่อนไข - เฉพาะในกรณีที่กดปุ่มแบบฟอร์มเท่านั้น เราจะตรวจสอบสิ่งนี้ได้อย่างไร? ปุ่มนี้มีชื่อ (“ส่ง”) และเราส่งข้อมูลโดยใช้วิธีการโพสต์ ดังนั้นเราจึงสามารถตรวจสอบได้ว่ามีองค์ประกอบการส่งอยู่ในอาร์เรย์ $_POST หรือไม่ หากมี จะมีการกดปุ่ม และเราจะดำเนินการตรวจสอบข้อมูลที่ส่งไป ไม่เช่นนั้นเราจะไม่ดำเนินการใดๆ หลังจากประกาศล็อกอินและรหัสผ่านแล้ว ให้เขียนเงื่อนไข:

if($_POST["submit"])( if($admin == $_POST["user"] AND $pass == md5($_POST["pass"]))( $_SESSION["admin"] = $ ผู้ดูแลระบบ; ส่วนหัว ("ตำแหน่ง: admin.php");

เข้าสู่ระบบหรือรหัสผ่านไม่ถูกต้อง!

"; }

ถ้า ($_POST["ส่ง"]) (

ถ้า ($ ผู้ดูแลระบบ == $_POST [ "ผู้ใช้" ] และ $ ผ่าน == md5 ( $ _POST [ "ผ่าน" ] ) ) (

$_SESSION["ผู้ดูแลระบบ"] = $ผู้ดูแลระบบ;

ออก ;

) อย่างอื่นก้อง "

เข้าสู่ระบบหรือรหัสผ่านไม่ถูกต้อง!

" ;

เราสร้างเงื่อนไขในการตรวจสอบการเข้าสู่ระบบและรหัสผ่านเป็นสองเท่า ทำได้โดยใช้ตัวดำเนินการเชิงตรรกะ AND (สามารถเขียนได้ด้วยวิธีนี้ - “&&”) เงื่อนไขสามารถอ่านได้ดังต่อไปนี้: “ถ้า (ตัวแปร $admin เท่ากับองค์ประกอบผู้ใช้ในอาร์เรย์ $_POST และตัวแปร $pass เท่ากับแฮชขององค์ประกอบรหัสผ่านในอาร์เรย์ $_POST) ดังนั้น (เราดำเนินการ การบล็อกการกระทำ) มิฉะนั้นเราจะแสดงข้อความ 'การเข้าสู่ระบบหรือรหัสผ่านไม่ถูกต้อง!'

หากคู่ล็อกอิน-รหัสผ่านตรงกัน เราจะลงทะเบียนตัวแปรเซสชัน $_SESSION["admin"] และเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าผู้ดูแลระบบ - admin.php
ตอนนี้เรามาลองทดสอบสิ่งที่เราได้สร้างไว้แล้ว หากเราป้อนข้อมูลเข้าสู่ระบบและรหัสผ่านโดยเจตนา เราจะได้รับข้อความเตือนว่า “การเข้าสู่ระบบหรือรหัสผ่านไม่ถูกต้อง!” ตอนนี้เรามาลองป้อนข้อมูลการเข้าสู่ระบบที่ถูกต้อง หากเราไม่ได้ทำผิดพลาดที่ไหนเลย หลังจากคลิกที่ปุ่ม "เข้าสู่ระบบ" เราจะพบว่าตัวเองอยู่ในหน้าผู้ดูแลระบบ

ขั้นตอนที่ 6

ตอนนี้เหลือเพียงเพิ่มรายละเอียดเล็กๆ น้อยๆ เท่านั้น เช่น ตอนนี้เราได้รับอนุญาตในระบบแล้ว แต่หากเราป้อนที่อยู่ของหน้าการอนุญาตในแถบที่อยู่ เราก็จะเข้าไปดูแบบฟอร์มการอนุญาตได้อย่างง่ายดาย สิ่งนี้ไม่ควรเกิดขึ้น - เฉพาะผู้ใช้ที่ไม่ได้รับอนุญาตเท่านั้นจึงจะเห็นแบบฟอร์ม เราจะแก้ไขปัญหานี้ได้อย่างไร? โปรดจำไว้ว่าในหน้า admin.php เราได้ตรวจสอบว่าป้ายกำกับนั้นอยู่ในเซสชันหรือไม่ หากไม่มี เราจะเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าการอนุญาต ที่นี่เราสามารถทำสิ่งเดียวกันได้เฉพาะในทางกลับกันเท่านั้น กล่าวคือ เรายังตรวจสอบด้วยว่าป้ายกำกับนั้นอยู่ในเซสชันหรือไม่ ตอนนี้เราจะโอนผู้ใช้ไปยังหน้าผู้ดูแลระบบหากมีป้ายกำกับดังกล่าว โดยหลักการแล้วนี่คือตรรกะ หากมีป้ายกำกับ แสดงว่าผู้ใช้ได้รับอนุญาตแล้ว และเราสามารถโอนเขาไปยังหน้าผู้ดูแลระบบได้ บนหน้า enter.php หลังจากเซสชันเริ่มต้น ให้เพิ่มโค้ดต่อไปนี้:

if($_SESSION["admin"])( header("Location: admin.php"); exit; )

ถ้า ($_SESSION["ผู้ดูแลระบบ"]) (

ส่วนหัว ("ตำแหน่ง: admin.php" );

ออก ;

ตอนนี้ หากผู้ใช้ที่ได้รับอนุญาตพยายามป้อนชื่อของหน้าการอนุญาตในแถบที่อยู่ เขาจะถูกเปลี่ยนเส้นทางไปยังหน้าผู้ดูแลระบบ ผู้ใช้ที่ไม่ได้รับอนุญาตจะสามารถเข้าถึงหน้าการอนุญาตได้อย่างอิสระ

ขั้นตอนที่ 7

ประเด็นต่อไปที่เราต้องจัดเตรียมคือการดำเนินการออกจากระบบของผู้ใช้ที่ได้รับอนุญาต เช่น สมมติว่าผู้ดูแลระบบทำงานเสร็จแล้วและจำเป็นต้องออกจากระบบเพื่อไม่ให้ใครสามารถทำงานภายใต้บัญชีของเขาได้ ในการดำเนินการนี้ ให้เพิ่มลิงก์ "ออก" ไปที่หน้า admin.php ลิงก์จะนำไปสู่หน้าเดียวกันเฉพาะพารามิเตอร์ที่เราต้องการเท่านั้นที่จะถูกเพิ่มเข้าไป เพิ่มพารามิเตอร์โดยใช้เครื่องหมายคำถาม:

ออก

< a href = "admin.php?do=logout" >ออก< / a >

ลิงก์นี้สามารถวางในตำแหน่งที่เราต้องการได้ - ฉันจะวางไว้หลังข้อความของหน้า เกี่ยวกับพารามิเตอร์นั้นจะถูกส่งโดยใช้วิธี GET (โปรดจำไว้ว่าเราส่งข้อมูลจากแบบฟอร์มโดยใช้พารามิเตอร์ตัวที่สอง - POST) เมื่อใช้วิธีการนี้ ข้อมูลจะถูกต่อท้ายที่อยู่ในแถบที่อยู่ และถูกแยกออกจากที่อยู่ด้วยเครื่องหมายคำถามเท่านั้น เราส่งพารามิเตอร์หนึ่งตัว - ทำ - และในขณะเดียวกันก็กำหนดค่า "ออกจากระบบ" เราจะอนุญาตผู้ใช้ได้อย่างไร? ง่ายมาก ขั้นตอนที่สองและสามจะช่วยเราที่นี่เมื่อทำงานกับเซสชั่นต่างๆ เมื่อเพจโหลด เราสามารถตรวจสอบค่าขององค์ประกอบ do จากอาร์เรย์ $_GET ถ้ามันเท่ากับสตริง “ออกจากระบบ” เราก็จะยกเลิกการลงทะเบียนตัวแปรเซสชัน $_SESSION["admin"] และทำลายเซสชันนั้น ดังนั้น จะไม่มีป้ายกำกับในเซสชันหลังจากนี้ และในบล็อกถัดไปที่เราตรวจสอบการมีอยู่ของป้ายกำกับ ผู้ใช้จะถูกเปลี่ยนเส้นทางไปยังหน้าการอนุญาต มันง่ายมาก

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

ช่องแรกใช้สำหรับเข้าสู่ระบบ ช่องที่สองใช้สำหรับรหัสผ่าน และอย่างที่สองมันไม่ง่ายเลย เพราะขณะนี้เป็นเพียงช่องกรอกข้อความเท่านั้น

ผลลัพธ์ในเบราว์เซอร์:

เพื่อให้ข้อความที่ป้อนถูกแทนที่ด้วยเครื่องหมายดอกจันตามธรรมเนียมสำหรับฟิลด์ประเภทนี้ คุณต้องดำเนินการง่ายๆ เพียงอย่างเดียว กล่าวคือเพื่อแทนที่ค่าแอตทริบิวต์ พิมพ์บน รหัสผ่าน:

ผลลัพธ์:

ปุ่มส่งแบบฟอร์ม

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

หากปุ่มควรมีคำจารึกไว้ก็สามารถทำได้โดยใช้แอตทริบิวต์ ค่า- ขึ้นอยู่กับคุณว่าจะกำหนดชื่อให้กับปุ่มหรือไม่ หากคุณทำเช่นนี้ เซิร์ฟเวอร์จะได้รับชื่อนี้ตลอดจนค่าของปุ่ม

ตามกฎแล้ว จำเป็นต้องใช้ชื่อของปุ่มส่งแบบฟอร์มเมื่อแบบฟอร์มมีหลายปุ่ม ซึ่งแต่ละปุ่มมีการดำเนินการเฉพาะ ด้วยเหตุนี้เซิร์ฟเวอร์ที่ได้รับชื่อและค่าของปุ่มจากเบราว์เซอร์จึงเข้าใจว่าผู้ใช้คลิกปุ่มใดและต้องทำอะไรตามนั้น

ดังนั้นโค้ดสำหรับแบบฟอร์มของเราจะเป็นดังนี้:

ผลลัพธ์ในเบราว์เซอร์:

ดังนั้นจึงมีงาน - ทำการลงทะเบียนในระบบและความเป็นไปได้ในการอนุญาต วิธีการทำเช่นนี้? มาเริ่มกันตามลำดับ

การลงทะเบียนบน php.ini

ทุกอย่างเรียบง่ายที่นี่ กำลังสร้างคลังข้อมูลสำหรับผู้ใช้ โดยทั่วไปนี่คือตารางฐานข้อมูล ประกอบด้วยช่องต่างๆ เช่น ID ชื่อผู้ใช้ และรหัสผ่าน ฟิลด์ที่เหลือเป็นทางเลือก คุณสามารถรวบรวมอีเมลของผู้ใช้ ที่อยู่ IP ที่เป็นไปได้ เวลาในการเข้าถึงเครือข่าย คำรหัสจากบัตรธนาคาร คำถามเพื่อความปลอดภัย...

โดยทั่วไปสิ่งสำคัญคือคู่รหัสผ่านเข้าสู่ระบบ

จุดสำคัญประการแรก— รหัสผ่านผู้ใช้ไม่สามารถจัดเก็บเป็นข้อความที่ชัดเจนได้ นั่นคือเช่นเดียวกับข้อความ เป็นไปไม่ได้เพราะหากมีผู้อื่นเข้าถึงฐานข้อมูล พวกเขาจะได้รับฐานข้อมูลรหัสผ่านเข้าสู่ระบบของผู้ใช้ ซึ่งพวกเขาไม่น่าจะชอบ และหากคุณพิจารณาว่าผู้ใช้จำนวนมากมีการเข้าสู่ระบบและรหัสผ่านเหมือนกันในบริการที่แตกต่างกัน สิ่งนี้จะทำให้ข้อมูลส่วนบุคคลและการเงิน การติดต่อสื่อสารส่วนบุคคล และทุกสิ่งอื่น ๆ ตกอยู่ในความเสี่ยง

รหัสผ่านจะต้องถูกจัดเก็บเป็นแฮช การแฮชเป็นการดำเนินการที่เปลี่ยนข้อมูลต้นฉบับให้กลายเป็นรูปแบบที่มีความยาวที่ทราบ นี่เป็นสิ่งที่ดีเพราะนักแสดงมีเอกลักษณ์เฉพาะตัว นั่นคือถ้าเราเปลี่ยนอักขระอย่างน้อยหนึ่งตัวในข้อมูลต้นฉบับ ผลลัพธ์ของการดำเนินการแฮชจะแตกต่างไปจากเดิมอย่างสิ้นเชิงจนจำไม่ได้ การดำเนินการแฮชนั้นไม่สามารถย้อนกลับได้ กล่าวคือ จะไม่สามารถขยายข้อมูลต้นฉบับจากสแน็ปช็อตนี้ได้ นี่คือความแตกต่างจากการเข้ารหัส

MySQL และ PHP มีฟังก์ชันแฮชทั่วไปและปลอดภัยเหมือนกัน - md5 อัลกอริธึมนี้รับข้อมูลและให้ลายนิ้วมือ

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

INSERT INTO `users` (`id`,`ชื่อผู้ใช้`,`password`) VALUES("",$quoted_username,MD5($quoted_password));

โปรดทราบว่าฉันตั้งชื่อตัวแปร $quoted_ โดยเฉพาะ เนื่องจากก่อนที่จะแทรกลงในแบบสอบถาม จะต้องหลีกเลี่ยงตัวแปรเหล่านั้นโดยใช้ฟังก์ชัน mysql_real_escape_string() เนื่องจากฟังก์ชั่นนี้ถูกใช้บ่อยมากและเขียนยาวมาก (ฉันชอบสถาปนิก PHP) ฉันขอแนะนำให้อัดมันลงในเชลล์ของคุณ ตัวอย่างเช่นเช่นนี้:

ฟังก์ชั่นเครื่องหมายคำพูด($var) ( return mysql_real_escape_string($var); )

การอนุญาตใน php.ini

เราได้เพิ่มผู้ใช้ใหม่ และตอนนี้เขาได้รับอนุญาตแล้ว เราวาดแบบฟอร์มเข้าสู่ระบบรหัสผ่านให้เขาและจับข้อมูลของเขา อะไรต่อไป? ท้ายที่สุดเราได้รับรหัสผ่านในรูปแบบข้อความที่ชัดเจนและในฐานข้อมูลก็มีการแฮชรหัสผ่าน ฉันจะต้องแปลงรหัสผ่านเป็นแฮชแล้วจึงเปรียบเทียบหรือไม่ ไม่ คุณสามารถทำได้ง่ายกว่านี้ - ในคำขอเดียว

เลือก * จาก `ผู้ใช้` โดยที่ `login`=$qoted_login AND `password`=MD5($quoted_password);

หากแบบสอบถามส่งคืนสตริง จะเป็นสตริงที่มีข้อมูลผู้ใช้ ถ้าไม่เช่นนั้น จะไม่มีผู้ใช้ดังกล่าวในตาราง ข้อมูลผู้ใช้จะมีประโยชน์มากสำหรับเรา - มันคุ้มค่าที่จะนำไปไว้ในอาเรย์ที่เชื่อมโยง

จำผู้ใช้

ตอนนี้เราต้องจำไว้ว่าผู้ใช้ได้รับอนุญาตและรู้แน่ชัดว่าเป็นใคร สิ่งแรกที่นึกถึงคือการใช้คุกกี้สำหรับสิ่งนี้ แน่นอนว่าให้ใส่ข้อมูลเข้าสู่ระบบและรหัสของผู้ใช้ลงในคุกกี้และรู้อยู่เสมอว่าใครกำลังขอเพจในขณะนี้

แต่นี่เป็นการปฏิบัติที่ไม่ดี ทำไม เนื่องจากคุกกี้เป็นไฟล์ที่จัดเก็บไว้ในเบราว์เซอร์ของผู้ใช้และข้อมูลจากไฟล์นี้จะถูกส่งไปยังเซิร์ฟเวอร์ในทุกคำขอ ประการแรก พวกเขาจะถูกส่งเป็นข้อความ ซึ่งหมายความว่าง่ายต่อการดักฟัง ประการที่สอง นี่คือข้อความธรรมดาที่ผู้ใช้ส่ง ดังนั้นจึงสามารถเขียนใหม่ได้อย่างแท้จริง ตัวอย่างเช่น หากเราตัดสินใจที่จะจัดเก็บชื่อผู้ใช้ “วาสยา” ไว้ในคุกกี้ เขาสามารถเปิดการจัดการคุกกี้ในเบราว์เซอร์ของเขา ค้นหาคุกกี้ที่ต้องการ และเปลี่ยนเป็นพูดว่า “ผู้ดูแลระบบ” นั่นคือทั้งหมดที่ ตอนนี้ ในแต่ละคำขอ เราจะได้รับคุกกี้ ซึ่งจะบอกชื่อผู้ใช้ - “ผู้ดูแลระบบ” ให้เราทราบ

ดังนั้นจึงปลอดภัยกว่าในการจัดเก็บข้อมูลทั้งหมดบนเซิร์ฟเวอร์ในตำแหน่งที่ไม่สามารถเข้าถึงได้จากเว็บ ในบางโฟลเดอร์ที่ไม่สามารถเข้าถึงได้จากเบราว์เซอร์ ข้อมูลทั้งหมดเกี่ยวกับผู้ใช้ควรเขียนลงในโฟลเดอร์นี้และอ่านจากที่นั่นทุกครั้งที่เขาร้องขอเอกสาร หากต้องการค้นหาว่าผู้ใช้รายใดเป็นเจ้าของไฟล์ข้อมูลใด คุณต้องเรียกไฟล์ด้วยชื่อเฉพาะและใส่ชื่อนี้ลงในคุกกี้ของผู้ใช้ ดังนั้นผู้ใช้จะไม่สามารถค้นหาชื่อไฟล์สำหรับผู้ใช้ผู้ดูแลระบบได้ - ไฟล์นี้สร้างขึ้นโดยระบบบนเซิร์ฟเวอร์ และช่วยให้คุณสามารถลากรหัสผ่านเป็นข้อความธรรมดาจากเอกสารหนึ่งไปอีกเอกสารหนึ่งได้

สิ่งที่ฉันอธิบายคือ กลไกเซสชัน- ตัวอย่างเช่น ในภาษา Perl คุณต้องโหลดโมดูลเพื่อใช้เซสชัน และในเซสชัน PHP ได้รับการสนับสนุนตั้งแต่แรกเริ่ม ที่จริงแล้ว สิ่งที่คุณต้องรู้ก็คือฟังก์ชัน session_start() และอาร์เรย์ $_SESSION นี่คือทั้งหมด ฉันจะบอกคุณตอนนี้

ในทุกสคริปต์ที่คุณจะเขียนหรืออ่านจากเซสชันหนึ่งๆ คุณต้องการ ก่อนที่คุณจะแสดงข้อมูลใดๆเรียกใช้ฟังก์ชัน session_start() นี่จะเป็นการเริ่มเซสชัน ฟังก์ชันนี้จะสร้างไฟล์เซสชันหากไม่มีอยู่หรืออ่านหากมีการส่งคุกกี้พิเศษไปยังสคริปต์

หากต้องการเขียนข้อมูลลงในเซสชัน คุณเพียงแค่ต้องเขียนข้อมูลลงในอาร์เรย์ $_SESSION ตอนนี้เราต้องจำรหัสผู้ใช้

$_SESSION["userid"] = $userinfo["id"];

ทั้งหมด. ตอนนี้ ทุกครั้งที่ผู้ใช้ร้องขอสคริปต์ที่ใช้เซสชัน ค่าขององค์ประกอบ $_SESSION["userid"] จะพร้อมใช้งานสำหรับคุณ

ดังนั้นเมื่อผู้ใช้ป้อนข้อมูลเข้าสู่ระบบและรหัสผ่าน เราได้รับข้อมูลของเขาจากฐานข้อมูล ซึ่งยืนยันว่าผู้ใช้รายดังกล่าวอยู่ในฐานข้อมูลของเรา เราจะจดจำเขาในเซสชัน

ค้นหาว่าผู้ใช้ได้รับอนุญาตหรือไม่

มันง่ายเหมือนปลอกลูกแพร์! ตอนนี้คุณรู้แล้วว่าเซสชันทำงานอย่างไร การค้นหาว่าผู้ใช้ได้รับอนุญาตหรือไม่นั้นเป็นเรื่องของบรรทัดเดียว นี่คือ:

If(isset($_SESSION["userid"])) ( พิมพ์ "ผู้ใช้ได้รับอนุญาต"; )

หากมีการกำหนดรหัสผู้ใช้ในเซสชัน แสดงว่าเขาได้ผ่านการอนุญาตแล้ว แต่คุณจะทราบได้อย่างไรว่าเป็นผู้ใช้รายใด? ล็อกอินของเขาคืออะไร? วันเกิด? รหัสคำสำหรับบัตรธนาคาร? นามสกุลเดิมของแม่?

เห็นได้ชัดว่า - สร้างแบบสอบถามหนึ่งรายการในตารางผู้ใช้ เรามี ID ของผู้ใช้รายนี้ด้วย

SELECT * จาก `ผู้ใช้` โดยที่ `id`=$quoted_userid

วิธีออกจากระบบผู้ใช้และออกจากระบบ

มันค่อนข้างง่าย หากเราพิจารณาว่าผู้ใช้ได้รับอนุญาตจากการมีรหัสผู้ใช้ในเซสชันหรือไม่ เพื่อที่จะนำเขาออกจากระบบ เราจำเป็นต้องลบเขาออกจากที่นั่น มันทำได้ดังนี้:

ยกเลิกการตั้งค่า($_SESSION["รหัสผู้ใช้"]);

คุณยังสามารถฆ่าเซสชันได้เพื่อความแน่ใจ วิธีนี้จะล้างคุกกี้ของผู้ใช้และทำลายไฟล์เซสชันบนเซิร์ฟเวอร์ ในกรณีนี้ข้อมูลทั้งหมดจะสูญหายไป มันทำได้ดังนี้:

Session_destroy();

นั่นคือทั้งหมดที่ หากคุณมีคำถามใด ๆ อย่าลังเลที่จะติดต่อเรา นอกจากนี้ คุณสามารถติดต่อฉันได้ทาง icq หรืออีเมล และขอความช่วยเหลือในเรื่องใดเรื่องหนึ่ง ฉันมักจะไม่ปฏิเสธ หากคุณต้องการความช่วยเหลืออย่างจริงจัง ฉันสามารถขอเงินจำนวนเล็กน้อยได้ นอกจากนี้ฉันสามารถสอนวิธีสร้างเว็บไซต์จากระยะไกลได้! ฉันเป็นโค้ชและกูรูประเภทนี้ :) และหากคุณต้องการรับบทเรียนและลูกเล่นแบบนั้น ฟรี สมัครรับ RSS ของบล็อกของฉัน

โพสต์นี้สนับสนุนโดย ibooknet.ru ซึ่งให้บริการซ่อมแล็ปท็อปในราคาที่สมเหตุสมผล โดยส่วนตัวแล้ว แล็ปท็อปของฉันยังใช้งานได้ดี และฉันหวังว่าจะไม่ต้องซ่อมมัน ฉันก็หวังเหมือนกันสำหรับคุณ