ดาวน์โหลดไฟล์ลงทะเบียน PHP สำเร็จรูป การสร้างระบบการลงทะเบียนผู้ใช้อย่างง่ายใน PHP และ MySQL คุณเข้าสู่ระบบสำเร็จแล้ว

1. เริ่มต้นด้วยการสร้างตารางผู้ใช้ในฐานข้อมูล

มันจะมีข้อมูลผู้ใช้ (เข้าสู่ระบบและรหัสผ่าน) ไปที่ phpmyadmin กัน (หากคุณกำลังสร้างฐานข้อมูลบนพีซีของคุณ http://localhost/phpmyadmin/) เราสร้างผู้ใช้ตาราง โดยจะมี 3 ฟิลด์

ฉันสร้างมันในฐานข้อมูล mysql คุณสามารถสร้างมันในฐานข้อมูลอื่นได้ จากนั้นตั้งค่าตามในรูป:
คลิก "บันทึก" ดังนั้นเราจึงมีโต๊ะ

2. จำเป็นต้องมีการเชื่อมต่อกับตารางนี้

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

3. สร้างไฟล์ reg.php พร้อมเนื้อหา (ความคิดเห็นทั้งหมดภายใน):

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


เข้าสู่ระบบของคุณ:

รหัสผ่านของคุณ:
4. สร้างไฟล์ที่จะป้อนข้อมูลลงในฐานข้อมูลและบันทึกผู้ใช้ save_user.php (ความคิดเห็นภายใน):

3. สร้างไฟล์ reg.php พร้อมเนื้อหา (ความคิดเห็นทั้งหมดภายใน):

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


5. ตอนนี้ผู้ใช้สามารถลงทะเบียนได้แล้ว!



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

ลงทะเบียน

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

6. มีไฟล์เหลือพร้อมการยืนยันการเข้าสู่ระบบและรหัสผ่านที่ป้อน testreg.php (ความคิดเห็นภายใน):

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

การสร้างตารางในฐานข้อมูล

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

ดังนั้นเราจึงมีฐานข้อมูล (ตัวย่อว่า DB) ตอนนี้เราจำเป็นต้องสร้างตาราง ผู้ใช้โดยเราจะเพิ่มผู้ใช้ที่ลงทะเบียนของเรา

ฉันยังอธิบายวิธีสร้างตารางในฐานข้อมูลในบทความด้วย

ก่อนที่จะสร้างตาราง เราต้องพิจารณาว่าจะมีฟิลด์ใดบ้าง ฟิลด์เหล่านี้จะสอดคล้องกับฟิลด์จากแบบฟอร์มการลงทะเบียน ผู้ใช้ดังนั้นเราจึงคิดและจินตนาการว่าแบบฟอร์มของเราจะมีฟิลด์ใดและสร้างตารางขึ้นมา

  • ด้วยฟิลด์เหล่านี้:รหัส ด้วยฟิลด์เหล่านี้:- ตัวระบุ สนาม
  • ทุกตารางในฐานข้อมูลควรมี first_name
  • - หากต้องการบันทึกชื่อนามสกุล
  • - เพื่อรักษานามสกุลอีเมล
  • - เพื่อบันทึกที่อยู่ทางไปรษณีย์ เราจะใช้อีเมลเป็นข้อมูลเข้าสู่ระบบ ดังนั้นฟิลด์นี้จะต้องไม่ซ้ำกัน นั่นคือ มีดัชนี UNIQUEอีเมล_สถานะ
  • - ช่องสำหรับระบุว่าเมลได้รับการยืนยันแล้วหรือไม่ หากเมลได้รับการยืนยัน จะมีค่าเป็น 1 มิฉะนั้นค่าจะเป็น 0รหัสผ่าน


- หากต้องการบันทึกรหัสผ่าน

หากคุณต้องการให้แบบฟอร์มการลงทะเบียนของคุณมีช่องอื่นๆ คุณสามารถเพิ่มได้ที่นี่ ผู้ใช้แค่นั้นแหละโต๊ะของเรา

พร้อม. เรามาดูขั้นตอนต่อไปกันดีกว่า

การเชื่อมต่อฐานข้อมูล

เราได้สร้างฐานข้อมูลแล้ว ตอนนี้เราต้องเชื่อมต่อกับมัน เราจะเชื่อมต่อโดยใช้ส่วนขยาย PHP MySQLi ในโฟลเดอร์ของเว็บไซต์ของเรา ให้สร้างไฟล์ที่มีชื่อ dbconnect.php

และเขียนสคริปต์ต่อไปนี้ลงไป: ในโฟลเดอร์ของเว็บไซต์ของเรา ให้สร้างไฟล์ที่มีชื่อไฟล์นี้

จะต้องเชื่อมต่อกับตัวจัดการแบบฟอร์ม สังเกตตัวแปร$address_site

ที่นี่ฉันระบุชื่อไซต์ทดสอบที่ฉันจะดำเนินการ กรุณาระบุชื่อเว็บไซต์ของคุณตามนั้น

โครงสร้างเว็บไซต์

ตอนนี้เรามาดูโครงสร้าง HTML ของเว็บไซต์ของเรากันดีกว่า เราจะย้ายส่วนหัวและส่วนท้ายของไซต์เป็นไฟล์แยกกัน header.php และ footer.php - เราจะรวมไว้ในทุกหน้า คือในหน้าหลัก (ไฟล์ดัชนี.php ) ไปยังหน้าที่มีแบบฟอร์มลงทะเบียน (file form_register.php ) และไปยังหน้าที่มีแบบฟอร์มการอนุญาต (file).

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

) และอีกหน้าหนึ่งไปยังหน้าที่มีแบบฟอร์มการอนุญาต (file

เนื้อหาของไฟล์ header.php:

ชื่อของเว็บไซต์ของเรา


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

ตอนนี้เรามาดูแบบฟอร์มการลงทะเบียนกันดีกว่า ตามที่คุณเข้าใจแล้ว เราได้บันทึกไว้ในไฟล์แล้ว ) ไปยังหน้าที่มีแบบฟอร์มลงทะเบียน (file.

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

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

ก่อนที่จะแสดงแบบฟอร์ม ให้เพิ่มบล็อกเพื่อแสดงข้อความแสดงข้อผิดพลาดจากเซสชัน

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

โดยทั่วไปแล้วรหัสไฟล์ ) ไปยังหน้าที่มีแบบฟอร์มลงทะเบียน (fileเราได้รับสิ่งนี้:

คุณได้ลงทะเบียนแล้ว

ในเบราว์เซอร์ หน้าที่มีแบบฟอร์มลงทะเบียนจะมีลักษณะดังนี้:


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

ให้ความสนใจกับรหัสของแบบฟอร์มการลงทะเบียนที่แสดงแคปต์ชา:


เราระบุเส้นทางไปยังไฟล์ในค่าของแอตทริบิวต์ src สำหรับรูปภาพ captcha.phpซึ่งสร้างแคปช่านี้

มาดูโค้ดไฟล์กัน captcha.php:

โค้ดได้รับการวิจารณ์อย่างดี ดังนั้นผมจะเน้นเพียงจุดเดียวเท่านั้น

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

เราสร้างโครงสร้าง HTML เสร็จแล้ว ก็ถึงเวลาดำเนินการต่อ

ตรวจสอบความถูกต้องของอีเมลโดยใช้ jQuery

แบบฟอร์มใดๆ จำเป็นต้องตรวจสอบความถูกต้องของข้อมูลที่ป้อน ทั้งในฝั่งไคลเอ็นต์ (โดยใช้ JavaScript, jQuery) และฝั่งเซิร์ฟเวอร์

เราต้องให้ความสนใจเป็นพิเศษกับฟิลด์อีเมล เป็นสิ่งสำคัญมากที่ที่อยู่ไปรษณีย์ที่ป้อนนั้นถูกต้อง

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


และในกรณีนี้เราต้องทำการตรวจสอบที่น่าเชื่อถือกว่านี้ ในการดำเนินการนี้ เราจะใช้ไลบรารี jQuery จาก JavaScript

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

หลังจากบรรทัดนี้ เราจะเพิ่มรหัสตรวจสอบอีเมล ที่นี่เราจะเพิ่มรหัสเพื่อตรวจสอบความยาวของรหัสผ่านที่ป้อน ความยาวต้องมีอย่างน้อย 6 ตัวอักษร

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

เสร็จสิ้นการตรวจสอบแบบฟอร์มในฝั่งไคลเอ็นต์แล้ว ตอนนี้เราสามารถส่งไปยังเซิร์ฟเวอร์ได้ โดยเราจะตรวจสอบและเพิ่มข้อมูลลงในฐานข้อมูลด้วย

การลงทะเบียนผู้ใช้

เราส่งแบบฟอร์มไปยังไฟล์เพื่อการประมวลผล register.phpผ่านทางวิธี POST ชื่อของไฟล์ตัวจัดการนี้ระบุไว้ในค่าแอ็ตทริบิวต์ การกระทำ- และวิธีการส่งระบุไว้ในค่าแอตทริบิวต์ วิธี.

เปิดไฟล์นี้ register.phpและสิ่งแรกที่เราต้องทำคือเขียนฟังก์ชันเปิดเซสชันและเชื่อมต่อไฟล์ที่เราสร้างไว้ก่อนหน้านี้ ในโฟลเดอร์ของเว็บไซต์ของเรา ให้สร้างไฟล์ที่มีชื่อ(ในไฟล์นี้เราได้เชื่อมต่อกับฐานข้อมูล) และมาประกาศเซลล์กันทันที error_messages header.php ความสำเร็จ_ข้อความในอาเรย์เซสชันส่วนกลาง ใน error_mesagesเราจะบันทึกข้อความแสดงข้อผิดพลาดทั้งหมดที่เกิดขึ้นระหว่างการประมวลผลแบบฟอร์มและใน ความสำเร็จ_ข้อความเราจะบันทึกข้อความอันน่ายินดี

ก่อนดำเนินการต่อ เราต้องตรวจสอบว่าได้ส่งแบบฟอร์มไปแล้วหรือไม่ ผู้โจมตีสามารถดูค่าแอตทริบิวต์ได้ การกระทำจากแบบฟอร์ม และดูว่าไฟล์ใดกำลังประมวลผลแบบฟอร์มนี้ และเขาอาจมีความคิดที่จะไปที่ไฟล์นี้โดยตรงโดยพิมพ์ที่อยู่ต่อไปนี้ในแถบที่อยู่ของเบราว์เซอร์: http://site_address/register.php

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

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

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

ตอนนี้เรามาดำเนินการยืนยันกันต่อ ในไฟล์ register.phpภายในบล็อก if ซึ่งเราจะตรวจสอบว่ามีการคลิกปุ่ม "ลงทะเบียน" หรือไม่ หรือตรงที่มีความคิดเห็น " ระบุไว้" // (1) ช่องว่างสำหรับโค้ดชิ้นถัดไป"เราเขียน:

//ตรวจสอบ captcha ที่ได้รับ //ตัดช่องว่างจากจุดเริ่มต้นและจุดสิ้นสุดของบรรทัด $captcha = trim($_POST["captcha"]);

if(isset($_POST["captcha"]) && !empty($captcha))( //เปรียบเทียบค่าที่ได้รับกับค่าจากเซสชัน if(($_SESSION["rand"] != $captcha) && ($_SESSION ["rand"] != ""))( // หาก captcha ไม่ถูกต้อง เราจะส่งคืนผู้ใช้ไปที่หน้าการลงทะเบียน และที่นั่นเราจะแสดงข้อความแสดงข้อผิดพลาดให้เขาทราบว่าเขาป้อน captcha ผิด . $error_message = "

ข้อผิดพลาด! คุณป้อนแคปต์ชาผิด

"; // บันทึกข้อความแสดงข้อผิดพลาดลงในเซสชัน $_SESSION["error_messages"] = $error_message; // ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน ("HTTP/1.1 301 ย้ายอย่างถาวร"); header("Location: " .$address_site "/form_register.php"); //หยุดสคริปต์ exit(); // (2) วางโค้ดชิ้นถัดไป )else( //หาก captcha ไม่ผ่านหรือเป็นทางออกที่ว่างเปล่า( "

"); }

ข้อผิดพลาด! ไม่มีรหัสยืนยัน ซึ่งก็คือรหัส captcha คุณสามารถไปที่หน้าหลักได้

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

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

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

// (2) ช่องว่างสำหรับโค้ดชิ้นถัดไป

/* ตรวจสอบว่ามีข้อมูลที่ส่งจากแบบฟอร์มในอาเรย์ส่วนกลาง $_POST หรือไม่ และล้อมข้อมูลที่ส่งในตัวแปรปกติ*/ if(isset($_POST["first_name"]))( //ตัดช่องว่างจากจุดเริ่มต้น และส่วนท้ายของสตริง $first_name = trim($_POST["first_name"]); //ตรวจสอบตัวแปรเพื่อดูความว่างเปล่า if(!empty($first_name))( // เพื่อความปลอดภัย ให้แปลงอักขระพิเศษเป็นเอนทิตี HTML $first_name = htmlspecialchars($first_name, ENT_QUOTES) ; )else( // บันทึกข้อความแสดงข้อผิดพลาดลงในเซสชัน $_SESSION["error_messages"] .= "

ใส่ชื่อของคุณ

"; //ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน("HTTP/1.1 301 ย้ายอย่างถาวร"); header("ตำแหน่ง: ".$address_site."/form_register.php"); //หยุดสคริปต์ออก(); ) if( isset($_POST["last_name"]))( //ตัดช่องว่างจากจุดเริ่มต้นและจุดสิ้นสุดของบรรทัด $last_name = trim($_POST["last_name"]); if(!empty($last_name)) ( // เพื่อความปลอดภัย ให้แปลงอักขระพิเศษเป็นเอนทิตี HTML $last_name = htmlspecialchars($last_name, ENT_QUOTES); )else( // บันทึกข้อความแสดงข้อผิดพลาดลงในเซสชัน $_SESSION["error_messages"] .= "

กรุณากรอกนามสกุลของคุณ

"; //ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน("HTTP/1.1 301 ย้ายอย่างถาวร"); header("ตำแหน่ง: ".$address_site."/form_register.php"); //หยุดสคริปต์ออก(); ) )else ( // บันทึกข้อความแสดงข้อผิดพลาดไปยังเซสชัน $_SESSION["error_messages"] .= "

ช่องนามสกุลหายไป

"; //ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน("HTTP/1.1 301 ย้ายอย่างถาวร"); header("ตำแหน่ง: ".$address_site."/form_register.php"); //หยุดสคริปต์ออก(); ) if( isset($_POST["email"]))( //ตัดช่องว่างจากจุดเริ่มต้นและจุดสิ้นสุดของบรรทัด $email = trim($_POST["email"]); if(!empty($email)) ( $email = htmlspecialchars ($email, ENT_QUOTES); // (3) ตำแหน่งโค้ดสำหรับตรวจสอบรูปแบบของที่อยู่อีเมลและความเป็นเอกลักษณ์ )else( // บันทึกข้อความแสดงข้อผิดพลาดลงในเซสชัน $_SESSION["error_messages"] .= "

ใส่อีเมลของคุณ

"; //ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน("HTTP/1.1 301 ย้ายอย่างถาวร"); header("ตำแหน่ง: ".$address_site."/form_register.php"); //หยุดสคริปต์ออก(); ) )else ( // บันทึกข้อความแสดงข้อผิดพลาดไปยังเซสชัน $_SESSION["error_messages"] .= "

"; //ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน("HTTP/1.1 301 ย้ายอย่างถาวร"); header("ตำแหน่ง: ".$address_site."/form_register.php"); //หยุดสคริปต์ออก(); ) if( isset($_POST["password"]))( //ตัดช่องว่างจากจุดเริ่มต้นและจุดสิ้นสุดของสตริง $password = trim($_POST["password"]); if(!empty($password)) ( $password = htmlspecialchars ($password, ENT_QUOTES); //เข้ารหัสรหัสผ่าน $password = md5($password"top_secret");else( //Save the error message to the session. $_SESSION["error_messages"] . = "

ใส่รหัสผ่านของคุณ

"; //ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน("HTTP/1.1 301 ย้ายอย่างถาวร"); header("ตำแหน่ง: ".$address_site."/form_register.php"); //หยุดสคริปต์ออก(); ) )else ( // บันทึกข้อความแสดงข้อผิดพลาดไปยังเซสชัน $_SESSION["error_messages"] .= "

"; //ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน("HTTP/1.1 301 ย้ายอย่างถาวร"); header("ตำแหน่ง: ".$address_site."/form_register.php"); //หยุดสคริปต์ออก(); ) // (4) วางโค้ดสำหรับเพิ่มผู้ใช้ลงในฐานข้อมูล

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

ณ สถานที่ที่กำหนด" // (3) รหัสที่ตั้งเพื่อตรวจสอบรูปแบบของที่อยู่ไปรษณีย์และความเป็นเอกลักษณ์" เพิ่มรหัสต่อไปนี้:

//ตรวจสอบรูปแบบของที่อยู่อีเมลที่ได้รับโดยใช้นิพจน์ทั่วไป $reg_email = "/^**@(+(*+)*\.)++/i";

//หากรูปแบบของที่อยู่อีเมลที่ได้รับไม่ตรงกับนิพจน์ทั่วไป if(!preg_match($reg_email, $email))( // บันทึกข้อความแสดงข้อผิดพลาดลงในเซสชัน $_SESSION["error_messages"] .= "

คุณป้อนอีเมลไม่ถูกต้อง

"; //ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน("HTTP/1.1 301 ย้ายอย่างถาวร"); header("ตำแหน่ง: ".$address_site."/form_register.php"); //หยุดสคริปต์ออก(); ) // เราตรวจสอบว่าที่อยู่ดังกล่าวอยู่ในฐานข้อมูลแล้วหรือไม่ $result_query = $mysqli->query("SELECT `email` FROM `users` WHERE `email`="".$email"""); มีเพียงหนึ่งแถวเท่านั้น ซึ่งหมายความว่าผู้ใช้ที่มีที่อยู่อีเมลนี้ได้ลงทะเบียนแล้ว if($result_query->num_rows == 1)( //หากผลลัพธ์ที่ได้รับไม่เป็นเท็จ if(($row = $result_query->fetch_assoc() ) != false) ( // บันทึกข้อความแสดงข้อผิดพลาดลงในเซสชัน $_SESSION["error_messages"] .= "

ผู้ใช้ที่มีที่อยู่อีเมลนี้ได้ลงทะเบียนแล้ว

"; //ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน("HTTP/1.1 301 ย้ายอย่างถาวร"); header("Location: ".$address_site."/form_register.php"); )else( // บันทึกข้อความแสดงข้อผิดพลาด ไปที่เซสชัน . $_SESSION["error_messages"] .= "

เกิดข้อผิดพลาดในการสืบค้นฐานข้อมูล

"; //ส่งผู้ใช้กลับไปยังส่วนหัวของหน้าการลงทะเบียน("HTTP/1.1 301 ย้ายอย่างถาวร"); header("ตำแหน่ง: ".$address_site."/form_register.php"); ) /* ปิดส่วนที่เลือก */ $ result_query-> close(); // หยุดสคริปต์ exit(); ) /* ปิดส่วนที่เลือก */ $result_query->close(); เมื่อตรวจสอบทั้งหมดเสร็จแล้ว ก็ถึงเวลาเพิ่มผู้ใช้ลงในฐานข้อมูล ณ สถานที่ที่กำหนด"" เพิ่มรหัสต่อไปนี้:

// (4) วางโค้ดสำหรับเพิ่มผู้ใช้เข้าฐานข้อมูล

//แบบสอบถามเพื่อเพิ่มผู้ใช้ในฐานข้อมูล $result_query_insert = $mysqli->query("INSERT INTO `users` (first_name, Last_name, email,password) VALUES ("".$first_name."", "".$last_name ” , "".$อีเมล์", "".$รหัสผ่าน"")");

if(!$result_query_insert)( // บันทึกข้อความแสดงข้อผิดพลาดลงในเซสชัน $_SESSION["error_messages"] .= "

เกิดข้อผิดพลาดในการขอเพิ่มผู้ใช้ลงในฐานข้อมูล
ตอนนี้คุณสามารถเข้าสู่ระบบโดยใช้ชื่อผู้ใช้และรหัสผ่านของคุณ

"; //ส่งผู้ใช้ไปที่ส่วนหัวของหน้าการอนุญาต("HTTP/1.1 301 ย้ายอย่างถาวร"); header("ตำแหน่ง: ".$address_site."/form_auth.php"); ) /* กำลังดำเนินการตามคำขอ */ $ result_query_insert-> close(); //ปิดการเชื่อมต่อกับฐานข้อมูล $mysqli->close();

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

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

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

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


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

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

การอนุญาตผู้ใช้

เพื่อระบุคุณค่า การกระทำแฮนดิแคปการอนุญาตมีไฟล์ระบุไว้ auth.phpซึ่งหมายความว่าแบบฟอร์มจะถูกประมวลผลในไฟล์นี้

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

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

รหัสไฟล์ ออกจากระบบ.php:

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

นอกจากนี้เรายังได้เรียนรู้วิธีตรวจสอบความถูกต้องของข้อมูลอินพุต ทั้งบนฝั่งไคลเอ็นต์ (ในเบราว์เซอร์ โดยใช้ JavaScript, jQuery) และบนฝั่งเซิร์ฟเวอร์ (โดยใช้ PHP) นอกจากนี้เรายังได้เรียนรู้วิธีดำเนินการตามขั้นตอนการออกจากไซต์ด้วย

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

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

หากคุณมีคำถามใด ๆ โปรดติดต่อฉัน และหากคุณสังเกตเห็นข้อผิดพลาดใด ๆ ในบทความ โปรดแจ้งให้เราทราบ

แผนการสอน (ตอนที่ 5):

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

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

    ตัวแทนจำหน่ายโฮสติ้ง

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

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

    1.การปรับแต่ง

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

    2. การใช้งาน

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

    อย่างไรก็ตาม โปรดทราบว่าหากคุณใช้ Linux สำหรับเว็บโฮสติ้ง แต่ในขณะเดียวกันก็ใช้ Windows OS แอปพลิเคชันบางตัวอาจไม่ทำงานเพียงอย่างเดียว

    3.ความมั่นคง

    แม้ว่าทั้งสองแพลตฟอร์มจะเสถียร แต่ Linux Reseller Hosting ก็มีความเสถียรมากกว่าในทั้งสองแพลตฟอร์ม เป็นแพลตฟอร์มโอเพ่นซอร์ส สามารถทำงานได้ในหลายสภาพแวดล้อม แพลตฟอร์มนี้สามารถแก้ไขและพัฒนาได้เป็นระยะๆ

    4. ความเข้ากันได้ของ .NET

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

    5. ข้อได้เปรียบด้านต้นทุน

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

    6. ความง่ายในการติดตั้ง

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

    7.การรักษาความปลอดภัย

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

    บทสรุป

    การเลือกระหว่างสองสิ่งนี้จะขึ้นอยู่กับความต้องการของคุณและความยืดหยุ่นด้านต้นทุน บริการโฮสติ้งทั้งสองมีข้อได้เปรียบที่ไม่เหมือนใคร แม้ว่า Windows จะติดตั้งง่าย แต่ Linux ก็คุ้มค่า ปลอดภัย และมีความหลากหลายมากกว่า



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

    ด้วยความสัตย์จริง ฉันมีบล็อกนี้มานานแล้ว และฉันก็เคยไปพบเครือข่ายโฆษณาต่างๆ ในอดีต หลังจากลบหน่วยโฆษณาออกจากบริษัทที่ทำให้ฉันแข็งทื่อ ฉันก็กลับมาที่จุดหนึ่ง ฉันควรทราบด้วยว่า ฉันไม่เคยชอบผลิตภัณฑ์ Googles AdSense เลย เพียงเพราะมันให้ความรู้สึกเหมือนเป็น "จุดต่ำสุด" ของโฆษณาแบบดิสเพลย์ ไม่ใช่จากมุมมองด้านคุณภาพ แต่มาจากด้านรายได้

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

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

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

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

    พวกเขาบอกว่าพวกเขาไม่สามารถหลีกเลี่ยงค่าธรรมเนียมได้ แต่พวกเขาจะคืนเงินค่าธรรมเนียมทั้งหมด.... รวมถึงการชำระเงินล่าสุดด้วย! ไม่เพียงแค่นั้น แต่ยังได้รับการชำระเงินคืนภายใน 10 นาที! คำขอแบบนั้นโดยไม่ต้องส่งต่อไปยัง "ฝ่ายการเงิน" แล้วไม่ได้รับการตอบกลับ

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

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

    แพลตฟอร์มซอฟต์แวร์ที่น่าทึ่งที่นำเสนอด้วย Pip จะให้โอกาสในการเริ่มเขียนโค้ดใน Python, HTML/CSS, JavaScript, Lua และ PHP อุปกรณ์นี้มีคำแนะนำแบบทีละขั้นตอนเพื่อให้เด็กๆ เริ่มเขียนโค้ดและแม้แต่สร้างไฟ LED ขึ้นมาด้วย แม้ว่า Pip ยังคงเป็นต้นแบบ แต่ก็จะต้องได้รับความนิยมอย่างมากในอุตสาหกรรมอย่างแน่นอน และจะดึงดูดเด็กๆ ที่สนใจในการเขียนโค้ด และจะมอบการศึกษาและทรัพยากรที่จำเป็นในการเริ่มต้นการเขียนโค้ดตั้งแต่อายุยังน้อย

    อนาคตของการเขียนโค้ด การเขียนโค้ดมีอนาคตที่ดี และแม้ว่าเด็กๆ จะไม่ได้ใช้การเขียนโค้ดเป็นอาชีพ พวกเขาก็ยังได้ประโยชน์จากการเรียนรู้วิธีเขียนโค้ดด้วยอุปกรณ์ใหม่นี้ที่ทำให้ง่ายกว่าที่เคย ด้วย Pip แม้แต่ผู้ชื่นชอบการเขียนโค้ดที่อายุน้อยที่สุดก็จะได้เรียนรู้ภาษาต่างๆ และจะมีความสามารถในการสร้างโค้ดของตัวเอง เกมของตัวเอง แอพของตัวเอง และอื่นๆ อีกมากมาย มันคืออนาคตของยุคอิเล็กทรอนิกส์ และ Pip ช่วยให้สามารถพัฒนาโครงสร้างพื้นฐานของการเขียนโค้ดได้อย่างเชี่ยวชาญ
    วิทยาการคอมพิวเตอร์ได้กลายเป็นส่วนสำคัญของการศึกษา และด้วยอุปกรณ์อย่าง Pip ใหม่ เด็กๆ จึงสามารถเริ่มยกระดับการศึกษาของตนเองที่บ้านไปพร้อมๆ กับการสนุกสนานไปด้วย การเขียนโค้ดเป็นมากกว่าแค่การสร้างเว็บไซต์หรือซอฟต์แวร์ สามารถใช้เพื่อเพิ่มความปลอดภัยในเมือง เพื่อช่วยในการวิจัยในสาขาการแพทย์ และอื่นๆ อีกมากมาย เนื่องจากตอนนี้เราอาศัยอยู่ในโลกที่ถูกครอบงำโดยซอฟต์แวร์ การเขียนโค้ดคืออนาคต และเป็นสิ่งสำคัญที่เด็กๆ ทุกคนจะต้องมีความเข้าใจพื้นฐานเกี่ยวกับวิธีการทำงาน แม้ว่าพวกเขาจะไม่เคยใช้ทักษะเหล่านี้เป็นอาชีพก็ตาม ในแง่ของอนาคต การเขียนโค้ดจะเป็นองค์ประกอบสำคัญในชีวิตประจำวัน มันจะเป็นภาษาของโลก และการไม่รู้คอมพิวเตอร์หรือวิธีการทำงานของคอมพิวเตอร์สามารถก่อให้เกิดความท้าทายที่ยากจะเอาชนะได้พอๆ กับการไม่รู้หนังสือ
    การเข้ารหัสจะให้การเปลี่ยนแปลงที่สำคัญในโลกของเกม โดยเฉพาะอย่างยิ่งเมื่อพูดถึงเกมออนไลน์ รวมถึงการเข้าถึงคาสิโนออนไลน์ หากต้องการดูว่าการเขียนโค้ดได้ปรับปรุงโลกของเกมอย่างไร ลองดูที่ไซต์คาสิโนยอดนิยมบางแห่งที่ต้องใช้การเขียนโค้ด ลองดูอย่างรวดเร็วเพื่อดูว่าการเขียนโค้ดสามารถนำเสนอสภาพแวดล้อมที่สมจริงทางออนไลน์ได้อย่างไร Pip มีส่วนร่วมกับเด็กๆ อย่างไร เมื่อพูดถึงโอกาสในการเรียนรู้การเขียนโค้ด เด็กๆ มีทางเลือกมากมาย มีอุปกรณ์และฮาร์ดแวร์จำนวนหนึ่งที่สามารถซื้อได้ แต่ Pip ใช้แนวทางที่แตกต่างกับอุปกรณ์ของพวกเขา ความสะดวกในการพกพาของอุปกรณ์และหน้าจอสัมผัสทำให้ได้เปรียบสำหรับอุปกรณ์เข้ารหัสอื่นๆ ที่มีอยู่ในตลาด Pip จะเข้ากันได้อย่างสมบูรณ์กับชิ้นส่วนอิเล็กทรอนิกส์ นอกเหนือจากระบบ Raspberry Pi HAT อุปกรณ์นี้ใช้ภาษามาตรฐานและมีเครื่องมือพื้นฐานและเป็นอุปกรณ์ที่สมบูรณ์แบบสำหรับผู้เขียนโค้ดมือใหม่ เป้าหมายคือการขจัดอุปสรรคระหว่างแนวคิดและการสร้างสรรค์ และทำให้เครื่องมือพร้อมใช้งานได้ทันที ข้อดีที่ยอดเยี่ยมอีกประการหนึ่งของ Pip คือมันใช้การ์ด SD ดังนั้นจึงสามารถใช้เป็นคอมพิวเตอร์เดสก์ท็อปได้เช่นเดียวกับเมื่อเชื่อมต่อกับจอภาพและเมาส์
    อุปกรณ์ Pip จะช่วยให้เด็กๆ และมือใหม่ที่สนใจเขียนโค้ดมีความกระตือรือร้นในการเรียนรู้และฝึกฝนการเขียนโค้ด ด้วยการเสนอการผสมผสานระหว่างการทำงานให้เสร็จสิ้นและการซ่อมแซมเพื่อแก้ไขปัญหา อุปกรณ์นี้จะดึงดูดคนรุ่นใหม่อย่างแน่นอน จากนั้นอุปกรณ์จะอนุญาตให้ผู้เขียนโค้ดรุ่นเยาว์เหล่านี้ก้าวไปสู่ระดับขั้นสูงของการเขียนโค้ดในภาษาต่างๆ เช่น JavaScript และ HTML/CSS เนื่องจากอุปกรณ์ดังกล่าวจำลองมาจากคอนโซลเกม จึงดึงดูดความสนใจของเด็ก ๆ ได้ทันที และจะกระตุ้นให้พวกเขาเรียนรู้เกี่ยวกับการเขียนโค้ดตั้งแต่อายุยังน้อย นอกจากนี้ยังมาพร้อมกับเกมที่โหลดไว้ล่วงหน้าบางเกมเพื่อดึงดูดความสนใจ เช่น Pac-Man และ Minecraft นวัตกรรมที่จะเกิดขึ้นในอนาคต นวัตกรรมส่วนใหญ่ขึ้นอยู่กับความสามารถในปัจจุบันของเด็กในการเขียนโค้ดและความเข้าใจโดยรวมเกี่ยวกับกระบวนการ เมื่อเด็กๆ เรียนรู้การเขียนโค้ดตั้งแต่อายุยังน้อยโดยใช้อุปกรณ์อย่าง Pip ใหม่ พวกเขาจะได้รับทักษะและความรู้ในการสร้างสรรค์สิ่งที่น่าทึ่งในอนาคต นี่อาจเป็นการแนะนำเกมหรือแอปใหม่ๆ หรือแม้แต่แนวคิดที่สามารถนำไปใช้จริงได้เพื่อช่วยในการวิจัยและการรักษาทางการแพทย์ มีความเป็นไปได้ไม่สิ้นสุด เนื่องจากอนาคตของเราจะถูกควบคุมโดยซอฟต์แวร์และคอมพิวเตอร์ การเริ่มต้นตั้งแต่เยาว์วัยจึงเป็นวิธีที่ดีที่สุด ซึ่งเป็นเหตุผลว่าทำไม Pip ใหม่จึงมุ่งเน้นไปที่กลุ่มคนรุ่นใหม่ ด้วยการนำเสนออุปกรณ์คอนโซลที่สามารถเล่นเกมไปพร้อมๆ กับการสอนทักษะการเขียนโค้ด สมาชิกรุ่นเยาว์ในสังคมกำลังเป็นผู้สร้างซอฟต์แวร์ในอนาคตที่จะเปลี่ยนแปลงชีวิตของเราทุกคน นี่เป็นเพียงจุดเริ่มต้น แต่เป็นสิ่งที่เด็กหลายล้านคนทั่วโลกกำลังเริ่มเรียนรู้และเชี่ยวชาญ การใช้อุปกรณ์อย่าง Pip จะครอบคลุมพื้นฐานการเขียนโค้ด และเด็กๆ จะได้เรียนรู้ภาษาการเขียนโค้ดต่างๆ อย่างรวดเร็ว ซึ่งสามารถนำไปสู่เส้นทางอันน่าทึ่งเมื่อเข้าสู่วัยผู้ใหญ่

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

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

    PHP

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

    User.class.php

    // อินสแตนซ์ ORM ส่วนตัว
    $orm ส่วนตัว;

    /**
    * ค้นหาผู้ใช้ด้วยสตริงโทเค็น เฉพาะโทเค็นที่ถูกต้องเท่านั้นที่จะถูกนำเข้า
    * การพิจารณา. โทเค็นจะมีอายุการใช้งาน 10 นาทีหลังจากที่ถูกสร้างขึ้น
    * @param string $token โทเค็นที่จะค้นหา
    * @return ผู้ใช้
    */

    ฟังก์ชั่นคงที่สาธารณะ findByToken($token)(

    // ค้นหาในฐานข้อมูลและตรวจสอบให้แน่ใจว่าการประทับเวลาถูกต้อง


    ->where("โทเค็น", $โทเค็น)
    ->where_raw("token_validity > ตอนนี้()")
    ->find_one();

    ถ้า(!$ผลลัพธ์)(
    กลับเท็จ;
    }

    คืนผู้ใช้ใหม่($ผล);
    }

    /**
    * เข้าสู่ระบบหรือลงทะเบียนผู้ใช้
    * @return ผู้ใช้
    */

    ฟังก์ชั่นสาธารณะคงที่ loginOrRegister($email)(

    // หากมีผู้ใช้ดังกล่าวอยู่แล้ว ให้ส่งคืน

    ถ้า(ผู้ใช้::มีอยู่($อีเมล))(
    ส่งคืนผู้ใช้ใหม่ ($ อีเมล);
    }

    // มิฉะนั้นให้สร้างมันขึ้นมาแล้วส่งคืน

    ส่งคืนผู้ใช้::create($email);
    }

    /**
    * สร้างผู้ใช้ใหม่และบันทึกลงในฐานข้อมูล
    * @param string $email ที่อยู่อีเมลของผู้ใช้
    * @return ผู้ใช้
    */

    สร้างฟังก์ชันคงที่ส่วนตัว ($อีเมล)(

    // เขียนผู้ใช้ใหม่ไปยังฐานข้อมูลแล้วส่งคืน

    $result = ORM::for_table("reg_users")->สร้าง();
    $ผล->อีเมล = $อีเมล;
    $ผลลัพธ์->บันทึก();

    คืนผู้ใช้ใหม่($ผล);
    }

    /**
    * ตรวจสอบว่ามีผู้ใช้ดังกล่าวอยู่ในฐานข้อมูลหรือไม่และส่งคืนบูลีน
    * @param string $email ที่อยู่อีเมลของผู้ใช้
    * @return บูลีน
    */

    มีฟังก์ชันคงที่สาธารณะอยู่แล้ว($email)(

    // มีผู้ใช้อยู่ในฐานข้อมูลหรือไม่?
    $result = ORM::for_table("reg_users")
    ->where("อีเมล", $อีเมล)
    ->นับ();

    ส่งกลับ $ผลลัพธ์ == 1;
    }

    /**
    * สร้างวัตถุผู้ใช้ใหม่
    * @param $param ORM instance, id, email หรือ null
    * @return ผู้ใช้
    */

    ฟังก์ชั่นสาธารณะ __construct($param = null)(

    ถ้า($param อินสแตนซ์ของ ORM)(

    // อินสแตนซ์ ORM ถูกส่งผ่านแล้ว
    $นี่->orm = $พารามิเตอร์;
    }
    อื่นถ้า(is_string($param))(

    // อีเมล์ถูกส่งไปแล้ว
    $นี่->
    ->where("อีเมล", $param)
    ->find_one();
    }
    อื่น(

    ถ้า(is_numeric($param))(
    // ID ผู้ใช้ถูกส่งผ่านเป็นพารามิเตอร์
    $id = $พารามิเตอร์;
    }
    อย่างอื่นถ้า(isset($_SESSION["loginid"]))(

    // ไม่มีการส่ง ID ผู้ใช้ โปรดดูที่เซสชัน
    $id = $_SESSION["loginid"];
    }

    $this->orm = ORM::for_table("reg_users")
    ->ที่ไหน("id", $id)
    ->find_one();
    }

    /**
    * สร้างโทเค็นการเข้าสู่ระบบ SHA1 ใหม่ เขียนลงในฐานข้อมูลและส่งคืน
    * สตริง @return
    */

    ฟังก์ชั่นสาธารณะ GenerateToken())(
    // สร้างโทเค็นสำหรับผู้ใช้ที่เข้าสู่ระบบ บันทึกลงในฐานข้อมูล

    $token = sha1($this->email.time().rand(0, 1000000));

    // บันทึกโทเค็นลงในฐานข้อมูล
    // และทำเครื่องหมายว่าใช้ได้ในอีก 10 นาทีข้างหน้าเท่านั้น

    $this->orm->set("โทเค็น", $โทเค็น);
    $this->orm->set_expr("token_validity", "ADDTIME(NOW(),"0:10")");
    $นี่->orm->บันทึก();

    ส่งคืนโทเค็น $;
    }

    /**
    *เข้าสู่ระบบผู้ใช้รายนี้
    * @return เป็นโมฆะ
    */

    เข้าสู่ระบบฟังก์ชั่นสาธารณะ ()

    // ทำเครื่องหมายผู้ใช้ว่าเข้าสู่ระบบแล้ว
    $_SESSION["loginid"] = $this->orm->id;

    // อัปเดตฟิลด์ Last_login db
    $this->orm->set_expr("last_login", "NOW()");
    $นี่->orm->บันทึก();
    }

    /**
    * ทำลายเซสชันและออกจากระบบผู้ใช้
    * @return เป็นโมฆะ
    */

    ออกจากระบบฟังก์ชันสาธารณะ()
    $_SESSION = อาร์เรย์();
    ไม่ได้ตั้งค่า($_SESSION);
    }

    /**
    * ตรวจสอบว่าผู้ใช้เข้าสู่ระบบหรือไม่
    * @return บูลีน
    */

    ฟังก์ชั่นสาธารณะเข้าสู่ระบบ())(
    กลับ isset($this->orm->id) && $_SESSION["loginid"] == $this->orm->id;
    }

    /**
    * ตรวจสอบว่าผู้ใช้เป็นผู้ดูแลระบบหรือไม่
    * @return บูลีน
    */

    ฟังก์ชั่นสาธารณะ isAdmin())(
    ส่งคืน $this->rank() == "administrator";
    }

    /**
    * ค้นหาประเภทผู้ใช้ อาจเป็นผู้ดูแลระบบหรือประจำก็ได้
    * สตริง @return
    */

    ตำแหน่งหน้าที่สาธารณะ())(
    if($this->orm->rank == 1)(
    กลับ "ผู้ดูแลระบบ";
    }

    กลับ "ปกติ";
    }

    /**
    * วิธีเวทย์มนตร์ในการเข้าถึงธาตุส่วนตัว
    * อินสแตนซ์ $orm เป็นคุณสมบัติของวัตถุผู้ใช้
    * @param string $key ชื่อของคุณสมบัติที่เข้าถึง
    * @return ผสม
    */

    ฟังก์ชั่นสาธารณะ __get($key)(
    ถ้า(isset($this->orm->$key))(
    ส่งคืน $this->orm->$key;
    }

    กลับเป็นโมฆะ;
    }
    }
    โทเค็นถูกสร้างขึ้นโดยใช้อัลกอริทึมและจัดเก็บไว้ในฐานข้อมูล เราใช้ MySQL เพื่อตั้งค่าคอลัมน์ token_validity เป็น 10 นาที เมื่อตรวจสอบความถูกต้องของโทเค็น เราจะแจ้งกลไกว่าเราต้องการโทเค็น ฟิลด์ token_validity ยังไม่หมดอายุ ด้วยวิธีนี้เราจะจำกัดเวลาที่โทเค็นจะใช้งานได้

    โปรดสังเกตว่าเราใช้เมธอด __get() ที่ส่วนท้ายของเอกสารเพื่อเข้าถึงคุณสมบัติของอ็อบเจ็กต์ผู้ใช้ สิ่งนี้ทำให้เราสามารถเข้าถึงข้อมูลที่เก็บไว้ในฐานข้อมูลเป็นคุณสมบัติ: $user->email, $user->token เป็นตัวอย่าง มาดูกันว่าเราจะใช้คลาสนี้ในโค้ดต่อไปนี้ได้อย่างไร:


    ไฟล์อื่นที่เก็บฟังก์ชันการทำงานที่จำเป็นคือfunctions.php เรามีฟังก์ชันตัวช่วยบางอย่างที่ช่วยให้เราสามารถรักษาโค้ดที่เหลือให้เรียบร้อยยิ่งขึ้น

    ฟังก์ชั่น.php

    ฟังก์ชั่น send_email($from, $to, $subject, $message)(

    // ฟังก์ชั่นตัวช่วยสำหรับการส่งอีเมล

    $headers = "เวอร์ชัน MIME: 1.0" "\r\n";
    $headers .= "Content-type: text/plain; charset=utf-8" . "\r\n";
    $headers .= "จาก: ".$จาก . "\r\n";

    ส่งคืนเมล($to, $subject, $message, $headers);
    }

    ฟังก์ชั่นget_page_url())(

    // ค้นหา URL ของไฟล์ PHP

    $url = "http".(empty($_SERVER["HTTPS"])?"///s")."://".$_SERVER["SERVER_NAME"];

    ถ้า(isset($_SERVER["REQUEST_URI"]) && $_SERVER["REQUEST_URI"] != "")(
    $url.= $_SERVER["REQUEST_URI"];
    }
    อื่น(
    $url.= $_SERVER["PATH_INFO"];
    }

    ส่งคืน $url;
    }

    ฟังก์ชั่น rate_limit($ip, $limit_hour = 20, $limit_10_min = 10)(

    // จำนวนความพยายามเข้าสู่ระบบในชั่วโมงสุดท้ายโดยที่อยู่ IP นี้

    $count_hour = ORM::for_table("reg_login_attempt")
    ->
    ->where_raw("ts > SUBTIME(NOW(),"1:00")")
    ->นับ();

    // จำนวนความพยายามเข้าสู่ระบบในช่วง 10 นาทีที่ผ่านมาโดยที่อยู่ IP นี้

    $count_10_min = ORM::for_table("reg_login_attempt")
    ->ที่ไหน("ip", sprintf("%u", ip2long($ip)))
    ->where_raw("ts > SUBTIME(NOW(),"0:10")")
    ->นับ();

    ถ้า($count_hour > $limit_hour || $count_10_min > $limit_10_min)(
    โยนข้อยกเว้นใหม่ ("พยายามเข้าสู่ระบบมากเกินไป!");
    }
    }

    ฟังก์ชั่นrate_limit_tick($ip, $email)(

    // สร้างบันทึกใหม่ในตารางความพยายามในการเข้าสู่ระบบ

    $login_attempt = ORM::for_table("reg_login_attempt")->สร้าง();

    $login_attempt->อีเมล = $อีเมล;
    $login_attempt->ip = sprintf("%u", ip2long($ip));

    $login_attempt->บันทึก();
    }

    เปลี่ยนเส้นทางฟังก์ชัน($url)(
    header("ตำแหน่ง: $url");
    ออก;
    }
    ฟังก์ชัน Rate_limit และ Rate_limit_tick ช่วยให้เราสามารถจำกัดจำนวนความพยายามในการอนุญาตในช่วงระยะเวลาหนึ่ง ความพยายามในการอนุญาตจะถูกบันทึกไว้ในฐานข้อมูล reg_login_attempt ฟังก์ชันเหล่านี้จะถูกทริกเกอร์เมื่อมีการยืนยันแบบฟอร์มการเข้าสู่ระบบ ดังที่คุณเห็นในข้อมูลโค้ดต่อไปนี้

    รหัสด้านล่างนำมาจาก index.php และมีหน้าที่ตรวจสอบความถูกต้องของแบบฟอร์มเข้าสู่ระบบ มันส่งคืนการตอบสนอง JSON ที่ขับเคลื่อนโดยโค้ด jQuery ที่เราเห็นใน Assets/js/script.js

    - เราจะรวมไว้ในทุกหน้า คือในหน้าหลัก (ไฟล์

    ถ้า(!empty($_POST) && isset($_SERVER["HTTP_X_REQUESTED_WITH"]))(

    // ส่งออกส่วนหัว JSON

    ส่วนหัว("ประเภทเนื้อหา: application/json");

    // ที่อยู่อีเมลถูกต้องหรือไม่?

    If(!isset($_POST["email"]) || !filter_var($_POST["email"], FILTER_VALIDATE_EMAIL))(
    Throw new Exception("กรุณากรอกอีเมล์ที่ถูกต้อง");
    }

    // สิ่งนี้จะทำให้เกิดข้อยกเว้นหากบุคคลนั้นอยู่เหนือ
    // ขีดจำกัดความพยายามในการเข้าสู่ระบบที่อนุญาต (ดูฟังก์ชั่นต่างๆ.php สำหรับข้อมูลเพิ่มเติม):
    อัตรา_จำกัด($_SERVER["REMOTE_ADDR"]);

    // บันทึกความพยายามในการเข้าสู่ระบบนี้
    rate_limit_tick($_SERVER["REMOTE_ADDR"], $_POST["อีเมล"]);

    // ส่งข้อความถึงผู้ใช้

    $ข้อความ = "";
    $อีเมล์ = $_POST["อีเมล์"];
    $subject = "ลิงค์เข้าสู่ระบบของคุณ";

    ถ้า(!User::exists($email))(
    $subject = "ขอขอบคุณสำหรับการลงทะเบียน!";
    $message = "ขอขอบคุณสำหรับการลงทะเบียนที่เว็บไซต์ของเรา!\n\n";
    }

    // พยายามเข้าสู่ระบบหรือลงทะเบียนบุคคล
    $user = ผู้ใช้::loginOrRegister($_POST["email"]);

    $message.= "คุณสามารถเข้าสู่ระบบได้จาก URL นี้:\n";
    $message.= get_page_url()"?tkn=".$user->generateToken()"\n\n";

    $message.= "ลิงก์จะหมดอายุโดยอัตโนมัติหลังจากผ่านไป 10 นาที";

    $result = send_email($fromEmail, $_POST["email"], $subject, $message);

    ถ้า(!$ผลลัพธ์)(
    Throw new Exception("เกิดข้อผิดพลาดในการส่งอีเมลของคุณ กรุณาลองใหม่อีกครั้ง");
    }

    ตาย(json_encode(อาร์เรย์(
    "message" => "ขอบคุณ! เราได้ส่งลิงก์ไปยังกล่องจดหมายของคุณแล้ว ตรวจสอบโฟลเดอร์สแปมของคุณด้วย”
    )));
    }
    }
    catch(ยกเว้น $e)(

    ตาย(json_encode(อาร์เรย์(
    "ข้อผิดพลาด"=>1,
    "ข้อความ" => $e->getMessage()
    )));
    }
    เมื่อการอนุญาตหรือการลงทะเบียนสำเร็จ รหัสด้านบนจะส่งอีเมลไปยังบุคคลที่มีลิงก์สำหรับการอนุญาต โทเค็นถูกทำให้พร้อมใช้งานเป็นตัวแปร $_GET "tkn" เนื่องจาก URL ที่สร้างขึ้น

    - เราจะรวมไว้ในทุกหน้า คือในหน้าหลัก (ไฟล์

    ถ้า(isset($_GET["tkn"]))(

    // นี่เป็นโทเค็นการเข้าสู่ระบบที่ถูกต้องหรือไม่?
    $user = ผู้ใช้::findByToken($_GET["tkn"]);

    // ใช่! เข้าสู่ระบบผู้ใช้และเปลี่ยนเส้นทางไปยังเพจที่ได้รับการป้องกัน

    $ผู้ใช้->เข้าสู่ระบบ();
    เปลี่ยนเส้นทาง ("protected.php");
    }

    // โทเค็นไม่ถูกต้อง เปลี่ยนเส้นทางกลับไปยังแบบฟอร์มเข้าสู่ระบบ
    เปลี่ยนเส้นทาง ("index.php");
    }
    การเรียกใช้ $user->login() จะสร้างตัวแปรเซสชันที่จำเป็น ซึ่งจะทำให้ผู้ใช้สามารถคงสถานะเข้าสู่ระบบในการเข้าสู่ระบบครั้งต่อไปได้

    การออกจากระบบจะดำเนินการในลักษณะเดียวกันโดยประมาณ:

    Index.php

    ถ้า(isset($_GET["ออกจากระบบ"]))(

    $user = ผู้ใช้ใหม่();

    ถ้า($ผู้ใช้->เข้าสู่ระบบ())(
    $ผู้ใช้->ออกจากระบบ();
    }

    เปลี่ยนเส้นทาง ("index.php");
    }
    ในตอนท้ายของโค้ด เราจะเปลี่ยนเส้นทางผู้ใช้ไปที่ index.php อีกครั้ง ดังนั้นพารามิเตอร์ ?logout=1 ใน URL จึงถูกตัดออก

    ไฟล์ index.php ของเราจะต้องมีการป้องกันด้วย - เราไม่ต้องการให้ผู้ใช้ที่เข้าสู่ระบบอยู่แล้วเห็นแบบฟอร์ม ในการดำเนินการนี้ เราใช้เมธอด $user->loggedIn():

    Index.php

    $user = ผู้ใช้ใหม่();

    ถ้า($ผู้ใช้->เข้าสู่ระบบ())(
    เปลี่ยนเส้นทาง ("protected.php");
    }
    สุดท้ายนี้ มาดูวิธีที่คุณสามารถปกป้องหน้าเว็บไซต์ของคุณและทำให้สามารถเข้าถึงได้หลังจากได้รับอนุญาตแล้วเท่านั้น:

    protected.php

    // เพื่อปกป้องหน้า php บนไซต์ของคุณ ให้รวม main.php ด้วย
    // และสร้างวัตถุผู้ใช้ใหม่ มันง่ายมาก!

    need_once "รวม/main.php";

    $user = ผู้ใช้ใหม่();

    ถ้า(!$user->loggedIn())(
    เปลี่ยนเส้นทาง ("index.php");
    }
    หลังจากการตรวจสอบนี้ คุณจะมั่นใจได้ว่าผู้ใช้เข้าสู่ระบบได้สำเร็จ คุณจะสามารถเข้าถึงข้อมูลที่จัดเก็บไว้ในฐานข้อมูลเป็นคุณสมบัติของวัตถุ $user หากต้องการแสดงอีเมลของผู้ใช้และอันดับ ให้ใช้รหัสต่อไปนี้:

    Echo "อีเมลของคุณ: ".$user->อีเมล;
    echo "อันดับของคุณ: ".$user->rank();
    ในที่นี้ rank() เป็นวิธีการเนื่องจากคอลัมน์อันดับในฐานข้อมูลมักจะมีตัวเลข (0 สำหรับผู้ใช้ทั่วไปและ 1 สำหรับผู้ดูแลระบบ) และเราจำเป็นต้องแปลงข้อมูลทั้งหมดนี้ให้เป็นชื่ออันดับ ซึ่งดำเนินการโดยใช้วิธีนี้ หากต้องการแปลงผู้ใช้มาตรฐานเป็นผู้ดูแลระบบ เพียงแก้ไขรายการของผู้ใช้ใน phpmyadmin (หรือโปรแกรมฐานข้อมูลอื่น ๆ) ในฐานะผู้ดูแลระบบ ผู้ใช้จะไม่ได้รับความสามารถพิเศษใดๆ คุณเองมีสิทธิ์เลือกสิทธิ์ที่จะให้ผู้ดูแลระบบ

    พร้อม!

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

    แก้ไขล่าสุดเมื่อ 5 เมษายน 2018 โดย Vincy

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

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

    แบบฟอร์มลงทะเบียนผู้ใช้

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