07/09/2018, 14:36

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 ...

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.

Ví dụ dưới đây chỉ ra rõ cách sử dụng $GOBALS:

<?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 hàm $GLOBALS, và nó cũng được truy cập từ bên ngoài của hàm luôn.

$_SERVER TRONG PHP

$_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'];
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ữ:

Element/Code	Description
$_SERVER['PHP_SELF']	Returns the filename of the currently executing script
$_SERVER['GATEWAY_INTERFACE']	Returns the version of the Common Gateway Interface (CGI) the server is using
$_SERVER['SERVER_ADDR']	Returns the IP address of the host server
$_SERVER['SERVER_NAME']	Returns the name of the host server (such as www.w3schools.com)
$_SERVER['SERVER_SOFTWARE']	Returns the server identification string (such as Apache/2.2.24)
$_SERVER['SERVER_PROTOCOL']	Returns the name and revision of the information protocol (such as HTTP/1.1)
$_SERVER['REQUEST_METHOD']	Returns the request method used to access the page (such as POST)
$_SERVER['REQUEST_TIME']	Returns the timestamp of the start of the request (such as 1377687496)
$_SERVER['QUERY_STRING']	Returns the query string if the page is accessed via a query string
$_SERVER['HTTP_ACCEPT']	Returns the Accept header from the current request
$_SERVER['HTTP_ACCEPT_CHARSET']	Returns the Accept_Charset header from the current request (such as utf-8,ISO-8859-1)
$_SERVER['HTTP_HOST']	Returns the Host header from the current request
$_SERVER['HTTP_REFERER']	Returns the complete URL of the current page (not reliable because not all user-agents support it)
$_SERVER['HTTPS']	Is the script queried through a secure HTTP protocol
$_SERVER['REMOTE_ADDR']	Returns the IP address from where the user is viewing the current page
$_SERVER['REMOTE_HOST']	Returns the Host name from where the user is viewing the current page
$_SERVER['REMOTE_PORT']	Returns the port being used on the user's machine to communicate with the web server
$_SERVER['SCRIPT_FILENAME']	Returns the absolute pathname of the currently executing script
$_SERVER['SERVER_ADMIN']	Returns the value given to the SERVER_ADMIN directive in the web server configuration file (if your script runs on a virtual host, it will be the value defined for that virtual host) (such as [email protected])
$_SERVER['SERVER_PORT']	Returns the port on the server machine being used by the web server for communication (such as 80)
$_SERVER['SERVER_SIGNATURE']	Returns the server version and virtual host name which are added to server-generated pages
$_SERVER['PATH_TRANSLATED']	Returns the file system based path to the current script
$_SERVER['SCRIPT_NAME']	Returns the path of the current script
$_SERVER['SCRIPT_URI']	Returns the URI of the current page

$_REQUEST TRONG PHP

Biến này được dùng để thu thập dữ liệu sau khi tất cả các form của HTML được đề xuất. 

Ví dụ dưới đây sẽ chỉ ra form bao gồm dữ liệu đầu vào và nút submit. Khi người sử dụng nhập dữ liệu đầu vào bằng một click chuột vào nút submit, form dữ liệu sẽ được gửi đến một file cụ thể trong một thuộc tính của form đính kèm. Trong ví dụ này chúng ta sẽ trỏ đến file hiện tại để duyệt các dạng dữ liệu. Nếu bạn muốn sử dụng file PHP khác để duyệt dữ liệu được trình chiếu, sau đó đổi tên file đã chọn. Tiếp theo, chúng ta sẽ sử dụng biến super global $_REQUEST để thu thập giá trị của file dữ liệu đầu vào. 

<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>
Run example »

$_POST

$_POST được sử dụng một cách rộng rãi giúp thu thập các dạng dữ liệu sau khi nhận được từ HTML bằng phương pháp =”post”. $_POST cũng được sử dụng nhiều cho các biến.

Ví dụ dưới đây chỉ ra một dạng dữ liệu đầu vào và một nút  submit. Khi người sử dụng cho ra bảng dữ liệu bằng một click chuột, dạng dữ liệu được gửi đến một file cụ thể.

<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 = $_POST['fname'];
    if (empty($name)) {
        echo "Name is empty";
    } else {
        echo $name;
    }
}
?>

</body>
</html>

$_GET

$_GET trong PHP được sử dụng để thu thập dữ liệu sau khi gửi đến HTML bằng phương pháp = “get”.

$_GET có thể thu thập dữ liệu nhận được trong URL

Giả sử chúng ta có trang HTML có đường link và thông số sau:

<html>
<body>

<a href="test_get.php?subject=PHP&web=W3schools.com">Test $GET</a>

</body>
</html>

Khi người sử dụng click vào link “ TEST $GET”, thong số “ subject” và “ web” được gửi đến “ test_get.php” và bạn có thể lien kết với các giá trị của chúng trong “ test_get.php” với “$_get”.

Ví dụ dưới đây chỉ ra đoạn mã code trong “ test_get.php”:

<html>
<body>

<?php 
echo "Study " . $_GET['subject'] . " at " . $_GET['web'];
?>

</body>
</html>

Bạn có thể hiểu biết thêm về $_POST và $_GET trong bài PHP Forms.

Tham khảo thêm các khóa học lập trình web từ Front-end đến Back-end do trực tiếp giảng viên quốc tế trường FPT Arena giảng dạy giúp bạn thành thạo kỹ năng lập trình web từ CƠ BẢN – NÂNG CAO với giá chỉ từ 290,000đ:

  • Học lập trình front-end cơ bản với bootstrap 4/html5/css3
  • Học lập trình front-end nâng cao qua Project thực tế
  • Học thiết kế web với Photoshop, CSS theo kiểu SASS
  • Học cách sử dụng Git_hub cho lập trình viên
  • Học lập trình Back-end PHP theo mô hình MVC cơ bản
  • Học lập trình Back-end PHP theo mô hình MVC nâng cao
  • Học lập trình Cơ sở dữ liệu với AngularJS
  • Học lập trình theme wordpress. Làm ra mọi website hoàn chỉnh với wordpress
  • Combo lập trình front-end từ cơ bản – nâng cao
  • Combo lập trình back-end từ cơ bản đến nâng cao
  • Combo lập trình web với word press từ A-Z
0