การสร้างโปรแกรมประยุกต์เว็บ > ระบบการรับรองของ PHP และ MySQL 
      การสร้างระบบรับรองเอง
      
	  การรับรองผู้ใช้  (User  Authentication) เป็นภาระหน้าที่ปกติ ดังนั้นมีสิ่งอำนวยความสะดวกการรับรองที่มากับ  HTTP สคริปต์หรือแม่ข่ายเว็บสามารถขอการรับรองจาก browser  โดย browser ตอบสนองสำหรับการแสดงไดอะล็อกเพื่อรับสารสนเทศจากผู้ใช้ 
ถึงแม้ว่า  แม่ข่ายเว็บขอรายละเอียดการรับรองใหม่สำหรับทุกคำขอจากผู้ใช้ browser ไม่จำเป็นต้องขอรายละเอียดผู้ใช้สำหรับทุกเพจ  โดยทั่วไป browser เก็บรายละเอียดเหล่านี้เท่าที่ browser  เปิดและส่งใหม่อย่างอัตโนมัติไปยังแม่ข่ายเว็บตามความต้องการปราศจากการติดต่อกับผู้ใช้ 
ส่วนการทำงานนี้ของ  HTTP เรียกว่าการรับรองพื้นฐาน (Basic Authentication)  โดยสามารถสลับไปใช้ของ PHP หรือใช้กลไกที่มากับแม่ข่ายเว็บ 
	  	    การรับรองพื้นฐานป้องกันชื่อ   realm และต้องการผู้ใช้ให้ชื่อผู้ใช้และรหัสผ่าน  เนื่องจาก realm เป็นชื่อดังนั้นจึงมี realm มากกว่าหนึ่งที่สามารถอยู่บนแม่ข่ายเดียวกัน ไฟล์หรือไดเรคทอรีต่างกันบนแม่ข่ายเดียวกัน  สามารถเป็นส่วนของ realm ต่างกัน ซึ่งแต่ละชุดได้รับการป้องกันโดยชุดของชื่อและรหัสผ่านต่างกัน  ชื่อ realm ยอมให้จัดกลุ่มหลายไดเรคทอรีบนโฮสต์หรือโฮสต์เสมือนเป็น  realm และป้องกันทั้งหมดด้วย 1 รหัสผ่าน 
	  การรับรองพื้นฐานใน PHP
	  	    สคริปต์  PHP ข้ามแพล็ตฟอร์มได้ แต่การใช้การรับรองพื้นฐานขึ้นกับตัวแปร environment  ที่ตั้งค่าโดยแม่ข่าย สำหรับสคริปต์การรับรองของ HTTP ที่เรียกใช้บน Apache ที่ใช้ PHP เป็นโมดูล Apache หรือ IIS ที่ใช้  PHP เป็นโมดูล ISAPI ดังนั้นต้องสืบค้นประเภทแม่ข่าย  สคริปต์ในรายการคำสั่ง 2.2.5 จะเรียกใช้ได้ทั้ง 2 แม่ข่าย 
	  รายการคำสั่ง 2.2.5  สคริปต์ auth.php เข้าสู่การรับรองพื้นฐาน PHP 
	  
        
            
              <?php 
                              // if using IIS, it is need to set $PHP_AUTH_USER and $PHP_AUTH_PW 
                if (substr($SERVER_SOFTWARE, 0, 9) == "Microsoft"    && 
                !isset($PHP_AUTH_USER)    && 
                !isset($PHP_AUTH_PW)    && 
                substr($HTTP_AUTHORIZATION,    0, 6) == "Basic " 
                )  
                {  
              
                                list($PHP_AUTH_USER,    $PHP_AUTH_PW) =  
                  explode(":",    base64_decode(substr($HTTP_AUTHORIZATION, 6))); 
               
                              }  
              // if using database query, replace this statement.  
              if ($PHP_AUTH_USER != "user" || $PHP_AUTH_PW !=    "pass") 
              { 
              
                 header('WWW-Authenticate:    Basic realm="Realm-Name"');  
                  if (substr($SERVER_SOFTWARE,    0, 9) == "Microsoft")  
                      header("Status: 401    Unauthorized");  
                  else  
                      header("HTTP/1.0 401    Unauthorized");  
                echo <<<EOSTR 
                  <h1>ไม่ถูกต้อง</h1> 
                  ท่านไม่สามารถเข้าถึงทรัพยากรภายในได้ 
                  <br/> 
               
                          EOSTR; 
                          }  
              else  
            { 
            
                            // if correct user  
                echo <<<EOSTR 
  <h1>ถูกต้อง</h1>  
                ขอแสดงความยินดีที่สามารถมองเห็นเพจนี้<br/> 
                ท่านผ่านการรับรอง    HTTP<br/> 
                                       EOSTR; 
              } 
          ?>  
		   | 
         
       
	  ผู้ใช้จะมองอินเตอร์เฟซที่ต่างจากรายการคำสั่งก่อน  โดยไม่ได้ให้ฟอร์ม HTML  สำหรับสารสนเทศเข้าระบบ browser จะให้ไดอะล็อก  ตามภาพ 2.2.5 เป็นไดอะล็อกของ Internet Explorer 
	    
	  ภาพ 2.2.5  ไดอะล๊อกเมื่อใช้การรับรอง HTTP 
	  ในรายการคำสั่งก่อนหน้านี้สามารถรวมคำสั่งนี้ในเพจที่ต้องการป้องกันได้ 
	  การรับรองพื้นฐานกับไฟล์ .htaccess ของ Apache
	  	    ผลลัพธ์เหมือนกับสคริปต์ก่อนหน้านี้สามารถทำได้โดยปราศจากการเขียนสคริปต์  PHP 
	  	    แม่ข่าย  Apache เก็บโมดูลการรับรองหลายโมดูลที่สามารถใช้ตัดสินความถูกต้องของข้อมูลป้อนเข้าโดยผู้ใช้  การใช้ง่ายที่สุดคือ mod_auth ซึ่งเปรียบเทียบคู่ชื่อและรหัสผ่านกับบรรทัดในไฟล์ข้อความบนแม่ข่าย 
	  	    ในการรับผลลัพธ์เหมือนกับสคริปต์ก่อนต้องสร้างไฟล์  HTML 2 ไฟล์ ไฟล์หนึ่งสำหรับเก็บข้อมูลและอีกไฟล์เป็นเพจปฏิเสธ ตัวอย่าง accept.html เก็บข้อมูล และ denied.html เป็นเพจปฏิเสธ  
	  รายการคำสั่ง 2.2.6  ไฟล์ .htaccess  สำหรับการสร้างคอนฟิกกับ Apache 
	  
        
           
            ErrorDocument 401    /chapter15/denied.html 
            AuthUserFile /home/book/.htpass 
            AuthGroupFile /dev/null 
            AuthName "Realm-Name" 
            AuthType Basic 
            require valid-user  | 
         
       
	  รายการคำสั่ง  2.2.6 คือ ไฟล์ .htaccess เพื่อเปิดการรับรองพื้นฐานในไดเรคทอรี  การตั้งค่าหลายค่าได้รับการทำในไฟล์ .htaccess แต่ 6  บรรทัดในตัวอย่างนี้สัมพันธ์กับการรับรอง บรรทัดแรก 
	    EnrorDocument  401 /chapter15/denied.html 
	  คำสั่ง  Error Document สามารถใช้ให้เพจของตัวเองสำหรับความผิดพลาด HTTP อื่น 
	    ErrorDocument  error_number URL  
	  สำหรับเพจควบคุมความผิดพลาด  401 มีความสำคัญคือ URL  ที่ให้  
	  AuthUserFile  /home/book/.htpass  
	  บอก  Apache ถึงที่ค้นหาไฟล์เก็บรหัสผ่านของผู้ใช้ ตามปกติชื่อว่า .htpass แต่สามารถให้ชื่อตามต้องการ  
	    การระบุเฉพาะผู้ใช้ที่ถูกต้องผู้อยู่กลุ่มการเข้าถึงทรัพยากรจึงไม่มีการเลือก  บรรทัดนี้ คือ  
	    AuthGroupFile/dev/null  
	  ตั้งค่า  AuthGeoupFile ชี้ไปที่ /dev/null ไฟล์พิเศษบนระบบ UNIX ที่ประกันว่าเป็นค่าว่าง 
	    การรับรอง  HTTP เหมือนกับ PHP คือ ต้องตั้งชื่อ realm ดังนี้ 
	    AuthName "Realm   Name"  
	  เนื่องจากวิธีการรับรองมีหลายวิธีดังนั้นต้องระบุวิธีการรับรองที่ใช้   ในตัวอย่างนี้ใช้การรับรองแบบ Basic  
	    AuthType  Basic 
	  การระบุว่าผู้ใดได้รับอนุญาตให้เข้าถึง  โดยสามารถระบุผู้ใช้ กลุ่มเฉพาะหรืออื่นๆ เพื่อยอมให้เข้าถึง  
	    Require  valid  user  
	  การรับรองพื้นฐานด้วย IIS
	  	    IIS สนับสนุนการรับรอง HTTP เหมือน Apache โดย Apache ใช้วิธี UNIX และควบคุมการแก้ไขไฟล์ข้อความและ  IIS ตั้งค่าด้วยการเลือกตัวเลือกในไดอะล็อก 
	  	    ใน  Windows 2000 และต่อมา การเปลี่ยนคอนฟิกของ Internet Information Server 5 (IIS5)  ใช้ Internet Service Manager ส่วนการทำงานนี้หาได้โดยเลือก  Administrative tools ใน Control Panel  
	  Internet Services Manager ดูเหมือนภาพ 2.2.6 โครงสร้างควบคุมบนด้านซ้ายแสดงชื่อเครื่องแม่ข่าย windows และกำลังเรียกใช้บริการอยู่ บริการหนึ่งที่สนใจในเว็บ  ภายในเว็บนี้มีไดเรคทอรีชื่อ personal ภายในไดเรคทอรีคือไฟล์ชื่อ  accept.html
	    
	  ภาพ 2.2.6  การตั้งค่าคอนฟิกไดเรคทอรี personal บน IIS 
	  การเพิ่มการรับรองพื้นฐานกับไดเรคทอรี  personal คลิกเมาส์ปุ่มขวาและเลือก properties จากเมนู 
	  	    ไดอะล็อก  Properties ยอมให้ทำการเปลี่ยนการตั้งค่าสำหรับไดเรคทอรีนี้ 2 แท็บที่สนใจคือ Directory  Security และ Custom Errors ตัวเลือกหนึ่งบนแท็บ  Directory Security คือ Authentication Control และ Anonymous Access คลิกปุ่ม Edit นี้จะแสดงไดอะล็อก 
	  	    ภายในไดอะล็อกนี้  สามารถยกเลิกการเข้าถึงแบบปิดบังชื่อ และเปิดการรับรองพื้นฐาน  ด้วยการตั้งค่าตามการแสดงในภาพ 2.2.6 เฉพาะบุคคลผู้ให้ชื่อและรหัสผ่านถูกต้องสามารถดูไฟล์ต่างๆ  ในไดเรคทอรีนี้ 
	  	    ในการคัดลอกพฤติกรรมของตัวอย่างก่อน  จะต้องให้เพจบอกกับผู้ใช้ถึงรายละเอียดการรับรองไม่ถูกต้องปิดไดอะล็อกวิธีการรับรองจะยอมให้เลือกแท็บ  Custom Errors   
	        แท็บ   Custom Errors ตามภาพ 2.2.7 ความผิดพลาดที่เกี่ยวข้องด้วยข่าวสารความผิดพลาด ที่นี่มีการเก็บไฟล์ปฏิเสธเดียวกันที่ใช้ก่อนหน้านี้  คือ denied.html ตามรายการคำสั่ง 2.2.6 IIS  มีความสามารถให้ข่าวสารความผิดพลาดพิเศษมากกว่า Apache เพื่อให้เหตุผลถึงสาเหตุการเกิดขึ้นของรหัสความผิดพลาด HTTP สำหรับความผิดพลาด 401 ซึ่งแสดงการรับรองล้มเหลว IIS ให้ได้ 5 เหตุผล และให้ข่าวสารของแต่ละความผิดพลาดแต่เลือกเพียง 2  เหตุผลที่กำลังเกิดขึ้นในตัวอย่างนี้ด้วยเพจปฏิเสธ 
	    
ภาพ 2.2.7 การคอนฟิกไฟล์ปฏิเสธ 
	    
		
         
			
	  			 |