ดึง URL แบบเต็มใน PHP

Retrieve Full Url Php



ตัวแปรโกลบอลสองประเภทสามารถใช้ได้ใน PHP: ตัวแปร superglobal และตัวแปรที่ผู้ใช้กำหนดเอง $_SERVER เป็นตัวแปรอาร์เรย์ superglobal ที่ใช้ในการดึงเส้นทางแบบเต็มของหน้าปัจจุบัน ต้องใช้โปรโตคอล (HTTP หรือ HTTPS) ของ URL เพื่อรับ URL แบบเต็มของหน้า ถ้า $_SERVER['HTTPS'] ผลตอบแทน 'บน', จากนั้นจะใช้ HTTPS กับที่อยู่ URL มิฉะนั้น HTTP จะถูกนำไปใช้. วิธีเรียกที่อยู่ URL แบบเต็มของหน้าปัจจุบันโดยใช้ปุ่ม $_SERVER มีการอธิบายอาร์เรย์ในบทช่วยสอนนี้แล้ว

ตัวแปรที่จำเป็น

ต้องใช้ตัวแปร 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