3.3.3 外部变量
最后更新于:2022-04-02 00:18:18
PHP的外部变量是PHP 在使用过程中规定好的一些变量。这个变量的规定是这样规定的,就这样使用。
我们先讲解几个最常用的例子,我们将下面的表单命名为user.html:
~~~
~~~
上现是很基础的一段HTML代码,在这段代码的主要意思是把用户和密码,采用get方法,将数据发送给reg.php(在上面代码的第6行规定的)。reg.php想办法接收用户传过来的username和pwd这两个值。
我们得出我们的第一个外部变量:$_GET。
$_GET 的主要作用是将得到get传值的数据。
我们写一个reg.php,用$_GET来接收值试试:
~~~
的值
$u = $_GET['username'];
echo $u.'
'; //$_GET['pwd'] 得到表单 的值 $passwd = $_GET['pwd']; echo $passwd.'
'; ?> ~~~ 你可以输出值看一下结果。通过上面的实验我们知道了,通过$_GET这个外部变量,可以得到从表单输入的值。 大家在实验的时候会发现地址栏上面有一个特点: ![2015-08-02/55bd986d3052c](http://box.kancloud.cn/2015-08-02_55bd986d3052c.png) 根据上图,观察特点: 1. reg.php后面跟了一个?(问号) 2. 表单里面的username变在了地址栏里面 3. 表单面username的值输入的是liwenkai,在username后面跟了个=(等号)输入的值 4. username(名字)=liwenkai(值) 后面的密码是password(名字)=NoAlike(值),中间有&(and符)分开 密码是可见的,那怎么样保证安全呢。让我在注册的过程当中,密码不在地址栏里面被人看到呢? 这个时候我们需要使用到post传值,post传值是在地址栏中不可见的。 同样上面例子的代码我们进行修改,html代码如下: ~~~ ~~~ PHP的代码里面的$_GET全改为了$_POST: ~~~ 的值 $u = $_POST['username']; echo $u.'
'; //$_POST['pwd'] 得到表单 的值 $passwd = $_POST['pwd']; echo $passwd.'
'; ?> ~~~ ![2015-08-02/55bd9aa0388e5](http://box.kancloud.cn/2015-08-02_55bd9aa0388e5.png) 观察特点 reg.php后的?(问号)不见了。后面的username和password也不见了。那他怎么传递数据的呢? 他是通过我们看不见的浏览器的请求头文件传递的数据。所以在URL(网址)栏不可见。 注:附录中有如何通过火狐浏览器的firebug查看传递结果的演示过程。这一块都是HTTP协议规定的传送方式。 除此之外,我们还有$_REQUEST来接收数据。现在我们这样处理: 将php代码段中的$_POST全改为$_REQUEST,代码如下: ~~~ '; $passwd = $_REQUEST['pwd']; echo $passwd.'
'; ?> ~~~ 把网页user.html里面的这一行中的method,改为get执行一次,再改为Post再运行一次,看看结果: ~~~
';
'; //$_GET['pwd'] 得到表单 的值 $passwd = $_GET['pwd']; echo $passwd.'
'; ?> ~~~ 你可以输出值看一下结果。通过上面的实验我们知道了,通过$_GET这个外部变量,可以得到从表单输入的值。 大家在实验的时候会发现地址栏上面有一个特点: ![2015-08-02/55bd986d3052c](http://box.kancloud.cn/2015-08-02_55bd986d3052c.png) 根据上图,观察特点: 1. reg.php后面跟了一个?(问号) 2. 表单里面的username变在了地址栏里面 3. 表单面username的值输入的是liwenkai,在username后面跟了个=(等号)输入的值 4. username(名字)=liwenkai(值) 后面的密码是password(名字)=NoAlike(值),中间有&(and符)分开 密码是可见的,那怎么样保证安全呢。让我在注册的过程当中,密码不在地址栏里面被人看到呢? 这个时候我们需要使用到post传值,post传值是在地址栏中不可见的。 同样上面例子的代码我们进行修改,html代码如下: ~~~ ~~~ PHP的代码里面的$_GET全改为了$_POST: ~~~ 的值 $u = $_POST['username']; echo $u.'
'; //$_POST['pwd'] 得到表单 的值 $passwd = $_POST['pwd']; echo $passwd.'
'; ?> ~~~ ![2015-08-02/55bd9aa0388e5](http://box.kancloud.cn/2015-08-02_55bd9aa0388e5.png) 观察特点 reg.php后的?(问号)不见了。后面的username和password也不见了。那他怎么传递数据的呢? 他是通过我们看不见的浏览器的请求头文件传递的数据。所以在URL(网址)栏不可见。 注:附录中有如何通过火狐浏览器的firebug查看传递结果的演示过程。这一块都是HTTP协议规定的传送方式。 除此之外,我们还有$_REQUEST来接收数据。现在我们这样处理: 将php代码段中的$_POST全改为$_REQUEST,代码如下: ~~~ '; $passwd = $_REQUEST['pwd']; echo $passwd.'
'; ?> ~~~ 把网页user.html里面的这一行中的method,改为get执行一次,再改为Post再运行一次,看看结果: ~~~