HTTP authentication ด้วย PHP

อยู่ในประเภท: PHP |
โพสเมื่อ

authentication คืออะไร พูดง่าย ๆ ที่สุด ก็คือ การป้องกันการเข้าถึงข้อมูลโดยการใช้ username และ password ในบทความนี้เราจะมา authentication ด้วยภาษาสคริปอย่าง php กัน แต่คุณจะต้องติดตั้ง apache module นั่นก็หมายความว่าแบบ CGI นั้นก็ใช้ไม่ได้นั่นเอง

ดูโคดตัวอย่างกันคับ ในที่นี้สมมติว่าเราป้องกันการเข้าถึงด้วย username “myuser” และ password “mypass”

  1. <?php
  2. if ($_SERVER[‘PHP_AUTH_USER’] != "mysuser" or $_SERVER[‘PHP_AUTH_PW’] != "mypass"):
  3. Header( "WWW-authenticate: basic realm=’Protected’");
  4. Header( "HTTP/1.0 401 Unauthorized");
  5. ?>
  6. <HTML>
  7. <HEAD><TITLE>Authorization Failed</TITLE></HEAD>
  8. <BODY>
  9. <H1>Authorization Failed</H1>
  10. <P>Without a valid username and password,
  11. access to this page cannot be granted.
  12. Please click "reload" and enter a
  13. username and password when prompted.
  14. </P>
  15. </BODY>
  16. </HTML>
  17. <?php else: ?>
  18. …เนื้อหาในหน้าเว็บที่ต้องการป้องกันการเข้าถึง…
  19. <?php endif; ?>


$_SERVER['PHP_AUTH_USER'] และ $_SERVER['PHP_AUTH_PW'] คือตัวแปรแบบ global ที่ php จัดเตรียมไว้ให้ โดยข้อมูลในตัวแปรสองตัวนี้จะได้มาจาก username และ password ที่ผู้ใช้ได้กรอกเข้าไปเมื่อมีการร้องขอข้อมูล ถ้าหากว่าเราตรวจสอบแล้วข้อมูลที่ได้มาไม่ถูกต้องกับที่เรากำหนดไว้เราก็จะสั่งให้ HTTP header 2 ตัวข้างล่างทำงาน

  1. Header( "WWW-authenticate: basic realm=’Protected’");

บรรทัดนี้เป็นคำสั่งที่ระบุว่าการร้องขอหน้านี้จะต้องใส่ username และ password

  1. Header( "HTTP/1.0 401 Unauthorized");

บรรทัดนี้บอกให้เบราเซอร์ว่า username และ password ไม่ถูกต้อง และสั่งให้หน้าต่างกรอก username และ password เด้งขึ้นมา

หากคุณต้องการ authenticate ทุก ๆ หน้าในเว็บคุณ แนะนำให้เก็บโคดนี้ไว้ในไฟล์ที่แยกเฉพาะ และ include ไฟล์นี้เข้าไปในหน้าที่ต้องการ authenticate

References:

แท็กส์ : , ,
Trackback url : คุณสามารถ trackback จากเว็บคุณได้


ตอบมา 2 คน- “HTTP authentication ด้วย PHP”

  1. jackz พูดว่า:

    แวะมาเยี่ยมครับ

  2. nu_tabo พูดว่า:

    มาเยี่มยม นะท่านเทพ

คอมเม้นท์ซะหน่อย

2 + 3 =