PHP超级全局变量以及两个循环

首先是PHP的超级全局变量

首先是超级全局变量的定义:意味着它们在一个脚本的全部作用于中都可用,不需要特别说明,就可以在函数及类中使用。

第一个是$GLOBALS
这个其实在之前有介绍过了,不过这次的格式可能比较不一样
直接拿例子了:

1
2
3
4
5
6
7
8
9
10
11
12
<?php 
$x = 75;
$y = 25;

function addition()
{
$GLOBALS['z'] = $GLOBALS['x'] + $GLOBALS['y'];
}

addition();
echo $z;
?>

输出结果是 100
第二个是$_SERVER
这是一个包含了很多信息的数组,这个数组中的项目由web服务器创建。
https://www.runoob.com/php/php-superglobals.html在这个链接中,包含了$_SERVER变量中的重要元素

下面整理了几个个人感觉常用命令
*$_SERVER[‘REMOTE_ADDR’] //当前用户 IP**
**$_SERVER[‘SERVER_ADDR’]
//当前运行脚本所在的服务器的IP地址**
$_SERVER[‘SERVER_PROTOCOL’]//请求页面页面时的通信协议的名称和版本
$_SERVER[‘REQUEST_METHOD’]// 访问页面使用的请求方法;例如,”GET”, “HEAD”,”POST”,”PUT”
这边去看了一下这些指令的区别:
首先是get和post

  1. get是从服务器上获取数据,post是向服务器传送数据。
  2. get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
  3. 对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。
  4. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  5. get安全性非常低,post安全性较高。

还有一个更详细 https://www.zhihu.com/question/28586791/answer/767316172
等以后遇到需要更深入了解时,再去回顾。
**&SERVER[‘HTTPS’]:如果脚本是通过HTTPS协议被访问,则被设为一个非空的值**
&_SERVER[‘REMOTE_HOST’]:浏览当前页面的用户的主机名,DNS反向解析不依懒于用户的REMOTE_ADDR
&_SERVER[‘REMOTE_PORT’]:用户机器上连接到WEB服务器所使用的端口号
&_SERVER[‘SCRIPT_URI’]:URI用来指定要访问的页面
**&_SERVER[‘PHP_SELF’]:**当前执行脚本的文件名,与 document root 有关。例如,在地址为 http://example.com/test.php/foo.bar 的脚本中使用 $_SERVER[‘PHP_SELF’] 将得到 /test.php/foo.bar。__FILE_
常量包含当前(例如包含)文件的完整路径和文件名。 从 PHP 4.3.0 版本开始,如果 PHP 以命令行模式运行,这个变量将包含脚本名。之前的版本该变量不可用。

第三个是$_REQUEST

PHP $_REQUEST 用于收集HTML表单提交的数据。

以下实例显示了一个输入字段(input)及提交按钮(submit)的表单(form)。 当用户通过点击 “Submit” 按钮提交表单数据时, 表单数据将发送至

标签中 action 属性中指定的脚本文件。 在这个实例中,我们指定文件来处理表单数据。如果你希望其他的PHP文件来处理该数据,你可以修改该指定的脚本文件名。 然后,我们可以使用超级全局变量 $_REQUEST 来收集表单中的 input 字段数据:(官方理解)

这便补充一下:REQUEST:具有$_POST[]$_GET[]的功能,但是$_REQUEST[]会比较慢。通过post和get方法提交的所有数据都可以通过$REQUEST数组获得

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//<!DOCTYPE html>
//<html>
//<body>

//<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
//Name: <input type="text" name="fname">
//<input type="submit">
//</form>

<?php
$name = htmlspecialchars($_REQUEST['fname']);
echo $name;
?>

</body>
</html>

PHP$_POST和PHP$_GET
PHP $_POST 被广泛应用于收集表单数据,在HTML form标签的指定该属性:”method=”post”
就是上面个实例,展示一下GET
在测试当中 按了那个

1
2
3
4
5
6
7
8
9
//<html>
//<body>

//<?php
//echo "Study " . $_GET['subject'] . " @ " . $_GET['web'];
//?>

//</body>
//</html>

会出现一个GET test的按钮,点一下 就会发送subject 和web的参数

感觉这片很水,可能是因为我html还没学,等我学完了再回来补充拓展

Author

vague huang

Posted on

2020-10-12

Updated on

2020-11-14

Licensed under

Comments