Kỹ thuật lập trình PHP Lập trình PHP

Bài 8: Biến toàn cục trong PHP

I. Giới thiệu

Biến toàn cục (hay superglobals) là biến được PHP định nghĩa sẵn và có thể sử dụng bất kì đâu trong toàn bộ chương trình.

Các biến toàn cục trong PHP:

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

II. Biến $GLOBALS

Biến $GLOBALS là một biến toàn cục chứa tất cả những biến khác được khai báo trong chương trình. Nó cung cấp cho lập trình viên một cách thức truy cập đến tất cả các biến trong chương trình một cách toàn cục.

Ví dụ:

<?php
$x = 10;
function getX() {
echo $x;
}
getX();
?>

Đoạn chương trình trên sẽ báo lỗi vì biến $x không phải là một biến toàn cục. Để gọi biến $x trong hàm getX(), sử dụng biến $GLOBALS như sau:

<?php
$x = 10;
function getX() {
echo $GLOBALS['x'];
}

getX();
?>

Ví dụ thực hiện phép toán

<?php
$x = 10;
$y = 20;
function calculateZ() {
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

calculateZ();
echo $z;
?>

Hình 49 Kết quả sử dụng $GLOBALS

III. Biến $_SERVER

Biến $_SERVER trong PHP cung cấp những thông tin liên quan đến server, host, đường dẫn, v.v…

<?php 
echo $_SERVER['PHP_SELF'];
echo "<br>";
echo $_SERVER['SERVER_NAME'];
echo "<br>";
echo $_SERVER['HTTP_HOST'];
echo "<br>";
echo $_SERVER['HTTP_USER_AGENT'];
echo "<br>";
echo $_SERVER['SCRIPT_NAME'];
?>

Hình 50 Xem thông tin của biến $_SERVER

IV. Biến $_GET

Biến $_GET dùng để lấy dữ liệu do người dùng nhập được truyền từ form và dữ liệu được truyền trực tiếp thông qua URL.

Ví dụ:

<?php
if(isset($_GET['ten'])) {
echo "Xin chao " . $_GET['ten'];
}
?>
<form method="get" action="index.php">
Nhap ten: <input type="text" name="ten" /><br />
<input type="submit" value="Gui" />
</form>

Hình 51 Nhập tên và bấm nút Gui

Ví dụ lấy dữ liệu được truyền từ URL sau:

http://localhost/test_get.php?title=PHP_B*asic&link=toiyeucoding.com

<?php
if(isset($_GET['title'], $_GET['link'])) {
echo "Welcome to " . $_GET['title'] . "<br />";
echo "Link: " . $_GET['link'];
}
?>

Hình 52 Lấy dữ liệu từ URL thông qua $_GET

V. Biến $_POST

Biến $_POST tương tự như biến $_GET cũng được sử dụng trong form. Tuy nhiên form phải có phương thức method=”post”. Và $_POST không lấy được dữ liệu truyền vào URL.

Ví dụ:

<?php
if(isset($_POST['ten'])) {
echo "Xin chao " . $_POST['ten'];
}
?>
<form method="post" action="index.php">
Nhap ten: <input type="text" name="ten" /><br />
<input type="submit" value="Gui" />
</form>

Hình 53 Nhập tên và bấm Gui