PHP ตัวแปร global - superglobal

ตัวแปร superglobal ถูกนำเสนอใน PHP 4.1.0 ซึ่งเป็นตัวแปรที่สามารถใช้งานได้ทุกโซนสากลของสคริปต์

PHP ตัวแปร global - superglobal

ตัวแปร pre-defined หลายตัวใน PHP คือ 'superglobal' ซึ่งหมายความว่ามันสามารถใช้งานได้ทั้งหมดในโซนสากลของสคริปต์ ไม่จำเป็นต้องประกาศ global $variable; ก่อนที่จะเข้าถึงมัน

ตัวแปร superglobal นี้คือ:

  • $GLOBALS
  • $_SERVER
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

บทนี้จะนำเสนอตัวแปร superglobal บางตัว และจะเรียกเสนอตัวแปร superglobal อื่นในบทต่อไป

$GLOBALS — สัญญาณตัวแปรทั้งหมดที่สามารถใช้งานได้ในโซนสากล

ตัวแปร global $GLOBALS ใช้เพื่อเข้าถึงตัวแปรทั้งหมดในสคริปต์ PHP ทุกที่ (ทั้งในฟังก์ชันหรือวิธี)

PHP จะบันทึกตัวแปรทั้งหมดในตัวแปร $GLOBALS[index] ตัวแปร ชื่อของตัวแปรนี้เป็นใบกลุ่ม

ตัวอย่างด้านล่างนี้แสดงวิธีการใช้ตัวแปร superglobal $GLOBALS:

ตัวอย่าง

<?php 
$x = 75; 
$y = 25;
function addition() { 
  $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; 
}
addition(); 
echo $z; 
?>

รันตัวอย่าง

ในตัวอย่างด้านบน เนื่องจาก z คือตัวแปรในตัวแปร $GLOBALS ดังนั้นสามารถเข้าถึงมันนอกฟังก์ชันได้เช่นกัน。

PHP $_SERVER

ตัวแปร superglobal $_SERVER บันทึกข้อมูลเกี่ยวกับหัวข้อและหนทางและตำแหน่งสคริปต์。

ตัวอย่างด้านล่างนี้แสดงวิธีการใช้ตัวแปรบวก $_SERVER บางตัว:

ตัวอย่าง

<?php 
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_REFERER'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

รันตัวอย่าง

ตารางด้านล่างระบุองค์ประกอบที่สำคัญที่สุดที่คุณสามารถเข้าถึงได้ใน $_SERVER

องค์ประกอบ/รหัส รายละเอียด
$_SERVER['PHP_SELF'] กลับค่าชื่อไฟล์ที่เริ่มต้นการปฏิบัติงานสคริปต์
$_SERVER['GATEWAY_INTERFACE'] กลับค่าเวอร์ชั่นของไกแล็บบี้ส์ซึ่งเซิร์ฟเวอร์ใช้
$_SERVER['SERVER_ADDR'] กลับค่า IP ที่ใช้โดยเซิร์ฟเวอร์ที่มีการปฏิบัติการสคริปต์
$_SERVER['SERVER_NAME'] กลับค่าชื่อโฮสท์ของเซิร์ฟเวอร์ที่มีการปฏิบัติการสคริปต์ (เช่น www.codew3c.com)
$_SERVER['SERVER_SOFTWARE'] กลับค่าสตริงที่ระบุตัวเซิร์ฟเวอร์ (เช่น Apache/2.2.24)
$_SERVER['SERVER_PROTOCOL'] กลับค่าชื่อและสัญญาณของโปรโตคอลการสื่อสารที่ใช้ในการส่งคำขอ (เช่น “HTTP/1.0”)
$_SERVER['REQUEST_METHOD'] กลับค่าวิธีการของการส่งคำขอที่ใช้เพื่อเข้าถึงหน้า (เช่น POST)
$_SERVER['REQUEST_TIME'] กลับค่า timestamp ของเวลาที่เริ่มต้นของคำขอ (เช่น 1577687494)
$_SERVER['QUERY_STRING'] กลับค่าของข้อความค้นหา (ถ้าเข้าถึงหน้านี้ผ่านข้อความค้นหา)
$_SERVER['HTTP_ACCEPT'] กลับค่าหัวของคำขอที่มาจากคำขอปัจจุบัน
$_SERVER['HTTP_ACCEPT_CHARSET'] กลับค่าหัวของ Accept_Charset จากคำขอปัจจุบัน (เช่น utf-8, ISO-8859-1)
$_SERVER['HTTP_HOST'] กลับค่าหัวของ Host จากคำขอปัจจุบัน
$_SERVER['HTTP_REFERER'] กลับค่า URL ทั้งหมดของหน้าเว็บปัจจุบัน (ไม่น่าเชื่อถือ เพราะไม่เป็นทุกตัวแทนผู้ใช้ที่สนับสนุน)
$_SERVER['HTTPS'] คือระบบ HTTP ที่มีความปลอดภัยเพื่อค้นหาสคริปต์ไหม。
$_SERVER['REMOTE_ADDR'] กลับค่าที่สำรวจ IP ของผู้ใช้ที่กำลังดูหน้าปัจจุบัน
$_SERVER['REMOTE_HOST'] กลับค่าชื่อโฮสต์ของผู้ใช้ที่กำลังดูหน้าปัจจุบัน
$_SERVER['REMOTE_PORT'] กลับค่าโปรต์ที่ใช้โดยคอมพิวเตอร์ของผู้ใช้ที่เชื่อมต่อกับเซิร์ฟเวอร์เว็บ
$_SERVER['SCRIPT_FILENAME'] กลับค่าทางเข้าแบบเดี่ยวของสคริปต์ที่กำลังปฏิบัติงานปัจจุบัน
$_SERVER['SERVER_ADMIN'] ค่านี้บอกเล่าถึงค่าตัวแปร SERVER_ADMIN ในไฟล์การปรับแต่งเซิร์ฟเวอร์ Apache
$_SERVER['SERVER_PORT'] โปรต์ที่ใช้โดยเว็บเซิร์ฟเวอร์ ค่าปริยายคือ '80'
$_SERVER['SERVER_SIGNATURE'] กลับค่าสัญญาณเว็บเซิร์ฟเวอร์และชื่อโฮสต์เวิลด์
$_SERVER['PATH_TRANSLATED'] ระยะทางพื้นฐานของไฟล์ระบบภายในของสคริปต์ปัจจุบัน (ไม่ใช่ไดเรกทอรีของเอกสารราก)
$_SERVER['SCRIPT_NAME'] กลับค่าระยะทางของไฟล์สคริปต์ปัจจุบัน
$_SERVER['SCRIPT_URI'] กลับค่า URI ของหน้าปัจจุบัน

PHP $_REQUEST

PHP $_REQUEST ถูกใช้ในการรับข้อมูลฟอร์มที่ส่งมา

ตัวอย่างดังนี้แสดงให้เห็นฟอร์มที่มีช่องว่างและปุ่มส่งข้อมูล ในตอนที่ผู้ใช้คลิกปุ่มส่งข้อมูลเพื่อส่งข้อมูลของฟอร์ม ข้อมูลของฟอร์มจะถูกส่งไปยังไฟล์ที่กำหนดในค่า attribute action ของ tag <form> ในตอนนี้ เรากำหนดไฟล์ตัวเองเพื่อจัดการข้อมูลของฟอร์ม ถ้าคุณต้องการใช้ PHP หน้าอื่นเพื่อจัดการข้อมูลของฟอร์ม โปรดเปลี่ยนไฟล์ดังกล่าวด้วยชื่อไฟล์ที่คุณเลือก หลังจากนั้นเราสามารถใช้ตัวแปรสูงกลุ่ม $_REQUEST มารับค่าของช่องว่างที่ใส่ค่าไว้:

ตัวอย่าง

<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php 
$name = $_REQUEST['fname']; 
echo $name; 
?>
</body>
</html>

รันตัวอย่าง

PHP $_POST

PHP $_POST ถูกใช้กว้างขวางในการรับข้อมูลฟอร์มที่ส่งมาด้วย method="post" ของ HTML ฟอร์ม $_POST ยังถูกใช้เพื่อส่งตัวแปรเช่นกัน

ตัวอย่างดังนี้แสดงให้เห็นฟอร์มที่มีช่องว่างเพื่อรับค่าและปุ่มส่งข้อมูล ในตอนที่ผู้ใช้คลิกปุ่มส่งข้อมูลเพื่อส่งข้อมูลของฟอร์ม ข้อมูลของฟอร์มจะถูกส่งไปยังไฟล์ที่กำหนดในค่า attribute action ของ tag <form> ในตอนนี้ เรากำหนดไฟล์ตัวเองเพื่อจัดการข้อมูลของฟอร์ม ถ้าคุณต้องการใช้ PHP หน้าอื่นเพื่อจัดการข้อมูลของฟอร์ม โปรดเปลี่ยนไฟล์ดังกล่าวด้วยชื่อไฟล์ที่คุณเลือก หลังจากนั้นเราสามารถใช้ตัวแปรสูงกลุ่ม $_POST มารับค่าของช่องว่างที่ใส่ค่าไว้:

ตัวอย่าง

<html>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit">
</form>
<?php 
$name = $_POST['fname'];
echo $name; 
?>
</body>
</html>

รันตัวอย่าง

PHP $_GET

PHP $_GET ยังสามารถใช้ในการรับข้อมูลฟอร์มที่ส่งมาด้วยวิธีการ "get"

$_GET ยังสามารถรับข้อมูลที่ส่งมาผ่าน URL

ตัวอย่างที่เรามีหน้าที่มีลิงก์ที่มีประมาณการ

<html>
<body>
<a href="test_get.php?subject=PHP&web=codew3c.com">ทดสอบ $GET</a>
</body>
</html>

เมื่อผู้ใช้คลิกลิงก์ "ทดสอบ $GET" ตัวแปร "subject" และ "web" จะถูกส่งไปยัง "test_get.php" และคุณจะสามารถเข้าถึงค่าเหล่านี้ผ่าน $_GET ใน "test_get.php"

ตัวอย่างด้านล่างนี้คือรหัสในไฟล์ "test_get.php"

ตัวอย่าง

<html>
<body>
<?php 
echo "เรียนรู้ที่ " . $_GET['web'] . " ระหว่าง " . $_GET['subject'];
?>
</body>
</html>

รันตัวอย่าง

คำเตือน:คุณจะได้ PHP ฟอร์ม ในนี้นั้น คุณจะได้เรียนรู้มากยิ่งขึ้นเกี่ยวกับ $_POST และ $_GET