Ngôn ngữ PHP - Biến siêu toàn cục

Biến siêu toàn cục được giới thiệu lần đầu trong PHP phiên bản 4.1.0, nó được xây dựng để cung cấp sẵn trong mọi trường hợp.
Biến toàn cục – siêu toàn cục trong PHP
Một số biến được xác định trước trong PHP là siêu toàn cục (superglobals), điều này có nghĩa là nó luôn luôn được truy cập, không giới hạn – và bạn có thể truy cập nó trong bất cứ hàm nào, lớp nào hoặc file mà không cần làm điều gì đặc biệt
Những biến siêu toàn cục trong PHP là:

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

PHP $GLOBALS.

$GLOBALS là biến siêu toàn cục, được sử dụng để truy cập các biến toàn cục từ bất cứ nơi nào trong đoạn mã PHP (bao gồm cả trong hàm và phương thức)
PHP lưu trữ tất cả các biến toàn cục trong mảng là $GLOBALS[index]. Chỉ số index nắm giữ thông tin tên của biến.
Ví dụ dưới đây sẽ cho bạn thấy làm cách nào sử dụng biến siêu toàn cục $GLOBALS:

<?php
$x = 6;
$y = 9;
function cong() {
$GLOBALS["z"] = $GLOBALS["x"] + $GLOBALS["y"];
}
cong();
echo $z; //kết quả là 15
?>

Xem ví dụ

Trong ví dụ trên, z là một biến đại diện trong mảng $GLOBAL, nó có thể được truy cập bên ngoài hàm!

PHP $_SERVER
Ngoài các thông tin trình duyệt gửi lên thông qua các con đường, chúng ta cũng có thể thu được một số thông tin khác có liên quan đến trình duyệt cũng như các thông số liên quan đến máy chủ như: đường dẫn, địa chỉ IP, phiên bản… Các thông tin này được lưu trữ trong biến $_SERVER.

Bảng mô tả thành phần của biến $_SERVER:

Thành phần Mô tả

$_SERVER[‘PHP_SELF’]

Trả về tên file của file đang được chạy.

$_SERVER[‘GATEWAY_INTERFACE’]

Trả về phiên bản của Common Gateway Interface(CGI) của máy chủ đang dùng

$_SERVER[‘SERVER_NAME’]

Trả về tên của máy chủ

$_SERVER[‘HTTP_ACCEPT’]

Chấp nhận trả về tiêu đề từ các yêu cầu hiện tại

$_SERVER[‘HTTP_HOST’]

Trả về tiêu đề chủ từ yêu cầu hiện tại

$_SERVER[‘HTTP_REFERER’]

Trả về URL hoàn chỉnh của trang hiện tại

$_SERVER[‘HTTPS’]

Được kịch bản truy vấn thông qua một giao thức HTTP an toàn

$_SERVER[‘REMOTE_ADDR’]

Trả về địa chỉ IP từ nơi người dùng đang xem một trang hiện hành

$_SERVER[‘REMOTE_HOST’]

Trả về tên máy chủ từ nơi người dùng đang xem một trang hiện hành

$_SERVER[‘REMOTE_PORT’]

Trả về các cổng được sử dụng trên máy tính của người dùng để giao tiếp với máy chủ web

$_SERVER[‘SCRIPT_FILENAME’]

Trả lại tên đường dẫn tuyệt đối của kịch bản hiện đang thực hiện

$_SERVER[‘SERVER_PORT’]

Trả về các cổng trên máy chủ được sử dụng bởi các máy chủ web để liên lạc(such as 80)

$_SERVER[‘SERVER_SIGNATURE’]

Trả về phiên bản máy chủ và tên máy chủ ảo được thêm vào các trang máy chủ tạo ra

$_SERVER[‘PATH_TRANSLATED’]

Trả về hệ thống tập tin dựa trên đường dẫn đến kịch bản hiện tại

$_SERVER[‘SCRIPT_NAME’]

Trả về đường dẫn của kịch bản hiện tại

$_SERVER[‘SCRIPT_URI’]

Trả về URI của trang hiện tại

Ví dụ dưới đây trình bày cách sử dụng một số phần tử trong $_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"];
?>

Xem ví dụ

PHP $_REQUEST
$_REQUEST được sử dụng để thu thập dữ liệu sau khi gửi đi từ form HTML.
Trong ví dụ bên dưới trình bày một form với một trường input và nút submit. Khi người dùng gửi dữ liệu bằng cách click vào submit, dữ liệu từ form được gửi tới file đặc biệt trong thuộc tính của action. Chúng tôi xử lý dữ liệu mà form gửi bằng chính bản thân nó, nếu bạn muốn xử lý bằng trang khác, thay đường dẫn của bạn vào. Tiếp đó, chúng tôi sử dụng biến siêu toàn cục $_REQUEST để thu thập dữ liệu từ trường input:


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<body><form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
Name: <input type="text" name="fname">
<input type="submit" value="test">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST"){
// Thu thập dữ liệu từ input
$name = $_REQUEST["fname"];
if (empty($name)) {
	echo "Truong ten khong duoc dien";
}
else {
echo "Tên của bạn:".$name;
}
}
?>
</body>
</body>
</html>

Xem ví dụ