ตัวแปรที่จำเป็น
ต้องใช้ตัวแปร superglobal ต่อไปนี้เพื่อค้นหาที่อยู่ URL ของหน้าปัจจุบัน
ตัวแปรซูเปอร์โกลบอล | วัตถุประสงค์ |
---|---|
$_SERVER['HTTPS'] | มันกลับมา บน หากมีการใช้โปรโตคอล HTTPS ใน URL ของหน้าปัจจุบัน |
$_SERVER['HTTP_HOST'] | ส่งคืนชื่อเซิร์ฟเวอร์ของเพจปัจจุบัน |
$_SERVER['REQUEST_URI'] | ส่งคืนชื่อทรัพยากรที่ร้องขอ |
$_SERVER['SERVER_PORT'] | ส่งคืนหมายเลขพอร์ตของเซิร์ฟเวอร์ |
$_SERVER['QUERY_STRING'] | ส่งกลับค่าสตริงการสืบค้นหากมีอยู่ในที่อยู่ URL ของหน้าปัจจุบัน |
ตัวอย่างที่ 1: แสดง URL ของหน้าปัจจุบันโดยใช้คำสั่งเงื่อนไข
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าคำสั่งแบบมีเงื่อนไขสามารถใช้เพื่อรับโปรโตคอลที่ใช้ใน URL ของหน้าปัจจุบันได้อย่างไร สร้างไฟล์ PHP ด้วยสคริปต์ต่อไปนี้
ค่าของ $_SERVER['HTTP_HOST'] ใช้เพื่อรับชื่อโดเมนของ URL ปัจจุบัน ค่าของ $_SERVER['REQUEST_URI'] ใช้เพื่อรับชื่อของทรัพยากรที่ร้องขอ ที่ไปแล้ว) ฟังก์ชันที่ใช้ตรวจสอบว่า $_SERVER[‘HTTPS’] เป็น set หรือไม่ และหากตั้งค่าแล้วให้ตรวจสอบค่าของ $_SERVER[‘HTTPS’] ว่าเป็น บน หรือไม่. ถัดไป ค่าของตัวแปรทั้งสามนี้จะรวมกับ '//:' เพื่อดึง URL แบบเต็มของหน้าปัจจุบัน
// อ่านชื่อโดเมนของหน้าปัจจุบัน
$domain = $_SERVER['HTTP_HOST'];
// อ่านทรัพยากรที่ร้องขอ
$resource = $_SERVER['REQUEST_URI'];
// ค้นหาโปรโตคอลของ url ปัจจุบัน
ถ้า( ที่ไปแล้ว ($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'บน')
$โปรโตคอล = 'https';
อื่น
$โปรโตคอล = 'http';
// รวมทุกส่วนเพื่อรับที่อยู่ URL แบบเต็ม
$url = $โปรโตคอล.': //'.$domain.$resource;
// พิมพ์ที่อยู่ URL ของหน้าปัจจุบัน
โยนออก '
ที่อยู่ URL ของปัจจุบัน
หน้าคือ:
'. $url;?> เอาท์พุท:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากเรียกใช้สคริปต์จากเซิร์ฟเวอร์ ค่าของ $_SERVER['HTTPS'] ไม่ใช่ค่า บน สำหรับเซิร์ฟเวอร์ท้องถิ่น ดังนั้นผลลัพธ์จะแสดง http โปรโตคอลสำหรับ URL ปัจจุบัน
ตัวอย่างที่ 2: แสดง URL ของหน้าปัจจุบันโดยใช้ตัวดำเนินการ ternary
ตัวอย่างต่อไปนี้แสดงวิธีรับ URL แบบเต็มของหน้าปัจจุบันโดยใช้โอเปอเรเตอร์ที่ประกอบไปด้วย สร้างไฟล์ PHP ด้วยสคริปต์ต่อไปนี้
ถ้า ในตัวอย่างก่อนหน้านี้จะใช้เงื่อนไขเพื่อค้นหาว่าโปรโตคอลใดที่ใช้ใน URL ของหน้าปัจจุบัน งานเดียวกันทำได้โดยใช้ตัวดำเนินการ ternary ในสคริปต์นี้ ที่ไปแล้ว) ฟังก์ชันใช้เพื่อตรวจสอบว่า $_SERVER[‘HTTPS’] เป็นชุดหรือไม่ และถ้าค่าของ $_SERVER[‘HTTPS’] เป็น บน, จากนั้นตัวดำเนินการ ternary จะส่งคืน HTTPS มิฉะนั้นจะส่งคืน HTTP ส่วนอื่น ๆ ของ URL จะถูกดึงและพิมพ์เหมือนตัวอย่างก่อนหน้านี้
// ค้นหาโปรโตคอลของ url ปัจจุบัน
$โปรโตคอล = ( ที่ไปแล้ว ($_SERVER['HTTPS']) && $_SERVER['HTTPS']
== 'บน'?'https' : 'http');
// อ่านชื่อโดเมนของหน้าปัจจุบัน
$domain = $_SERVER['HTTP_HOST'];
// อ่านทรัพยากรที่ร้องขอ
$resource = $_SERVER['REQUEST_URI'];
// รวมทุกส่วนเพื่อรับที่อยู่ URL แบบเต็ม
$url = $โปรโตคอล.': //'.$domain.$resource;
// พิมพ์ที่อยู่ URL ของหน้าปัจจุบัน
โยนออก '
ที่อยู่ URL ของหน้าปัจจุบันคือ:
'. $url;?>
เอาท์พุท:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากเรียกใช้สคริปต์จากเซิร์ฟเวอร์ ค่าของ $_SERVER['HTTPS'] ไม่ใช่ค่า บน สำหรับเซิร์ฟเวอร์ท้องถิ่น ดังนั้นผลลัพธ์จะแสดงโปรโตคอล HTTP สำหรับ URL ปัจจุบัน
ตัวอย่างที่ 3: แสดง URL ของหน้าปัจจุบันตามหมายเลขพอร์ต
ในสองตัวอย่างก่อนหน้านี้ ค่าของ $_SERVER[‘HTTPS’] ถูกใช้เพื่อค้นหาโปรโตคอลของ URL ปัจจุบันของหน้า และไม่มีการใช้สตริงการสืบค้นกับ URL ตัวอย่างต่อไปนี้แสดงให้เห็นว่าตัวแปร $_SERVER['SERVER_PORT'] สามารถใช้เพื่อค้นหาโปรโตคอลและเรียกที่อยู่ URL แบบเต็มด้วยสตริงการสืบค้นได้อย่างไร สร้างไฟล์ PHP ด้วยสคริปต์ต่อไปนี้
ในที่นี้ เงื่อนไขเชิงตรรกะและโอเปอเรเตอร์ประกอบหลายรายการถูกใช้เพื่อค้นหาโปรโตคอล หากค่าของ $_SERVER[‘HTTPS’] ว่างเปล่าหรือตั้งค่าเป็น ปิด, จากนั้นจะตรวจสอบค่าของ $_SERVER[‘SERVER_PORT’] เพื่อค้นหาโปรโตคอลของ URL ปัจจุบัน ตัวแปร $_SERVER['QUERY_STRING'] ใช้เพื่อดึงค่าสตริงการสืบค้นจาก URL
// ค้นหาโปรโตคอลของ url ปัจจุบัน
$โปรโตคอล = ((! ว่างเปล่า ($_SERVER['HTTPS']) && $_SERVER['HTTPS']
! = 'ปิด') || $_SERVER['SERVER_PORT'] == 443)?'https: //' : 'http: //';
// อ่านชื่อโดเมนของหน้าปัจจุบัน
$domain = $_SERVER['HTTP_HOST'];
// อ่านทรัพยากรที่ร้องขอ
$resource = $_SERVER['REQUEST_URI'];
// อ่านค่าสตริงการสืบค้น
$query = $_SERVER['QUERY_STRING'];
// รวมทุกส่วนเพื่อรับที่อยู่ URL แบบเต็ม
$url = $โปรโตคอล.$domain.$resource;
// พิมพ์ที่อยู่ URL ของหน้าปัจจุบัน
โยนออก '
ที่อยู่ URL แบบเต็มของหน้าปัจจุบันคือ:
'. $url;// พิมพ์ส่วนสตริงการสืบค้น
โยนออก '
สตริงแบบสอบถามคือ:
'. $query;?>
เอาท์พุท:
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากเรียกใช้สคริปต์ข้างต้นจากเซิร์ฟเวอร์โดยไม่มีสตริงการสืบค้น ไม่มีสตริงการสืบค้นระบุใน URL ดังนั้นผลลัพธ์จะแสดงสตริงการสืบค้นที่ว่างเปล่า
ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากเรียกใช้สคริปต์ข้างต้นจากเซิร์ฟเวอร์ที่มีสตริงการสืบค้น ผลลัพธ์ต่อไปนี้แสดงที่อยู่ URL พร้อมสตริงการสืบค้นและสตริงการสืบค้นแยกต่างหาก
บทสรุป
วิธีต่างๆ ในการดึง URL แบบเต็มของหน้าปัจจุบันจะแสดงในบทช่วยสอนนี้โดยใช้ตัวอย่างต่างๆ วิธีแยก URL และสตริงการสืบค้นจะแสดงในบทช่วยสอนนี้ด้วย หวังว่าบทช่วยสอนนี้จะช่วยให้ผู้อ่านทราบวิธีการอ่าน URL แบบเต็มของหน้าปัจจุบันโดยใช้สคริปต์ PHP