บ่อยครั้งที่จำเป็นต้องแบ่งผู้เยี่ยมชมออกเป็นที่ต้องการและไม่ต้องการ และให้โอกาสในการดูบางหน้าของเว็บไซต์เฉพาะผู้ที่มีชื่อผู้ใช้และรหัสผ่านเท่านั้น จะทำสิ่งนี้ได้อย่างไร เช่น ในภาษาสคริปต์ฝั่งเซิร์ฟเวอร์ PHP?
คำแนะนำ
ขั้นตอนที่ 1
มาจัดระเบียบวิธีที่ง่ายที่สุดในการปกป้องเพจของคุณจากผู้เยี่ยมชมที่ไม่ได้รับอนุญาต ผู้ถือข้อมูลเกี่ยวกับว่าผู้เยี่ยมชมได้รับอนุญาตหรือไม่จะเป็นเซสชัน เซสชันคือความคล้ายคลึงของคุกกี้ในเบราว์เซอร์ โดยมีความแตกต่างเพียงอย่างเดียวที่ไม่ได้สร้างขึ้นในคอมพิวเตอร์ของเรา แต่อยู่บนเซิร์ฟเวอร์ และใช้เพื่อจุดประสงค์เดียวกับคุกกี้ - เพื่อจัดเก็บข้อมูลที่แตกต่างกันเกี่ยวกับเราในขณะที่เราไปจากหน้าหนึ่งไปยังอีกหน้าของเว็บไซต์หนึ่ง เมื่อเราปิดเบราว์เซอร์ เซิร์ฟเวอร์จะทำลายเซสชันนี้ และครั้งต่อไปที่เราเข้าสู่ระบบ เซิร์ฟเวอร์จะสร้างเซสชันใหม่ เราใช้กลไกเซิร์ฟเวอร์นี้เพื่อบันทึกว่าผู้ใช้เข้าสู่ระบบเซสชันแล้วหรือไม่ การอ่านข้อมูลนี้ เมื่อผู้เยี่ยมชมร้องขอหน้า php-script จะเปิดการเข้าถึงหน้าที่มีการป้องกันด้วยรหัสผ่าน หรือเสนอให้ป้อนชื่อผู้ใช้และรหัสผ่าน
ขั้นตอนที่ 1: สร้างหน้าสำหรับเข้าสู่ระบบและรหัสผ่าน รหัส HTML ของแบบฟอร์มการให้สิทธิ์ในรูปแบบที่ง่ายที่สุดอาจมีลักษณะดังนี้:
เข้าสู่ระบบ:
รหัสผ่าน:
ที่นี่ (ที่จุดเริ่มต้นของไฟล์) เราจะเพิ่ม php-code ที่จะตรวจสอบความถูกต้องของชื่อผู้ใช้และรหัสผ่านที่ป้อนโดยผู้เยี่ยมชม ในตอนเริ่มต้นเราจะเขียน:
session_start ();
คำสั่งนี้เริ่มเซสชันใหม่หากยังไม่ได้สร้างไว้สำหรับผู้เยี่ยมชมรายนี้
จากนั้นให้ตรวจสอบว่าเซสชันมีตัวแปรชื่อ 'ชื่อผู้ใช้' หรือไม่ - จะเก็บชื่อไว้หากผู้เยี่ยมชมได้เข้าสู่ระบบแล้ว หากมีตัวแปรดังกล่าว ให้เปลี่ยนเส้นทางผู้เยี่ยมชมไปยังหน้าหลัก (index.php) และดำเนินการสคริปต์ php นี้ให้เสร็จสิ้น:
ถ้า ($ _ SESSION ['ชื่อผู้ใช้']) {
ส่วนหัว ("ตำแหน่ง: index.php");
ทางออก;
}
รหัสที่เหลือจะถูกดำเนินการก็ต่อเมื่อผู้ใช้ยังไม่ได้ป้อนชื่อผู้ใช้และรหัสผ่านที่ถูกต้อง มาระบุว่าการเข้าสู่ระบบและรหัสผ่านใดที่ถือว่าถูกต้อง:
$ validName = 'ฉันเป็นของฉัน!';
$ validPass = 'รหัสผ่านลับ';
จากนั้นเราตรวจสอบเพื่อดูว่าค่าที่ส่งจากแบบฟอร์มตรงกับค่าที่ถูกต้องหรือไม่ เนื่องจากเราได้ระบุวิธีการถ่ายโอนข้อมูล POST ในแบบฟอร์ม จึงควรอ่านจากตัวแปร superglobal $ _POST:
ถ้า ($ _ POST ['ชื่อผู้ใช้'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['ชื่อผู้ใช้'] = $ validName;
ส่วนหัว ("ตำแหน่ง: index.php");
ทางออก;
}
ที่นี่รหัสในวงเล็บปีกกา {} จะถูกดำเนินการด้วยค่าที่ถูกต้องของชื่อผู้ใช้และรหัสผ่าน ในบรรทัด $ _SESSION ['userName'] = $ validName; ma เราเขียนตัวแปรชื่อ 'userName' ในเซสชั่นที่มีการเข้าสู่ระบบของผู้ใช้ที่ได้รับอนุญาตในขณะนี้ นี่จะเป็นเครื่องหมายที่เปิดให้เขาเข้าถึงได้ทุกที่ ตราบใดที่เซสชันปัจจุบันของเขายังใช้ได้
และในกรณีที่กรอกข้อมูลลงในแบบฟอร์มไม่ถูกต้อง ให้เพิ่มข้อความที่เหมาะสม:
สะท้อนอย่างอื่น"
เข้าสู่ระบบหรือรหัสผ่านไม่ถูกต้อง!
;
รหัสทั้งหมดที่ต้องบันทึกลงในไฟล์ชื่อ login.php จะมีลักษณะดังนี้:
<?php
session_start ();
ถ้า ($ _ SESSION ['ชื่อผู้ใช้']) {
ส่วนหัว ("ตำแหน่ง: index.php");
ทางออก;
}
$ validName = 'ฉันเป็นของฉัน!';
$ validPass = 'รหัสผ่านลับ';
ถ้า ($ _ POST ['ชื่อผู้ใช้'] == $ validName && $ _POST ['userPass'] == $ validPass) {
$ _SESSION ['ชื่อผู้ใช้'] = $ validName;
ส่วนหัว ("ตำแหน่ง: index.php");
ทางออก;
}
สะท้อนอย่างอื่น"
เข้าสู่ระบบหรือรหัสผ่านไม่ถูกต้อง!
;
?>
เข้าสู่ระบบ:
รหัสผ่าน:
ขั้นตอนที่ 2
ขั้นตอนที่ 2: สร้างบล็อกการอนุญาต - ไฟล์แยกต่างหากที่จะเชื่อมต่อกับแต่ละเพจที่ต้องการการป้องกันด้วยรหัสผ่าน ไฟล์นี้จะมีเพียง php-code ดังนั้นนามสกุลจะเป็น "php" และเราจะตั้งชื่อตามประเพณีสำหรับไฟล์ดังกล่าว - "auth" นั่นคือ "auth.php" และที่นี่เช่นกันทันทีหลังจากแท็กเปิด <? Php ควรมีคำแนะนำในการเริ่มเซสชัน:
session_start ();
เราสามารถอ่านตัวแปรทั้งหมดที่เก็บอยู่ในเซสชันจากอาร์เรย์ superglobal $ _SESSION เราจำเป็นต้องตรวจสอบค่าของตัวแปร "ชื่อผู้ใช้" - หากผู้เยี่ยมชมยังไม่ได้เข้าสู่ระบบ ค่านั้นจะไม่อยู่ในอาร์เรย์ และเราจะเปลี่ยนเส้นทางไปยังหน้าเพื่อป้อนชื่อผู้ใช้และรหัสผ่าน:
ถ้า (! $ _ SESSION ['ได้รับอนุญาต']) {
ส่วนหัว ("ตำแหน่ง: login.php");
ทางออก;
}
รหัสทั้งหมดที่ต้องบันทึกลงในไฟล์ auth.php จะมีลักษณะดังนี้:
<?php
session_start ();
ถ้า (! $ _ SESSION ['admin']) {
ส่วนหัว ("ตำแหน่ง: enter.php");
ทางออก;
}
?>
ขั้นตอนที่ 3
ขั้นตอนที่ 3: หลังจากที่เราบันทึกไฟล์เหล่านี้บนเซิร์ฟเวอร์แล้ว ไฟล์จะยังคงอยู่ในหน้า php ทั้งหมดที่ต้องได้รับการปกป้องจากผู้ใช้ที่ไม่ได้รับอนุญาตเพื่อเชื่อมต่อบล็อกการอนุญาต นั่นคือ ในตอนต้นของไฟล์ php แต่ละไฟล์ คุณจะต้องใส่รหัสนี้:
<?php
ต้องการ "auth.php";
?>
และในการเปลี่ยนรหัสผ่านการเข้าถึง คุณจะต้องเปลี่ยนค่าของตัวแปรเหล่านี้ในไฟล์ login.php:
$ validName = 'ฉันเป็นของฉัน!';
$ validPass = 'รหัสผ่านลับ';
$ validName - เข้าสู่ระบบ, $ validPass - รหัสผ่าน