Bài 23: PHP – Các Biến Global – Superglobal
Một vài biến được định nghĩa sẳn trong PHP là “superglobals”, nghĩa là chúng luôn có thể truy cập, bất chấp phạm vi và bạn có thể truy cập chúng từ bên bất kỳ hàm, class hoặc file mà không cần phải làm bất kỳ cái gì đặc biệt. Các biến superglobal trong PHP là: $GLOBALS ...
Một vài biến được định nghĩa sẳn trong PHP là “superglobals”, nghĩa là chúng luôn có thể truy cập, bất chấp phạm vi và bạn có thể truy cập chúng từ bên bất kỳ hàm, class hoặc file mà không cần phải làm bất kỳ cái gì đặc biệt.
Các biến superglobal trong PHP là:
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_COOKIE
- $_SESSION
$GLOBALS
$GLOBALS là một biến siêu toàn cục mà được sử dụng để truy cập các biến toàn cục từ bất kỳ nơi đâu trong script PHP (cũng từ bên trong hàm hoặc các phương thức).
PHP lưu trữ tất cả các biến toàn cục trong một mãng được gọi là $GLOBALS[index]. Index nắm giữ tên của biến.
Chúng ta xét ví dụ:
<?php
$x = 75;
$y = 25;
function addition() {
$GLOBALS[‘z’] = $GLOBALS[‘x’] + $GLOBALS[‘y’];
}
addition();
echo $z;
?>
Trong ví dụ trên, kể từ khi z là một biến bên trong $GLOBALS được khởi tạo khi gọi hàm addition(), và nó cũng được truy cập từ bên ngoài của hàm luôn.
$SERVER
$_SERVER là một biến siêu toàn cục nắm giữ thông tin về header, path và vị trí của script
<?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’]; //trả về loại thiết bị dùng để truy cập server.
echo “<br>”;
echo $_SERVER[‘SCRIPT_NAME’];
?>
Copy và chạy đoạn script trên trong server của bạn để thấy kết quả.
Sau đây là danh sách của biến mảng $_SERVER nắm giữ:
$_SERVER[‘PHP_SELF’] | Trả về tên file của script hiện hành. |
$_SERVER[‘GATEWAY_INTERFACE’] | Trả về phiên bản của giao diện Gateway mà server đang sử. |
$_SERVER[‘SERVER_ADDR’] | Trả về địa chỉ IP của host server. |
$_SERVER[‘SERVER_NAME’] | Trả về tên của server (như là www.dammelaptrinh.com). |
$_SERVER[‘SERVER_SOFTWARE’] | Trả về chuỗi xác định máy chủ (như là Apache/2.2.24). |
$_SERVER[‘SERVER_PROTOCOL’] | Trả về tên và phiên bản của giao thức (như là HTTP/1.1). |
$_SERVER[‘REQUEST_METHOD’] | Trả về phương thức yêu cầu tới trang (như là POST). |
$_SERVER[‘REQUEST_TIME’] | Trả về thời gian bắt đầu gửi yêu cầu, tính bằng giây (như là 1377687496). |
$_SERVER[‘QUERY_STRING’] | Trả về chuỗi truy vấn, nếu page được truy cập theo đường chuỗi truy vấn.(là cái đám đối số như: index?a=1&b=’acb’. Nó sẽ cho bạn a=1&b=’acb’. |
$_SERVER[‘HTTP_ACCEPT’] | Trả về header từ các yêu cầu hiện hành. |
$_SERVER[‘HTTP_ACCEPT_CHARSET’] | Trả về charset header cho yêu cầu hiện tại (như là utf-8,ISO-8859-1). |
$_SERVER[‘HTTP_HOST’] | Trả về host header từ yêu cầu hiện tại.(domain) |
$_SERVER[‘HTTP_REFERER’] | Trả về URL của page tham chiếu trước đó. Giống như là bạn chuyển trang sang 1 trang khác, thì cái này sẽ trả về cho bạn trang trước đó đi tới trang hiện tại. |
$_SERVER[‘HTTPS’] | Là một script truy vấn an toàn thông qua giao thức bảo mật https |
$_SERVER[‘REMOTE_ADDR’] | Trả về địa chỉ IP từ nơi mà user dang xem trang hiện tại. |
$_SERVER[‘REMOTE_HOST’] | Trả về host name từ nơi user đang xem trang hiện tại. |
$_SERVER[‘REMOTE_PORT’] | Trả về port đang sử dụng từ máy user mà đang giao tiếp với server. |
$_SERVER[‘SCRIPT_FILENAME’] | Trả về đường dẩn tương đối của script đang thực thi. |
$_SERVER[‘SERVER_ADMIN’] | Trả về SERVER ADMIN trong file cấu hình máy chủ nếu script của bạn chạy trên host ảo, nó sẽ có giá trị định nghĩa cho virtual host đó) (như là someone@dammelaptrinh.com) |
$_SERVER[‘SERVER_PORT’] | Trả về port của server được sử dụng cho giao tiếp (như là 80,port 80 là port cho web). |
$_SERVER[‘SERVER_SIGNATURE’] | Trả về phiên bản server và tên máy ảo.
|
$_SERVER[‘PATH_TRANSLATED’] | Trả về file hệ thống dựa vào đường dẩn script hiện tại. |
$_SERVER[‘SCRIPT_NAME’] | Trả về đường dẩn script hiện tại. |
$_SERVER[‘SCRIPT_URI’] | Trả về URL của trang hiện tại. |
Rồi có thể các bạn đọc và có những cái khó hiểu, khó nhớ, hãy chạy hết cái đám này và echo chúng ra ngoài trình duyệt để dể hiểu và dể nhớ hơn. Thường thì hay sử dụng một số cơ bản và thường xuyên như là lấy đường dẩn script, đường dẩn trang, toàn đường dẩn, lấy tên domain… chỉ những cái này các bạn phải cố gắng nhớ cho được thì có lợi vì nó dùng thường xuyên hơn các cái khác.
$_REQUEST
Biến này được sử dụng để thu thập dữ liệu sau khi form submit bao gồm các phương thức truyền qua :$_POST, $_GET, $_COOKIE.
Ví dụ sau sẽ show một form với một field input và một nút submit. Khi user submit dữ liệu bằng cách click vào Submit, thì dữ liệu form sẽ gửi tới file được chỉ định trong thuộc tính action của form. Trong ví dụ này chúng ta sẻ trỏ đến file hiện tại để duyệt dữ liệu form. Nếu bạn muốn sử dụng file PHP khác để duyết dữ liệu form submit , thì đưa vào tên file của bạn chọn. Sau đó chúng ta sẽ sử dụng biến super global $_REQUEST để thu thập giá trị của input field.
EX:
<html>
<body>
<form method=”post” action=”<?php echo $_SERVER[‘PHP_SELF’];?>”>
Name: <input type=”text” name=”fname”>
<input type=”submit”>
</form>
<?php
if ($_SERVER[“REQUEST_METHOD”] == “POST”) {
// collect value of input field
$name = $_REQUEST[‘fname’];
if (empty($name)) {
echo “Name is empty”;
} else {
echo $name;
}
}
?>
</body>
</html>
$_POST, $_GET, $_SESSION, $_FILES (xem bài upload file), $_COOKIE
Mổi biến đã có 1 bài riêng nói khá rõ về nó rồi, các bạn có thể xem lại bài trước.