PHP预定义变量
预定义变量又叫超全局变量,包括:
$_GET, $_POST, $_SERVER, $_REQUEST, $GLOBALS, $_COOKIE, $_SESSION, ..........(大约10个)
作用域问题:
php中,自定义的变量的作用域,分两种:全局作用域(函数外),局部作用域(函数内)。
但:
预定义变量的作用域称为“超全局作用域”:全局作用域 + 局部作用域的总和(函数内外全都可用)
数据类型问题:
超全局变量都是数组!
$_GET变量(数组):
get这个词,常常出现在这里:<form action=”abc.php” method=”get” >.....</form>
这叫做“表单以get方式提交数据”
则$_GET这个预定义数组变量,就是指以这种方式提交的所有数据的集合(数组)
对应来说,也可以以post方式提交数据
注意:get这个词,似乎没有中文翻译。
实际上,在网页中,以get方式提交数据有多种形式:
形式一:
<form action=”abc.php” method=”get” >
项目1: <input type=”text” name=”uName” />
项目2: <input type=”password” name=”uPswd” />
<input type=”submit” value=”提交” />
</form>
其作用是:用户填写表单数据,并提交后,会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php)
形式二:
<a href=”abc.php?uName=test1&uPswd=123” > 文字。。。</a>
其作用是:用户点击链接后,会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php),这种请求也是get请求
形式三:
<script>
location.href = “abc.php?uName=test1&uPswd=123”; //利用location对象的属性href
</script>
其作用是:当该行语句执行的时候(通常其实是在函数中),会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php),这种请求也是get请求
形式四:
<script>
location.assign( “abc.php?uName=test1&uPswd=123”); //利用location对象的方法assign()
</script>
其作用是:当该行语句执行的时候(通常其实是在函数中),会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php),这种请求也是get请求
不管哪种形式的get提交过来的数据,获取数据是一样的:
(在abc.php网页中)
<?php
$v1 = $_GET[‘uName’]; //单引号也可以用双引号,本质是一个字符串,其实是数组的键名(下标)
$v2 = $_GET[‘uPswd’]; //该键名必须跟提交的时候的名字完全一致(区分大小写)
?>
提交后:
$_POST变量(数组)
类似$_GET变量(数组),$_POST代表页面通过post方式提交过来的数据所形成的数组。
post提交数据,通常只有一种形式:
<form action=”abc.php” method=”post” >
项目1: <input type=”text” name=”uName” />
项目2: <input type=”password” name=”uPswd” />
<input type=”submit” value=”提交” />
</form>
其作用是:用户填写表单数据,并提交后,会将数据发送(提交)给页面abc.php,其实也可以理解为“打开”该网页(abc.php),还可以理解为“请求”该网页(abc.php)
接收post数据的形式为:
(在abc.php网页中)
<?php
$v1 = $_POST[‘uName’]; //单引号也可以用双引号,本质是一个字符串,其实是数组的键名(下标)
$v2 = $_POST[‘uPswd’]; //该键名必须跟提交的时候的名字完全一致(区分大小写)
也可以显示所有post数据:
var_dump($_POST)
?>
通常,网页中的form表单,一般都用post方式,get方式主要体现在其他3种形式。
小案例:
设计一个页面,可以对2个数据进行基本算术运算(+-*/),使用post方式
$_REQUEST变量(数组)
$_REQUEST数组,其实并不是一个独立的数据来源,而是$_POST数据和$_GET数据的“总和”
即$_REQUEST数组中包括了所有$_POST数据和$_GET数据——其实是由系统内部自动存储的。
通常,$_POST数据和$_GET数据不会“同时出现”,$_REQUEST数组就代表了其中之一。
则他们接收数据都一样: