全局变量 php-PHP超级全局变量总结

2023-08-21 0 435 百度已收录

Silicon1985重要的PHP超级全局变量总结

PHP有9个预定义的变量字段,总结如下:

1.$_SERVER

$_SERVER 超全局变量包含 Web 服务器创建的信息全局变量 php,它提供有关服务器和客户端配置以及当前请求环境的信息。 根据服务器的不同,$_SERVER中的变量值和变量号会有所不同全局变量 php,但通常可以找到CGI1.1规范中定义的变量。 这些包括:

$_SERVER['HTTP_REFERER'] ; 将用户引导至当前位置的页面 URL;

$_SERVER['REMOTE_ADDR'] ; 客户端IP地址;

$_SERVER['REQUEST_URI']; URL 的路径部分。 如果 URL 为 [url][/url],则 URI 为 /blog/apache/index.html。

$_SERVER[ 'HTTP_USER_AGENT' ] ; 客户端的用户代理,通常提供有关操作系统和浏览器的信息。

2.$_GET

$_GET 超全局包含有关使用 GET 方法传递的参数的信息。 如果请求的URL是[url][/url],则可以使用$_GET超级全局变量来访问以下变量:

$_GET['cat'] = "apache";

$_GET['id'] = "157";

默认情况下,$_GET 超全局变量是访问通过 GET 传递的变量的唯一方法。

3.$_POST

$_POST 超全局包含有关 POST 传递的参数的信息。

通过脚本 subscribe.php,您可以使用以下 POST 变量:

$_POST['email'] = "jason@example.com";

$_POST['pswd'] = "雨天";

$_POST['订阅'] = "订阅!";

与 $_GET 一样,默认情况下 $_POST 超全局是访问 POST 变量的唯一方法。

4.$_COOKIE

$_COOKIE 超全局存储通过 HTTP cookie 传递给脚本的信息。 这些 cookie 通常由通过 PHP 函数 setcookie() 执行的 PHP 脚本设置。 例如,假设使用 setcookie() 存储名为 example.com 且值为 ab2213 的 cookie。 稍后可以通过调用 $_COOKIE['example.com'] 获取该值。

5.$_FILES

全局变量 php-PHP超级全局变量总结

$_FILES 超全局包含有关通过 POST 上传到服务器的数据的信息。 这个超级全局变量与其他变量不同,它是一个包含5个元素的二维数组。 第一个下标标识表单的文件上传元素名称; 第二个下标是描述上传文件属性的五个预定义下标之一:

△ $_FILES[ '上传名称' ][ '名称' ]; 客户端上传到服务器的文件的文件名;

△ $_FILES[ '上传名称' ][ '类型' ]; 上传文件的MIME类型,该变量是否为形参取决于浏览器的功能。

△ $_FILES[ '上传名称' ][ '大小' ]; 上传文件的大小(以字节为单位);

△ $_FILES[ '上传名称' ][ 'tmp_name' ]; 上传后,将此文件移动到最终位置之前指定的临时名称。

△ $_FILES[ '上传名称' ][ '错误' ]; 上传状态码。 尽管这个变量被命名为错误,但实际上它是在成功时填充的。 它有五个可能的值:

■ UPLOAD_ERR_OK 文件上传成功

全局变量 php-PHP超级全局变量总结

■ UPLOAD_ERR_INI_SIZE 文件大小超过upload_max_filesize 指令指定的最大值。

■ UPLOAD_ERR_FORM_SIZE 文件大小超过MAX_FILE_SIZE 隐藏表单字段参数(可选)指定的最大值。

■ UPLOAD_ERR_PARTIAL 文件仅部分上传

■ UPLOAD_ERR_NO_FILE 上传表单中未指定文件

6.$_ENV

$_ENV 超全局提供有关 PHP 解析的服务器环境的信息。 该字段中的变量包括:

△ $_ENV[ 'HOSTNAME' ] 服务器的主机名

△ $_ENV['SHELL'] 系统外壳

7.$_请求

$_REQUEST 超级全局是一个多面手,它记录通过各种方式传递给脚本的变量,特别是 GET、POST 和 COOKIE。 这些变量的顺序并不取决于它们在发送脚本中出现的顺序,而是取决于variables_order配置指令指定的顺序。 建议谨慎使用这个超级变量,因为它不够安全。

8.$_会话

$_SESSION 超全局包含与所有会话相关的信息。 注册会话信息使您能够方便地在整个站点中引用这些会话信息,而无需通过 GET 或 POST 显式传递数据。

9.$全局变量

$GLOBALS超级全局变量链表可以认为是超级全局变量的超集,包括全局范围内的所有变量。 执行下面的代码可以查看$GLOBALS中的所有变量。

打印'

' ;

        print_r ($GLOBALS);

        print '

';

众所周知,在PHP函数中,如果要使用全局变量,一是使用超全局变量$GLOBALS,二是在函数中使用global关键字声明。 大家都知道使用超全局变量 $GLOBALS 的形式。 明天我们来谈谈使用全局方法声明变量。

让我们看下面的例子: $a=1;$b=2;functiontest(){global$a,$b;}test();

当我们执行test()函数时,显存中的变量状态是什么?如右图

我们已经声明了测试函数。 当调用test()函数时,global会在函数中声明两个局部变量$a和$b,但分别指向全局变量$a和$b。 此时,临时变量$a和$b就相当于对全局变量$a和$b的引用。 所以我们改变函数中局部变量$a和$b的值就相当于改变了全局变量的值。 $a=1;$b=2;functiontest(){全局$a,$b;$a=11;$b=12;取消设置($a);取消设置($b);}测试();回显$一个;回声'

';回显$b;

在浏览器上复制输出:1122

里面的代码也使用了unset(),通过echo输出可以输出全局变量$a和$b的值,这也说明了test()函数中global关键字声明的$a和$b只是局部的变量,而unset()只是打破了局部变量和全局变量的引用。

我们再看看另一种情况,如果我们在测试函数中声明的变量不在全局变量中怎么办?

先说推论:如果函数中用global关键字声明的变量在全局范围内没有同名变量,那么会先创建一个同名的全局变量,然后再创建一个局部同名变量。函数中会创建变量,全局变量的引用将指向局部变量。 functiontest(){全局$a,$b;$a=11;$b=22;unset($a);unset($b);}echo $a;echo'

';回显$b;

通过浏览器输出:1122

里面的代码中,我们在测试函数中使用global来声明变量$a和$b,虽然全局作用域没有声明$a和$b,但global仍然会先创建全局变量$a和$b ,然后在test函数中创建$a,$b,然后将全局变量的引用指向test函数的局部变量。 所以虽然我们在函数中unset了$a和$b,但是在函数执行后我们仍然可以将$a和$b复制出来,因为全局变量中已经有两个变量了。

所以我们最终可以得出如下推论:函数中使用global声明变量时,会首先检查全局作用域内是否存在同名变量,如果存在,则将全局变量的引用指向使用 global 声明的同名局部变量。 如果全局范围内没有同名变量全局变量 php,则先创建同名全局变量,然后创建局部变量全局变量 php,然后将全局变量的引用指向局部变量。

相关教程:PHP 视频教程

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 php 全局变量 php-PHP超级全局变量总结 https://www.wkzy.net/game/138689.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务