PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
这些超全局变量是:
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION
1、$GLOBALS — 引用全局作用域中可用的全部变量
$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(从函数或方法中均可)。
PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。
下面的例子展示了如何使用超级全局变量 $GLOBALS:
<?php $x = 75; $y = 25; function addition() { $GLOBALS [ 'z' ] = $GLOBALS [ 'x' ] + $GLOBALS [ 'y' ]; } addition(); echo $z ; ?> |
2、$_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' ]; ?> |
3、PHP $_REQUEST 用于收集 HTML 表单提交的数据。
示例代码:
<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> |
4、PHP $_POST 广泛用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。
下面的例子展示了一个包含输入字段和提交按钮的表单。当用户点击提交按钮来提交数据后,表单数据会发送到 <form> 标签的 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> |
5、PHP $_GET 也可用于收集提交 HTML 表单 (method="get") 之后的表单数据。
$_GET 也可以收集 URL 中的发送的数据。
假设我们有一张页面含有带参数的超链接:
<html> <body> <a href= "test_get.php?subject=PHP&web=W3school.com.cn" >测试 $GET </a> </body> </html> |
当用户点击链接 "Test $GET",参数 "subject" 和 "web" 被发送到 "test_get.php",然后您就能够通过 $_GET 在 "test_get.php" 中访问这些值了。
下面的例子是 "test_get.php" 中的代码:
<html> <body> <?php echo "Study " . $_GET [ 'subject' ] . " at " . $_GET [ 'web' ]; ?> </body> </html> |
6、通过 HTTP POST 方式上传到当前脚本的项目的数组。
示例代码:
< form enctype = "multipart/form-data" action = "upload.php" method = "post" > < input type = "hidden" name = "MAX_FILE_SIZE" value = "1000" > < input name = "myFile" type = "file" > < input type = "submit" value = "上传文件" > </ form > |
当客户端提交后,我们获得了一个$_FILES 数组
$_FILES数组内容如下:
$_FILES['myFile']['name'] 客户端文件的原名称。
$_FILES['myFile']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上传文件的大小,单位为字节。
$_FILES['myFile']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。
$_FILES['myFile']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)
UPLOAD_ERR_OK
值:0; 没有错误发生,文件上传成功。
UPLOAD_ERR_INI_SIZE
值:1; 上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值。
UPLOAD_ERR_FORM_SIZE
值:2; 上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值。
UPLOAD_ERR_PARTIAL
值:3; 文件只有部分被上传。
UPLOAD_ERR_NO_FILE
值:4; 没有文件被上传。
值:5; 上传文件大小为0.
7、PHP中的$_ENV是一个包含服务器端环境变量的数组。 $_ENV只是被动的接受服务器端的环境变量并把它们转换为数组元素,你可以尝试直接输出它。
当你想看看一个变量中究竟有什么东西在里面时,我所知道的方式有三种:
1、var_dump($_ENV);
2、print_r($_ENV);
3、foreach($_ENV as $key=>$val){echo $key.'--------'.$val.'<br>';}
8、通过 HTTP Cookies 方式传递给当前脚本的变量的数组。PHP 的 $_COOKIE 变量用于取回 cookie 的值。
在下面的例子中,我们取回了名为 "user" 的 cookie 的值,并把它显示在了页面上:
<?php // Print a cookie echo $_COOKIE [ "user" ]; // A way to view all cookies print_r( $_COOKIE ); ?> |
9、存储和取回 session 变量的正确方法是使用 PHP $_SESSION 变量:
<?php session_start(); // store session data $_SESSION [ 'views' ]=1; ?> <html> <body> <?php //retrieve session data echo "Pageviews=" . $_SESSION [ 'views' ]; ?> </body> </html> |
输出:
Pageviews=1 |