PHP超全局变量实现原理及代码解析
è¶å¨å±åéå¨ PHP 4.1.0 ä¸å¼å¥ï¼æ¯å¨å¨é¨ä½ç¨åä¸å§ç»å¯ç¨çåç½®åéã
PHP è¶å¨å±åé
PHP ä¸ç许å¤é¢å®ä¹åé齿¯âè¶å¨å±çâï¼è¿æå³çå®ä»¬å¨ä¸ä¸ªèæ¬çå¨é¨ä½ç¨åä¸é½å¯ç¨ãå¨å½æ°ææ¹æ³ä¸æ éæ§è¡ global $variable; å°±å¯ä»¥è®¿é®å®ä»¬ã
è¿äºè¶å¨å±å鿝ï¼
- $GLOBALS
- $_SERVER
- $_REQUEST
- $_POST
- $_GET
- $_FILES
- $_ENV
- $_COOKIE
- $_SESSION
æ¬èä¼ä»ç»ä¸äºè¶å¨å±åéï¼å¹¶ä¼å¨ç¨åçç« è讲解å¶ä»çè¶å¨å±åéã
$GLOBALS â å¼ç¨å¨å±ä½ç¨åä¸å¯ç¨çå¨é¨åé
$GLOBALS è¿ç§å¨å±åéç¨äºå¨ PHP èæ¬ä¸çä»»æä½ç½®è®¿é®å¨å±åéï¼ä»å½æ°ææ¹æ³ä¸åå¯ï¼ã
PHP å¨å为 $GLOBALS[index] çæ°ç»ä¸åå¨äºææå¨å±åéãåéçååå°±æ¯æ°ç»çé®ã
ä¸é¢çä¾åå±ç¤ºäºå¦ä½ä½¿ç¨è¶çº§å¨å±åé $GLOBALSï¼
å®ä¾
<?php $x = 75; $y = 25; function addition() { $GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y']; } addition(); echo $z; ?>
å¨ä¸é¢çä¾åä¸ï¼ç±äº z æ¯ $GLOBALS æ°ç»ä¸çåéï¼å æ¤å¨å½æ°ä¹å¤ä¹å¯ä»¥è®¿é®å®ã
PHP $_SERVER
$_SERVER è¿ç§è¶å¨å±åéä¿åå³äºæ¥å¤´ãè·¯å¾åèæ¬ä½ç½®çä¿¡æ¯ã
ä¸é¢çä¾åå±ç¤ºäºå¦ä½ä½¿ç¨ $_SERVER ä¸çæäºåç´ ï¼
å®ä¾
<?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']; ?>
ä¸è¡¨ååºäºæ¨è½å¤å¨ $_SERVER ä¸è®¿é®çæéè¦çåç´ ï¼
åç´ /代ç | æè¿° |
---|---|
$_SERVER['PHP_SELF'] | è¿åå½åæ§è¡èæ¬çæä»¶åã |
$_SERVER['GATEWAY_INTERFACE'] | è¿åæå¡å¨ä½¿ç¨ç CGI è§èççæ¬ã |
$_SERVER['SERVER_ADDR'] | è¿åå½åè¿è¡èæ¬æå¨çæå¡å¨ç IP å°åã |
$_SERVER['SERVER_NAME'] | è¿åå½åè¿è¡èæ¬æå¨çæå¡å¨ç主æºåï¼æ¯å¦ www.w3school.com.cnï¼ã |
$_SERVER['SERVER_SOFTWARE'] | è¿åæå¡å¨æ è¯åç¬¦ä¸²ï¼æ¯å¦ Apache/2.2.24ï¼ã |
$_SERVER['SERVER_PROTOCOL'] | è¿å请æ±é¡µé¢æ¶éä¿¡åè®®çåç§°åçæ¬ï¼ä¾å¦ï¼âHTTP/1.0âï¼ã |
$_SERVER['REQUEST_METHOD'] | è¿å访é®é¡µé¢ä½¿ç¨çè¯·æ±æ¹æ³ï¼ä¾å¦ POSTï¼ã |
$_SERVER['REQUEST_TIME'] | è¿å请æ±å¼å§æ¶çæ¶é´æ³ï¼ä¾å¦ 1577687494ï¼ã |
$_SERVER['QUERY_STRING'] | è¿åæ¥è¯¢å符串ï¼å¦ææ¯éè¿æ¥è¯¢åç¬¦ä¸²è®¿é®æ¤é¡µé¢ã |
$_SERVER['HTTP_ACCEPT'] | è¿åæ¥èªå½å请æ±ç请æ±å¤´ã |
$_SERVER['HTTP_ACCEPT_CHARSET'] | è¿åæ¥èªå½å请æ±ç Accept_Charset å¤´ï¼ ä¾å¦ utf-8,ISO-8859-1ï¼ |
$_SERVER['HTTP_HOST'] | è¿åæ¥èªå½å请æ±ç Host 头ã |
$_SERVER['HTTP_REFERER'] | è¿åå½å页é¢ç宿´ URLï¼ä¸å¯é ï¼å ä¸ºä¸æ¯ææç¨æ·ä»£ç齿¯æï¼ã |
$_SERVER['HTTPS'] | æ¯å¦éè¿å®å¨ HTTP åè®®æ¥è¯¢èæ¬ã |
$_SERVER['REMOTE_ADDR'] | è¿åæµè§å½å页é¢çç¨æ·ç IP å°åã |
$_SERVER['REMOTE_HOST'] | è¿åæµè§å½å页é¢çç¨æ·ç主æºåã |
$_SERVER['REMOTE_PORT'] | è¿åç¨æ·æºå¨ä¸è¿æ¥å° Web æå¡å¨æä½¿ç¨ç端å£å·ã |
$_SERVER['SCRIPT_FILENAME'] | è¿åå½åæ§è¡èæ¬çç»å¯¹è·¯å¾ã |
$_SERVER['SERVER_ADMIN'] | è¯¥å¼ææäº Apache æå¡å¨éç½®æä»¶ä¸ç SERVER_ADMIN åæ°ã |
$_SERVER['SERVER_PORT'] | Web æå¡å¨ä½¿ç¨ç端å£ãé»è®¤å¼ä¸º â80âã |
$_SERVER['SERVER_SIGNATURE'] | è¿åæå¡å¨çæ¬åèæä¸»æºåã |
$_SERVER['PATH_TRANSLATED'] | å½åèæ¬æå¨æä»¶ç³»ç»ï¼éææ¡£æ ¹ç®å½ï¼çåºæ¬è·¯å¾ã |
$_SERVER['SCRIPT_NAME'] | è¿åå½åèæ¬çè·¯å¾ã |
$_SERVER['SCRIPT_URI'] | è¿åå½å页é¢ç URIã |
PHP $_REQUEST
PHP $_REQUEST ç¨äºæ¶é HTML 表åæäº¤çæ°æ®ã
ä¸é¢çä¾åå±ç¤ºäºä¸ä¸ªåå«è¾å¥å段åæäº¤æé®ç表åãå½ç¨æ·éè¿ç¹å»æäº¤æé®æ¥æäº¤è¡¨åæ°æ®æ¶, è¡¨åæ°æ®å°åéå° æ ç¾ç action 屿§ä¸æå®çèæ¬æä»¶ãå¨è¿ä¸ªä¾åä¸ï¼æä»¬æå®æä»¶æ¬èº«æ¥å¤çè¡¨åæ°æ®ã妿æ¨éè¦ä½¿ç¨å¶ä»ç PHP æä»¶æ¥å¤çè¡¨åæ°æ®ï¼è¯·ä¿®æ¹ä¸ºæ¨éæ©çæä»¶åå³å¯ãç¶åï¼æä»¬å¯ä»¥ä½¿ç¨è¶çº§å¨å±åé $_REQUEST æ¥æ¶é input åæ®µçå¼ï¼
å®ä¾
<html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_REQUEST['fname']; echo $name; ?> </body> </html>
PHP $_POST
PHP $_POST 广æ³ç¨äºæ¶éæäº¤ method="post" ç HTML 表ååçè¡¨åæ°æ®ã$_POST ä¹å¸¸ç¨äºä¼ éåéã
ä¸é¢çä¾åå±ç¤ºäºä¸ä¸ªåå«è¾å¥å段åæäº¤æé®ç表åãå½ç¨æ·ç¹å»æäº¤æé®æ¥æäº¤æ°æ®åï¼è¡¨åæ°æ®ä¼åéå° æ ç¾ç action 屿§ä¸æå®çæä»¶ã卿¬ä¾ä¸ï¼æä»¬æå®æä»¶æ¬èº«æ¥å¤çè¡¨åæ°æ®ã妿æ¨å¸æä½¿ç¨å¦ä¸ä¸ª PHP 页颿¥å¤çè¡¨åæ°æ®ï¼è¯·ç¨æ´æ¹ä¸ºæ¨éæ©çæä»¶åãç¶åï¼æä»¬å¯ä»¥ä½¿ç¨è¶å¨å±åé $_POST æ¥æ¶éè¾å¥å段çå¼ï¼
å®ä¾
<html> <body> <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> Name: <input type="text" name="fname"> <input type="submit"> </form> <?php $name = $_POST['fname']; echo $name; ?> </body> </html>
PHP $_GET
PHP $_GET ä¹å¯ç¨äºæ¶éæäº¤ HTML 表å (method="get") ä¹åçè¡¨åæ°æ®ã
$_GET ä¹å¯ä»¥æ¶é URL ä¸çåéçæ°æ®ã
å设æä»¬æä¸å¼ 页é¢å«æå¸¦åæ°çè¶é¾æ¥ï¼
<html> <body> <a href="test_get.php?subject=PHP&web=W3school.com.cn" rel="external nofollow" >æµè¯ $GET</a> </body> </html>
å½ç¨æ·ç¹å»é¾æ¥ "æµè¯ $GET"ï¼åæ° "subject" å "web" 被åéå° "test_get.php"ï¼ç¶åæ¨å°±è½å¤éè¿ $_GET å¨ "test_get.php" ä¸è®¿é®è¿äºå¼äºã
ä¸é¢çä¾åæ¯ "test_get.php" ä¸ç代ç ï¼
å®ä¾
<html> <body> <?php echo "å¨ " . $_GET['web'] . " å¦ä¹ " . $_GET['subject']; ?> </body> </html>
以ä¸å°±æ¯æ¬æçå¨é¨å容ï¼å¸æå¯¹å¤§å®¶çå¦ä¹ ææå¸®å©ï¼ä¹å¸æå¤§å®¶å¤å¤æ¯æèæ¬ä¹å®¶ã