NTM Solutions

Facebook Youtube Google+

Thứ Sáu, 19 tháng 10, 2018

Bài 15 – Biến TOÀN CỤC vs SIÊU TOÀN CỤC



Biến SIÊU TOÀN CỤC được giới thiệu trong PHP 4.1.0, và được xem như là biến có phạm vi sử dụng trên tất cả phạm vi.

Biến TOÀN CỤC – SIÊU TOÀN CỤC trong PHP

Trong PHP, biến “SIÊU TOÀN CỤC” nghĩa là chúng luôn có thể truy cập bất chấp phạm vi – bạn có thể truy cập chúng từ bất kỳ hàm , lớp hoặc tập tin mà không cần phải làm gì cả.


Các biến siêu toàn cục của PHP là:

·         $GLOBALS

·         $_SERVER

·         $_REQUEST

·         $_POST

·         $_GET

·         $_FILES

·         $_ENV

·         $_COOKIE

·         $_SESSION


Biến $GLOBALS trong PHP

Biến $GLOBALS là biến siêu toàn cục của PHP được dùng để truy cập các biến toàn cục từ bất kỳ đâu trong các đoàn mã PHP (cũng như trong các hàm và phương thức).


PHP lưu trữ tất cả biến toàn cục trong 01 mảng gọi là $GLOBALS[chỉ số]. Chỉ số của mảng lưu giữ tên biến.

Ví dụ dưới đây cho thấy cách sử dụng biến siêu toàn cụcc $GLOBALS:

<!DOCTYPE html>
<html>
<body>

<?php
$x = 
75;
$y = 
25;

function addition() {
    
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

addition();
echo $z;
?>

</body>
</html>

Trong ví dụ ở trên, vì z là 01 biến tồn tại bên trong mảng $GLOBALS , nên nó cũng có thể truy cập bên ngoài hàm!

Biến $_SERVER trong PHP


Biến $_SERVER là 01 biến siêu toàn cục trong PHP lưu giữ thông tin về headers, các đường dẫn, và vị trí đoạn mã.



Ví dụ dưới đây cho thất các sử dụng vài phần tử trong biến $_SERVER

<!DOCTYPE html>
<html>
<body>

<?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'];
?>

</body>
</html>

Bảng danh sách sau liệt kê các phần tử quan trọng nhất bên trong biến $_SERVER


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.lophocvitinh.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 someone@lophocvitinh.com)
$_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

Biến $_REQUEST trong PHP

Trong PHP, biến $_REQUEST được dùng để thu thập dữ liệu sau khi gửi (submit) 01 form HTML.

Ví dụ dưới đây cho thấy 01 biểu mẫu với 01 vùng nhập dữ liệu và 01 nút submit. Khi 01 người dùng gửi (submit) dữ liệu bằng cách bấm "Submit", dữ liệu của biểu mẫu được gửi đến tập tin được xác định trong thuộc tính action của thẻ <form> . Trong ví dụ này, chúng ta trỏ về chính tập tin đó để xử lý dữ liệu biểu mẫu. Nếu bạn muốn dùng 01 tập tin PHP khác để xử lý dữ liệu biểu mẫu cứ việc thay thế tập tin bạn muốn. Sau đó, chúng ta có thể dùng biến siêu toàn cục $_REQUEST để thu thập giá trị của dữ liệu nhập vào.

<!DOCTYPE html>
<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 = htmlspecialchars($_REQUEST['fname']);
    
if (empty($name)) {
        
echo "Chưa nhập tên!!!";
    } 
else {
        
echo $name;
    }
}
?>

</body>
</html>

Biến $_POST trong PHP


Biến $_POST trong PHP được sử dụng rộng rãi để thu thập dữ liệu biểu mẫu sau khi gửi (submit) 01 biểu mẫu HTML bằng phương thức "post". Biến $_POST cũng được sử dụng rộng rãi để nạp biến??.

Ví dụ dưới đây cho thấy 01 biểu mẫu với 01 vùng nhập liệu và 01 nút submit. Khi 01 người dùng gửi dữ liệu bằng cách bấm nút "Submit", dữ liệu biểu mẫu được gửi đến 01 tập tin xác định trong thuộc tính action của thẻ <form> . Trong ví dụ này, chúng ta trỏ đến chính tập tin đó để xử lý dữ liệu biểu mẫu. Nếu bạn muốn dùng 01 tập tin PHP khác để xử lý dữ liệu biểu mẫu, cứ việc thay thế tập tin mà bạn muốn. Sau đó, ta có thể dùng biến siêu toàn cục $_POST để thu thập giá trị dữ liệu nhập vào.

<!DOCTYPE html>
<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>

Biến $_GET trong PHP


Trong PHP, biến $_GET cũng có thể dùng để thu thập dữ liệu sau khi gửi 01 biểu mẫu HTML bằng phương thức "get".


Biến $_GET cũng có thể thu thập dữ liệu gửi đi trong URL.

Giả định ta có 01 trang HTML có chứa 01 siêu liên kết với các tham số:

<!DOCTYPE html>
<html>
<body>

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

</body>
</html>

Khi người dùng bấm vào liên kết "Test $GET", các tham số "subject" và "web" được gửi đến trang "test_get.php", và bạn có thể truy cập các giá trị này trong trang "test_get.php" bằng biến $_GET.

Ví dụ dưới đây là toàn bộ mã trang "test_get.php":

<html>

<body>

<?php

echo "Học " . $_GET['subject'] . " tại " . $_GET['web'];

?>

</body>

</html>

Mẹo: Bạn sẽ học kỹ về $_POST và $_GET trong loạt bài PHP Forms.

Nếu vẫn chưa rõ các bạn xem thêm video clip sau:




By #tiensim

Nguồn: sưu tầm