PHP 超全域性變數
阿新 • • 發佈:2020-11-18
PHP與Web頁面互動
解析PHP執行過程
-
HTTP請求
- 當瀏覽器鍵入URL地址後,就會向指定伺服器發起HTTP請求
- 在請求的同時,附帶請求訊息頭、請求訊息體等相關資訊
-
Apache服務端處理
- 當請求到達伺服器之後,Apache就開始工作了
- 如果請求的是靜態資源,Apache直接在伺服器目錄下獲取這些檔案
- 如果請求的是PHP檔案,Apache則會交給PHP模組來處理
- PHP模組將處理後的結果以HTML方式返回給Apache
-
返回HTTP響應資料
- 伺服器將通過Apache獲取到的靜態資源通過HTTP響應傳送給瀏覽器端
-
瀏覽器顯示
- 客戶端將伺服器返回的靜態資源進行解析並顯示出來
Web表單
表單組成
- 表單標籤
name
用於設定表單名稱method
用於設定表單的提交方式,GET或POSTaction
用於指定接收資料的路徑enctype
用於設定提交資料的編碼格式target
用於設定返回資訊的顯示格式
<form name='' method='' action='' enctype='' target=''>
...
</form>
- 表單元素
<input>
域標記<textarea>
文字域標記
<form> <input name="username" type="text"><br> <input name="pwd" type="password"><br> <input name="sex" type="radio"><br> <input name="hobby" type="checkbox"><br> <input name="upload" type="file"><br> <input name="login" type="submit"><br> <input name="girl" type="image"><br> <input name="clean" type="reset"><br> <textarea name="content"></textarea> </form>
獲取表單資料
method
屬性指定提交方式POST
提交方式使用全域性陣列$_POST[]
來獲取表單元素的值GET
提交方式使用全域性陣列$_GET[]
來獲取表單元素的值
$username= $_GET['username'];
$username= $_POST['username'];
$username= $_REQUEST['username'];
<?php header("Content-Type: text/html; charset=utf-8"); if(!empty($_REQUEST['username'])){ echo $_REQUEST['username']; } ?> <form action='' method="post"> <input type="text" name="username"> <br> <br> <input type="submit" value="提交"> </form>
表單安全驗證
- 使用者提交的資料屬於非法資料(如:JS程式碼段)
strip_tags()
方法- 用於去除字串中的HTML和PHP標記
htmlentities()
方法- 可以將HTML和PHP標記轉換成字元
<?php
header("Content-Type: text/html; charset=utf-8");
if($_SERVER['REQUEST_METHOD']== 'POST'){
echo '<pre>';
echo htmlentities($_REQUEST['content'], ENT_NOQUOTES, 'UTF-8').'<br>';
echo '</pre>';
}
?>
<form action='' method="post">
<p>留言內容:</p>
<textarea name="content"></textarea>
<br><br>
<input type="submit" value="留言提交">
</form>
表單資料驗證
-
對錶單提交的資料進行驗證
isset()
用於檢測變數是否具有值- 包括
0 false
或者一個空字串,但不能是NULL
- 包括
empty()
用於檢測是否具有空值- 包括
空字串 0 null 或 false
- 包括
is_numeric()
用於檢測數字或數字字串
-
轉賬案例
<?php
header("Content-Type: text/html; charset=utf-8");
if($_SERVER['REQUEST_METHOD']== 'POST'){
if(!isset($_POST['name'])){
echo '必須設定轉賬人員!';
exit;
}
if(empty($_POST['amount'])){
echo '請輸入轉賬金額!';
exit;
}
if(!is_numeric($_POST['amount'])){
echo '請輸入正確的資料格式!';
exit;
}
echo "轉賬{$_POST['amount']}元給{$_POST['name']}";
var_dump($_POST['name']);
exit;
}
?>
<form action='' method="post">
<p>轉賬 <input type="text" name="amount"> 給 <input type="text" name="name"></p>
<br>
<input type="submit" value="轉賬提交">
</form>
超全域性變數
超全域性變數
- 預定義的超全域性變數
$_GET
經由 HTTP GET 方法提交至指令碼的變數$_POST
經由 HTTP POST 方法提交至指令碼的變數$_REQUEST
經由 GET POST和COOKIE機制交至指令碼的變數$_SERVER
經由web伺服器設定或者直接與當前指令碼的執行環境相關聯$_ENV
執行環境提交至指令碼的變數$_FILES
經由 HTTP POST 檔案上傳而提交至指令碼的變數$_COOKIE
經由 HTTP Cookies 方法提交至指令碼的變數$_SESSION
當前註冊給指令碼會話的變數$GLOBALS
包含一個引用指向每個當前指令碼的全域性範圍內有效的變數
$_GET
$_GET
- 對於GET方式提交的資料,可以使用$_GET變數來獲取,$_GET變數實際上就是一個數組
<?php
header("Content-Type: text/html; charset=utf-8");
if($_SERVER['REQUEST_METHOD']== 'GET'){
if(isset($_GET['amount'])){
echo $_GET['amount'];
exit;
}
}
?>
<form action='' method="get">
<input type="text" name="amount">
<input type="submit" value="提交">
</form>
$_POST
$_POST
- 對於POST方式提交的表單,可以使用$_POST變數來獲取,$_POST變數實際上也是一個數組
<?php
header("Content-Type: text/html; charset=utf-8");
if($_SERVER['REQUEST_METHOD']== 'POST'){
if(isset($_POST['amount'])){
echo $_POST['amount'];
exit;
}
}
?>
<form action='' method="post">
<input type="text" name="amount">
<input type="submit" value="提交">
</form>
$_REQUEST
$_REQUEST
- 同時獲取
$_GET $_POST $_COOKIE
中的表單資料
- 同時獲取
<?php
header("Content-Type: text/html; charset=utf-8");
if($_SERVER['REQUEST_METHOD']== 'POST' || 'GET'){
if(isset($_REQUEST['amount'])){
echo $_REQUEST['amount'];
exit;
}
}
?>
<form action='' method="post">
<input type="text" name="amount">
<input type="submit" value="提交">
</form>
$_SERVER
-
$_SERVER
- 在Web伺服器中儲存頁面互動資訊
- 是由Web伺服器建立的資訊陣列
- 用於存放HTTP請求頭資訊以及Web伺服器資訊
-
HTTP請求頭資訊
HTTP_HOST
Web伺服器的地址HTTP_USER_AGENT
客戶端作業系統和瀏覽器資訊HTTP_ACCEPT
當前HTTP請求的Accept頭部資訊HTTP_ACCEPT_LANGUAGE
當前HTTP請求的Accept_Language頭部資訊HTTP_ACCEPT_ENCODING
當前HTTP請求的Accept_Encoing頭部資訊HTTP_REFERER
連結到當前頁面的前一頁面的URL地址
-
Web伺服器資訊
SERVER_NAME
Web伺服器的名字SERVER_ADDR
Web伺服器的IP地址SERVER_PORT
Web伺服器的埠號REMOTE_ADDR
客戶端IP地址DOCUMENT_ROOT
Web伺服器中的應用程式碼存放地址SERVER_ADMIN
Web伺服器的管理員賬號SCRIPT_FILENAME
當前訪問的指令碼檔案的檔名REMOTE_PORT
客戶端使用的埠號GATEWAY_INTERFACE
閘道器介面資訊SERVER_PROTOCOL
Web伺服器使用的協議資訊REQUEST_METHOD
客戶端發出的HTTP請求中使用的方法QUERY_STRING
客戶端發出的HTTP請求中的引數串REQUEST_URI
URL中的路徑部分SCRIPT_NAME
當前訪問的指令碼檔案的相對路徑PHP_SELF
當前訪問的PHP指令碼檔案的相對路徑REQUEST_TIME
客戶端發出HTTP請求的時間
<?php
echo "客戶端的IP地址:{$_SERVER['REMOTE_ADDR']}<br>";
echo "檔案的存放位置:{$_SERVER['DOCUMENT_ROOT']}<br>";
echo "指令碼檔案的名稱:{$_SERVER['SCRIPT_FILENAME']}<br>";
echo "表單的請求方式:{$_SERVER['REQUEST_METHOD']}<br>";
echo "檔案的相對路徑:{$_SERVER['PHP_SELF']}<br>";
?>
$GLOBALS
- 超全域性變數
$GLOBALS
- 是一個引用全域性作用域中全部可用變數的陣列
- 變數名就是陣列的鍵
<?php
function test(){
$foo1= "泥萌";
echo "{$foo1}<br>";
echo "{$GLOBALS['foo2']}<br>";
echo "{$GLOBALS['foo3']}<br>";
var_dump($GLOBALS);
}
$foo2= '蝸萌';
$foo3= '塔萌';
test();
?>