来源:自学PHP网 时间:2018-02-09 16:45 作者: 阅读:次
[导读] PHP中文网教程为您提供《php入门教程之一周学会PHP》之 php常量和变量之外部变量 章节的在线实战教程供您学习,你可以进行笔记、提问、讨论和资料下载...
外部变量 PHP的外部变量是PHP 在使用过程中规定好的一些变量。这个变量的规定是这样规定的,就这样使用。 我们先讲解几个最常用的例子,我们将下面的表单命名为user.html: <html> <head> </head> <body> <form action="reg.php" method="get"> <input type="text" name="username" /> <input type="password" name="pwd" /> <input type="submit" value="提交" /> </form> </body> </html> 上现是很基础的一段HTML代码,在这段代码的主要意思是把用户和密码,采用get方法,将数据发送给reg.php(在上面代码的第6行规定的)。reg.php想办法接收用户传过来的username和pwd这两个值。 我们得出我们的第一个外部变量:$_GET。 我们写一个reg.php,用$_GET来接收值试试: <?php //$_GET后面加上中括号,将username作为字符串放在中括号里面,就得到了表单里面的<input type="text" name="username" /> 的值 $u = $_GET['username']; echo $u.'<br />'; //$_GET['pwd'] 得到表单<input type="text" name="username" /> 的值 $passwd = $_GET['pwd']; echo $passwd.'<br />'; ?> 你可以输出值看一下结果。通过上面的实验我们知道了,通过$_GET这个外部变量,可以得到从表单输入的值。 大家在实验的时候会发现地址栏上面有一个特点: 根据上图,观察特点: reg.php后面跟了一个?(问号) 表单里面的username变在了地址栏里面 表单面username的值输入的是root,在username后面跟了个=(等号)输入的值 username(名字)=root(值) 后面的密码是password(名字)=123123(值),中间有&(and符)分开 密码是可见的,那怎么样保证安全呢。让我在注册的过程当中,密码不在地址栏里面被人看到呢? 这个时候我们需要使用到post传值,post传值是在地址栏中不可见的。 同样上面例子的代码我们进行修改,html代码如下: <html> <head> </head> <body> <!-- 这一行method 对应的值改为了post --> <form action="reg.php" method="post"> <input type="text" name="username" /> <input type="password" name="pwd" /> <input type="submit" value="提交" /> </form> </body> </html> PHP的代码里面的$_GET全改为了$_POST: <?php //$_POST后面加上中括号,将username作为字符串放在中括号里面,就得到了表单里面的<input type="text" name="username" /> 的值 $u = $_POST['username']; echo $u.'<br />'; //$_POST['pwd'] 得到表单<input type="text" name="username" /> 的值 $passwd = $_POST['pwd']; echo $passwd.'<br />'; ?> 观察特点: 他是通过我们看不见的浏览器的请求头文件传递的数据。所以在URL(网址)栏不可见。 注:附录中有如何通过火狐浏览器的firebug查看传递结果的演示过程。这一块都是HTTP协议规定的传送方式。 除此之外,我们还有$_REQUEST来接收数据。现在我们这样处理: 将php代码段中的$_POST全改为$_REQUEST,代码如下: <?php $u = $_REQUEST['username']; echo $u.'<br />'; $passwd = $_REQUEST['pwd']; echo $passwd.'<br />'; ?> 把网页user.html里面的这一行中的method,改为get执行一次,再改为Post再运行一次,看看结果: <form action="reg.php" method="post"> 通过上面的实验你会发现$_REQUEST即可以接收get传值也可以接收post传值。 另外,我们总结一些外部变量,要求知识点的学习级别:了解含义,默写这个单词的写法和作用。
请再记一句话:以上这些变量全是超全局的。(以后讲解超全局的含义)。 注: 1.我们认为从用户输入过来的所有数据都不是可信的。本书的下半部份会专门讲解限制和过滤 2.在提交数据的时候,我们常用的方法有get和post。可以这样理解,get传值在url中可见,而post传值在url中不可见。 而post传值在url中不可见,是通过浏览器的header头部份将数据发送给指定服务器的。需要通过专门的工具才能看到Post发送的值为什么。你可以下载火狐浏览器(firefox)的插件(firebug)来查看。 火狐浏览器的图标: 打开firebug: 查看header头传递数据(网络,点击POST reg.php 选择Post),就看到了传递的名字和传递的数据值: 1.若真是使用get传密码,密码在地址栏里面显示过后。浏览器的历史记录会自动记录访问过的地址。恶意用户会,可以通过查看你的浏览器的历史记录,得到你曾经输入的密码。因此,不能使用get方式来作密码的传输方式。 get post request submit action |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com