PHP____PHP超全局变量


引言

PHP中有一种变量叫做超全局变量,突然想到一句话:“有一种爱叫做放手”~~


$_SERVER

$_SERVER 是一个包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等等信息的数组。这个数组中的项目(item)由 Web 服务器创建。不能保证每个服务器都提供全部项目;服务器可能会忽略一些,或者提供一些没有在这里列举出来的项目。

  1. $_SERVER['HTTP_HOST'] 请求头信息中的Host内容,获取当前域名

  2. $_SERVER["SERVER_NAME"] 输出配置文件httpd.conf中的ServerName,一般情况下与HTTP_HOST值相同,但如果服务器端口不是默认的80端口,或者协议规范不是HTTP/1.1时,HTTP_HOST会包含这些信息,而SERVER_NAME不一定包含。(主要看配置文件的设置)。

  3. $_SERVER["HTTP_USER_AGENT"] 获取用户相关信息,包括用户浏览器、操作系统等信息。

  4. $_SERVER['HTTP_ACCEPT'] 当前请求的ACCEPT头部信息。

  5. $_SERVER["HTTP_ACCEPT_LANGUAGE"] 这个值是由浏览器发送,表明用户默认的语言设置,后面的q值表示用户对该语言的喜好程度。

  6. $_SERVER["HTTP_ACCEPT_ENCODING"] 大部分的现代浏览器都支持gzip压缩,并会把这一信息报告给服务器。这时服务器就会压缩过的HTML发送给浏览器。这可以减少近80%的文件大小,以节省下载时间和带宽。

  7. $_SERVER["HTTP_COOKIE"] 浏览器的cookie信息。

  8. $_SERVER["HTTP_CONNECTION"] 当前请求的连接情况。

  9. $_SERVER["HTTP_UPGRADE_INSECURE_REQUESTS"] 表示浏览器可读懂服务器发过来的请求,

  10. $_SERVER["HTTP_CACHE_CONTROL"] 表示浏览器是否会缓存这个页面信息。

  11. $_SERVER["PATH"] 当前脚本所在文件系统。

  12. $_SERVER["SystemRoot"] 当前服务器的操作系统。

  13. $_SERVER["COMSPEC"] 指向cmd.exe的路径。

  14. $_SERVER["PATHEXT"] 环境变量设置。

  15. $_SERVER["WINDIR"] 脚本指向的系统目录。

  16. $_SERVER["SERVER_SIGNATURE"] 包含服务器版本和虚拟主机名的字符串。

  17. $_SERVER["SERVER_SOFTWARE"] 服务器软件配置信息。

  18. $_SERVER["SERVER_ADDR"] 当前运行脚本的服务器的ip地址。

  19. $_SERVER["SERVER_PORT"] 服务器端口。

  20. $_SERVER["REMOTE_ADDR"] 浏览网页的用户ip。

  21. $_SERVER["DOCUMENT_ROOT"] 当前运行脚本所在的根目录。

  22. $_SERVER["REQUEST_SCHEME"] 服务器通信协议,是http或https。

  23. $_SERVER["CONTEXT_PREFIX"] 前缀。

  24. $_SERVER["CONTEXT_DOCUMENT_ROOT"] 当前脚本所在的文档根目录。

  25. $_SERVER["SERVER_ADMIN"] 服务器管理员信息。

  26. $_SERVER["SCRIPT_FILENAME"] 当前执行脚本的绝对路径。

  27. $_SERVER ["REMOTE_PORT"] 用户连接到服务器时所使用的端口。

  28. $_SERVER["GATEWAY_INTERFACE"] 服务器使用的CGI规范的版本。

  29. $_SERVER["SERVER_PROTOCOL"] 请求页面时通信协议的名称和版本。

  30. $_SERVER["REQUEST_METHOD"] 请求提交数据的方式。

  31. $_SERVER["QUERY_STRING"] 服务器请求时?后面的参数。
    32.$_SERVER["REQUEST_URI"] 当前脚本路径,根目录之后的目录。

  32. $_SERVER["SCRIPT_NAME"] 当前脚本的路径。这在页面需要指向自己时非常有用。

  33. $_SERVER["PHP_SELF"] 当前正在执行脚本的文件名。

  34. $_SERVER["REQUEST_TIME"] 得到请求开始时的时间戳。

元素/代码 描述
$_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 表单提交的数据。

下面的例子展示了一个包含输入字段及提交按钮的表单。当用户通过点击提交按钮来提交表单数据时, 表单数据将发送到 <form> 标签的 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 也常用于传递变量。

下面的例子展示了一个包含输入字段和提交按钮的表单。当用户点击提交按钮来提交数据后,表单数据会发送到 <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>

PHP $_GET

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>

GET vs. POST

GET 和 POST 都创建数组(例如,array( key => value, key2 => value2, key3 => value3, ...))。此数组包含键/值对,其中的键是表单控件的名称,而值是来自用户的输入数据。

GET 和 POST 被视作 $_GET 和 $_POST。它们是超全局变量,这意味着对它们的访问无需考虑作用域 - 无需任何特殊代码,您能够从任何函数、类或文件访问它们。

$_GET 是通过 URL 参数传递到当前脚本的变量数组。
$_POST 是通过 HTTP POST 传递到当前脚本的变量数组。


何时使用 GET?

通过 GET 方法从表单发送的信息对任何人都是可见的(所有变量名和值都显示在 URL 中)。GET 对所发送信息的数量也有限制。限制在大于 2000 个字符。不过,由于变量显示在 URL 中,把页面添加到书签中也更为方便。
GET 可用于发送非敏感的数据。
注释:绝不能使用 GET 来发送密码或其他敏感信息!


何时使用 POST?

通过 POST 方法从表单发送的信息对其他人是不可见的(所有名称/值会被嵌入 HTTP 请求的主体中),并且对所发送信息的数量也无限制。
此外 POST 支持高阶功能,比如在向服务器上传文件时进行 multi-part 二进制输入。
不过,由于变量未显示在 URL 中,也就无法将页面添加到书签。
提示:开发者偏爱 POST 来发送表单数据。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • PHP 是一种创建动态交互性站点的强有力的服务器端脚本语言。PHP(全称:PHP:Hypertext Prepro...
    浮若年华_7a56阅读 535评论 1 0
  • PHP 为所有脚本提供了大量的预定义变量(predefined variables)。 这些变量包括了以下这些东西...
    咚门阅读 1,293评论 1 4
  • PHP 超级全局变量 PHP中预定义了几个超级全局变量(superglobals) ,这意味着它们在一个脚本的全部...
    胖先森阅读 1,436评论 1 6
  • 人类的战争大多数都是因为利益的纷争。为了让穷苦的人能过好日子,就“杀富济贫”。几千年来的“杀富济贫”重复了多少次,...
    新经济学阅读 371评论 0 0
  • 新的一年不知不觉中开启了,由于工作内容或者性质的原因,还处于收尾阶段,也是一年中最忙的时候。 忙对于一个成年人来说...
    行者_知行合一阅读 275评论 0 0

友情链接更多精彩内容