从这节开始讲解5个预定义变量(超全局变量),前面楠神讲过一个预定义变量$GLOBALS,用的不多,接下来讲解的预定义变量太实用了,没有这几个预定义变量PHP基本上就是废柴一个。
不知大家对第一章学过的表单还印象深刻否?就是用户在浏览器HTML页面输入各种信息,可以提交到服务器,实现客户端与服务器端信息交互。客户端表单页面我们知道怎么写了,就是HTML标记那些东西。PHP怎么去接受浏览器表单提交的数据?
看下面的示例:
以POST提交为例
点提交,结果:
1.php获取到表单提交过来的数据了,这些数据是存在数组里,我们来看下1.php用多少代码获取的这些数据。
其实就简简单单地在第5行用了一个预定义变量$_POST就把表单提交过来的数据获取到了。
在浏览器只提交了一个数据过来时,预定义变量$_POST也是一个数组。所以程序员想精确获取哪个数据,直接用表单标记(input、select、textarea)中的“name”属性值做$_POST下标,就可以获得值了。
前面讲解HTML表单时,楠神做过提示,像多选框的“name”属性值后面要加上[],如果不加就会是这样的:
等于是同时提交过来两个name='hobby'的数据,$_POST['hobby']从表单获取的不是数组了,它只能获取后面的值——“上网”。
也可以这样,不是多选框“name”属性值后面也可以加上[],并且[]可以写字符或数字进去:
PHP可以获取到一个关联数组。
[]中的字符不需要加引号。
$_POST不仅可以获取到表单提交的数据,在程序中可以修改它的数据。
结果:
$_POST数组中的数据可以被修改被删除,不过建议大家在写程序时不要这样写,尽量不去修改$_POST的数据(包括其他几个预定义变量)。
总结:预定义变量$_POST其实很简单,但它在PHP中的地位超级重要,没有$_POST可以说什么功能都做不了。通常网页中的form表单,都用post方式提交,没有$_POST网站连最普通的用户登录功能都实现不了。
记住几点:$_POST是个数组,可获取浏览器post提交的数据,作用域没有限制,可被修改不建议修改。