Trong PHP bên cạnh các biến cục bộ (local variable) thì cũng có các biến siêu toàn cục (Superglobals). Với Superglobals là loại biến đặc biệt vì có thể được truy cập từ bất kỳ phạm vi nào. Khả năng truy cập có thể từ bất kỳ tệp, lớp hoặc thậm chí chức năng nào mà không cần triển khai bất kỳ đoạn mã đặc biệt nào.
Các biến siêu toàn cục được tạo sẵn và xác định trước. Chúng có sẵn cho lập trình viên thông qua thư viện lớp PHP. Lưu ý rằng không phải tất cả các biến được xác định trước có sẵn trong thư viện lớp đều là superglobals.
Danh sách biến siêu toàn cục trong PHP
Sau đây là biến toàn cục trong PHP (Superglobals) thường được sử dụng:
1. $GLOBALS
Hãy xem ví dụ sau:
<?php $a = 5; $b = 6; function tinhtong() { $GLOBALS['c'] = $GLOBALS['a'] + $GLOBALS['b']; } tinhtong(); echo $c;
Với biến $GLOBALS chúng ta có thể sử dụng bất kỳ đâu trong chương trình.
2. $_SERVER
Biến siêu toàn cục $_SERVER được sử dụng để trả về thông tin tiêu đề, vị trí đường dẫn và vị trí tập tin. Biến này được sử dụng ở hầu hết các nơi cần in ra địa chỉ và đường dẫn.
- $ _SERVER [‘PHP_SELF’]: Biến này được sử dụng để in hoặc trả về tên tệp hiện tại đang được thực thi.
- $ _SERVER [‘SERVER_ADDR’]: Biến này được sử dụng để trả về địa chỉ Giao thức Internet (IP) của máy chủ lưu trữ.
- $ _SERVER [‘REQUEST_METHOD’]: Biến này được sử dụng để trả về phương thức đã được sử dụng trong chương trình để gửi tức là GET hoặc POST.
- $ _SERVER [‘SCRIPT_NAME’]: Biến này trả về đường dẫn của tập lệnh hiện tại mà người dùng đang chạy để thực thi.
Ví dụ:
<?php echo $_SERVER['PHP_SELF']; echo "<br>"; echo $_SERVER['SERVER_ADDR']; echo "<br>"; ?>
3. $_GET
Biến $_GET thường được sử dụng để hiển thị nội dung hoặc dữ liệu được nhập bởi người dùng. Biến này giúp dữ liệu được thu thập và hiển thị cho người dùng. Người dùng có thể xem dữ liệu trong URL của trang. Biến này không an toàn và không nên được sử dụng vì lý do bảo mật. Biến này thường được chỉ định trong phương thức hành động biểu mẫu nơi hành động phải được thực hiện khi người dùng gửi biểu mẫu.
Ví dụ:
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="GET"> <input type="text" name="name"> <input type="submit" name="btn_submit"> </form> <?php if(isset($_GET['btn_submit'])) { $name = $_GET['name']; echo $name; }
Khi nhập dữ liệu input. Biến $_SERVER[‘PHP_SELF’]; sẽ action với ngay tập tin hiện tại. Tiếp đó dùng $_GET để lấy dữ liệu người dùng đã đưa vào trong input.
4. $_POST
Với biến $_POST cũng tương tự $_GET. Nhưng về độ bảo mật thì $_POST an toàn hơn khi gửi thông tin.
Đọc lại bài viết Phương thức GET và POST trong PHP.
5. $_REQUEST
Biến $_REQUEST được dùng để thu thập dữ liệu sau khi gửi (submit) form HTML.
Ví dụ:
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Tên: <input type="text" name="username"> <input type="submit"> </form> <?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = htmlspecialchars($_REQUEST['username']); if (empty($name)) { echo "Vui lòng nhập tên!!!"; } else { echo $name; } } ?>
6. $_SESSION
Biến $_SESSION bạn sẽ gặp khi xây dựng một trang Login trong PHP. Nó dùng để xác thực người dùng, trường hợp chưa lưu Session thì sẽ không đăng nhập được vào hệ thống. Ngược lại khi đã Login rồi bạn sẽ thực hiện được các Request trong hệ thống.
Tham khảo: $_SESSION, $_COOKIE trong PHP
7. $_COOKIE
Biến $_COOKIE cũng tương tự như $_SESSION. Tuy nhiên nó sẽ lưu thông tin trên Server thay vì Client. Dữ liệu sẽ hết hạn theo thời gian lưu trữ. Chẳng hạn như 1 ngày, 1 tuần hay 1 tháng gì đó.
8. $_FILE
Biến $_FILE cũng tương tự như $_GET, $_POST. Tuy nhiên nó là một mảng 2 chiều.
<form action="" method="post" enctype="multipart/form-data"> <input type="file" name="ImageFile" value=""> <input type="submit" name="up" value="Upload ảnh"> </form> <?php if (isset($_POST['up']) && isset($_FILES['ImageFile'])) { if ($_FILES['ImageFile']['error'] > 0) echo "Error!"; else { move_uploaded_file($_FILES['ImageFile']['tmp_name'], 'photo/' . $_FILES['ImageFile']['name']); echo "upload ảnh thành công <br/>"; echo 'URL: photo/' . $_FILES['ImageFile']['name'] . '<br>'; echo 'Type: ' . $_FILES['ImageFile']['type'] . '<br>'; echo 'Size: ' . ((int)$_FILES['ImageFile']['size'] / 1024) . 'KB'; } } ?>
Trong bài viết này, chúng ta đã tìm hiểu về các biến siêu toàn cục (superglobal) là gì và phạm vi sử dụng trong PHP Script. Mục đích chính của việc sử dụng các biến này là có thể sử dụng trên toàn cục bất kỳ ở đâu và bất kỳ khi nào.