Các biến đã định nghĩa trước trong PHP

Trong PHP có một số loại biến gọi là siêu toàn cục superglobal, nó đã được PHP định nghĩa trước để lưu một số thông tin phục vụ cho ứng dụng, bạn có thể truy cập bất kỳ lúc nào, và phạm vi truy cập là bất kỳ đâu. Hiện tại đó là các biến siêu toàn cục có tên sau: $_SERVER, $GLOBALS, $_REQUEST, $_POST, $_GET, $_FILES, $_ENV, $_COOKIE, $_SESSION.

Hầu hết thông tin của một truy vấn đến ứng dụng (HTTP Request) dữ liệu của nó đã được PHP phân loại và lưu vào các biến toàn cục này.

Biến $_SERVER trong PHP

$_SERVER là một mảng chứa các thông tin do WEBSERVER sinh ra như header, path, location script. Điều này có nghĩa một số dữ liệu sẽ khác nhau tùy vào WEBSERVER bạn dùng (Http Apache, Nginx ...). Một số thông tin bạn có thể lấy được qua biến này như:

Giá trị Ý nghĩa
$_SERVER['QUERY_STRING'] chuỗi query trang đang truy cập. (Ví dụ trang truy cập là http://domain.com/pathurl/?page=news&id=100 - nó trả về là chuỗi query là ?page=news&id=100)
$_SERVER['REQUEST_URI'] trả về URI của trang. /pathurl/
$_SERVER['HTTP_HOST'] trả về Host của trang, ví dụ xuanthulab.net.
$_SERVER['HTTP_REFERER']nếu có thì nó là trang dẫn user agent chuyển đến trang hiện tại, ví dụ trang chứa Link mà người dùng bấm vào để đến trang hiện tại. (Có thể dùng cái này để biết người dùng vào website qua google search với những từ khóa nào)
$_SERVER['SCRIPT_NAME'] trả về đường dẫn của file script php hiện tại.
$_SERVER['REQUEST_METHOD'] trả về phương thức nào truy vấn đến Server như POST, GET, HEAD, PUT
$_SERVER['REQUEST_TIME'] trả về giá trị thời gian timestamp là lúc bắt đầu yêu cầu được gửi đến Server
$_SERVER['HTTP_USER_AGENT'] lấy User-Agent là header của yêu cầu gửi đến, qua cái này có thể biết được thông tin như Trình duyệt, Hệ điều hành, Thiết bị ... đang truy cập
$_SERVER['REQUEST_TIME'] trả về giá trị thời gian timestamp là lúc bắt đầu yêu cầu được gửi đến Server (Unix time)
$_SERVER['REMOTE_ADDR'] Lấy IP đang truy cập trang.
$_SERVER['HTTP_COOKIE'] Chuỗi là dữ liệu Cookie.

Biến $GLOBALS trong PHP

$GLOBALS là một biến mảng chứa tất cả các tham chiếu đến các biến toàn cục (global). Với key của mảng là tên biến. Ví dụ bạn biết rằng $_SERVER là một biến toàn cục thì bạn có thể truy cập đến biến đó thông qua $GLOBALS['_SERVER'] như là một cách thức mới. Ngoài ra còn chứa các biến toàn cục do bạn định nghĩa, xem thêm .

<?php
    function test() {
        $bien_kt = "Biến cục bộ";

        echo '$bien_kt toàn cục có giá trị là: ' . $GLOBALS["bien_kt"] ;
        echo '$bien_kt cục bộ trong hàm có giá trị là: ' . $bien_kt;
    }

    $bien_kt = "Biến toàn cục";
    test();
?>
//IN RA
//$bien_kt toàn cục có giá trị là: Biến toàn cục
//$bien_kt toàn cục có giá trị là: Biến cục bộ

Biến $_REQUEST trong PHP

Biến này là một mảng kết hợp, lưu trữ thông tin chứa trong biến $_GET, $_POST và $_COOKIE. Gộp các dữ liệu do người dùng gửi đến thành một.

Biến $_SESSION, $_COOKIE

Biến $_SESSION lưu trữ thông tin phiên làm việc của PHP, $_COOKIE dữ liệu nhỏ do trình duyệt gửi lên: hai biến này trình bày trong chủ đề Session và Cookie

Biến $_POST và $_GET trong PHP

$_post là một mảng kết hợp, lưu thông tin gửi đến bằng phương thức HTTP POST (xem thêm về HTML FORM để biết 2 phương thức post và get)

$_get là một mảng kết hợp, lưu thông tin gửi đến bằng phương thức HTTP GET, hay nói cách khác lưu các thông tin chuyển đến thông qua tham số từ URL.

Hai biến $_get$_post thường xuyên dùng với html form trong các website thông thường, trong đó sử dụng post an toàn hơn get và hỗ trợ các khối dữ liệu nhị phân upload lên server (ví dụ upload file thì phải dùng post)

GET được dùng khi thông tin gửi đi được nhìn thấy rõ ràng thông qua URL của trình duyệt. Tuy nhiên GET cũng giới hạn độ dài URL là 2000 ký tự. Vì tham số truyền qua biểu diễn URL, nên địa chỉ có thể bookmark và có ích trong một số trường hợp.

Ví dụ: HTML sau sử dụng form với phương thức get


<form action="info.php" method="get">
  Tên: <input type="text" name="name" /><br /><br />
  Tuổi: <input type="text" name="age" /><br /><br />
  <input type="submit" name="submit" value="Gửi" />
</form>

info.php có nội dung:

<?php
    echo "Chào "$_GET['name'].". ";
    echo "Bạn ".$_GET['age']." tuổi.";
?>

Khi bạn điền vào form tên ABC, tuổi 20 bấm vào gửi thì URL trình duyệt sẽ là: /info.php?name=ABC&age=20 và nội dung in ra do info.php là:
Chào ABC
Bạn 20 tuổi

Biến $_files trong PHP

Biến $_files lưu thông tin các file upload lên server. Xem mục Upload file trong PHP để biết thông tin chi tiết.

Biến $_ENV trong PHP

$_ENV là mảng chứa các biến môi trường được gửi đến.


Đăng ký nhận bài viết mới