Biến siêu toàn cục (Superglobals) trong PHP

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.

Related Posts

Namespace trong PHP

Namespace cho phép các lớp / hàm / hằng cùng tên được sử dụng trong các ngữ cảnh khác nhau mà không có bất kỳ xung đột…

Hàm str_split() trong PHP

Bài viết này chúng ta sẽ đi tìm hiểu về hàm str_split(). Một trong những hàm thường được dùng trong PHP. Vậy cách sử dụng str_split() như…

Tạo chức năng sửa xoá thành viên bằng PHP & MySQL

Với một số trang web để quản lý thành viên (user) dễ dàng trong phần quản trị admin bạn phải khởi tạo chức năng sửa xoá thành…

Hàm str_replace trong PHP

Hàm str_replace trong PHP là gì? Hàm str_replace() trong PHP là một hàm được sử dụng để thay thế tất cả các xuất hiện của một chuỗi…

laravel8-vews-1

Views trong Laravel 8

Trong chuỗi series hướng dẫn học Laravel thì Views cũng quan trọng không kém gì so với Controller hay Model. Vậy chúng ta sẽ làm thế nào…

Validate Form trong PHP

Mặc dù trình duyệt hỗ trợ JavaScript để xác thực người dùng cho website. Tuy nhiên nếu JavaScript bị lỗi hoặc tắt đi thì công việc này…