首页  >  文章  >  后端开发  >  php预定义变量方法

php预定义变量方法

小云云
小云云原创
2017-11-15 15:10:101868浏览

PHP 提供了大量的预定义变量.由于许多变量依赖于运行的服务器的版本和设置,及其它因素,所以并没有详细的说明文档.一些预定义变量在 PHP 以命令行形式运行时并不生效.有关这些变量的详细列表.

用户自定义预定义变量

实例代码如下:

<?php  
echo "当前操作系统信息".PHP_OS."<br/>";  
echo &#39;本文件路径和文件名为:&#39;.__FILE__.&#39;<br />&#39;;  
echo "当前PHP版本信息".PHP_VERSION."<br/>";  
?>

系统预定义变量

$GLOBALS

包含一个引用指向每个当前脚本的全局范围内有效的变量.该数组的键名为全局变量的名称.从 PHP 3 开始存在 $GLOBALS 数组.

$_SERVER

变量由 web 服务器设定或者直接与当前脚本的执行环境相关联.类似于旧数组 $HTTP_SERVER_VARS 数组(依然有效,但反对使用).

$_GET

经由 URL 请求提交至脚本的变量.类似于旧数组 $HTTP_GET_VARS 数组(依然有效,但反对使用).

$_POST

经由 HTTP POST 方法提交至脚本的变量.类似于旧数组 $HTTP_POST_VARS 数组(依然有效,但反对使用).

$_COOKIE

经由 HTTP Cookies 方法提交至脚本的变量.类似于旧数组 $HTTP_COOKIE_VARS 数组(依然有效,但反对使用).

$_FILES

经由 HTTP POST 文件上传而提交至脚本的变量.类似于旧数组 $HTTP_POST_FILES 数组(依然有效,但反对使用).详细信息请参阅 POST 方法上传.

$_ENV

执行环境提交至脚本的变量.类似于旧数组 $HTTP_ENV_VARS 数组(依然有效,但反对使用).

$_REQUEST

经由 GET,POST 和 COOKIE 机制提交至脚本的变量,因此该数组并不值得信任.所有包含在该数组中的变量的存在与否以及变量的顺序均按照 php.ini 中的 variables_order 配置指示来定义.此数组在 PHP 4.1.0 之前没有直接对应的版本.参见 import_request_variables().

自 PHP 4.3.0 起,$_FILES 中的文件信息不再存在于 $_REQUEST 中.

Note: 当运行于命令行模式时,此数组将不会包含 argv 和 argc 条目;它们已经存在于数组 $_SERVER 中.

$_SESSION

当前注册给脚本会话的变量.类似于旧数组 $HTTP_SESSION_VARS 数组(依然有效,但反对使用).

$_SERVER['PHP_SELF']

当前正在执行脚本的文件名,与 document root相关.举例来说,在URL地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER['PHP_SELF'] 将会得到 /test.php/foo.bar 这个结果.如果 PHP 以命令行方式运行,该变量无效.

$_SERVER['SERVER_NAME']

当前运行脚本所在服务器主机的名称.如果该脚本运行在一个虚拟主机上,该名称是由那个虚拟主机所设置的值决定.例如,在URL地址为 /test.php $_SERVER['SERVER_NAME'] 将会得到 这个结果.

实例代码如下:

<?php 
// user sent a GET header with key = secret_access, val = true, so 
echo $_GET["secret_access"]; // output: true 
echo $secret_access; // output: 
session_start(); 
// in previous logic, you set session variable $secret_access = false 
echo $_SESSION["secret_access"]; // output: false 
echo $secret_access; // output: false 
extract_globals();  // Globals put into "normal" variables 
echo $_GET["secret_access"]; // output: true 
echo $_SESSION["secret_access"]; // output: false 
echo $secret_access; // output: true 
// VARIABLES ARE COMPROMISED! 
// DO NOT USE $secret_access ! 
// USE $_SESSION["secret_access"] instead !!! 
?>

php 4.2.0 以及后续版本中,php 指令 register_globals 的默认值为 off。这是 php 的一个主要变化。让 register_globals 的值为 off 将影响到预定义变量集在全局范围内的有效性。例如,为了得到 DOCUMENT_ROOT 的值,将必须使用 $_SERVER['DOCUMENT_ROOT'] 代替 $DOCUMENT_ROOT,又如,使用 $_GET['id'] 来代替 $id 从中获取 id 值,亦或使用 $_ENV['HOME'] 来代替 $HOME 获取环境变量 HOME 的值。

相关推荐:

PHP预定义变量实例详解

php预定义变量

php预定义变量_PHP教程

以上是php预定义变量方法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn