我们在前面的内容“变量”里简单提到过【预定义变量】,而现在我们要进行数据传输就需要用到两个预定义变量:【$_POST】跟【$_GET】。
本期要点:数据是怎么从前端发送到后端的?
get 与 post 传送数据有什么区别?
$_POST 传送数据
$_POST 变量是一个数组,属于 PHP 所提供的预定义变量。
$_POST 变量用于收集来自 method=”post” 的表单中的值。
例:
HTML 代码:
我们把之前 三小时学会网页设计 中的代码简化一下:
数据发送与接收保存文件名为 index.html 放在集成环境的指定目录下。windows 系统的 xampp 默认是在 xamp\htdocs\ 目录
mac 系统自带环境默认在/Library/WebServer/Documents/ 目录
不太了解的可以去看一下前几期的内容: PHP丨第一个PHP程序 中的【PHP文件代码放在哪】及【如何测试代码】章节。
PHP 代码:<?php
var_dump( $_POST);
?>
保存文件名为 formsave.php 同样也放在集成环境的指定目录下。
测试效果:
在浏览器地址栏中中输入 localhost/index.html 或 127.0.0.1/index.html (注意一定要在浏览器地址栏输入,不能直接双击打开 HTML文件):
在输入框里随便填写一些内容,点击“提交”按钮:
浏览器中所打印出来的信息:
如果我们需要取 HTML 中 aa 的值,我们只需要:
var_dump( $_POST['aa');
?>
效果:
总结:HTML 表单必须有 name 属性
HTML 表单必须包含在 form 标签中,必须有 action ,必须有method='post'
$_GET 传送数据
$_GET 也是 PHP 所提供的预定义变量。用于收集来自 method=”get” 的表单中的值。
$_GET 传参的方式有两种:通过 a 标签点击,或直接修改网址。
例:
HTML 代码:
还是之前的代码,只是把 post 改为 get
数据发送与接收PHP 代码:
之前的 $_POST 也都改为 $GET<?php
var_dump( $_GET);
?>
测试效果:
测试效果也是一样的
唯一不同的就是它会在地址栏把我们所输入的内容也显示出来了。
用修改网址的方式发送数据:
也就是说,我们可以不通过输入框,直接在网址栏就可以向后台传输信息了。
比如,我们直接在浏览器中输入:http://localhost/formsave.php
然后直接在网址后面加上:?aa=12345&bb=67890
或者我们输入更多:?aa=12345gshgkh&bb=67890las;hga&cc=8y3hkgh
在使用 $_GET 变量时,所有的变量名和值都会显示在 URL 中。
所以在发送密码或其他敏感信息时,不应该使用这个方法。
不过,正因为变量显示在 URL 中,因此可以在收藏夹中收藏该页面。在某些情况下,这是很有用的。
$_POST 与 $_GET 的区别前者可以在网址的栏目上是看不到传送的内容的,而后者呢是是可以在网址的栏目是看到内容的。
Get 方式需要使用 Request.QueryString 来取得变量的值;而 Post 方式通过 Request.Form 来访问提交的内容。
前者传输的内容的大小比较大,安全性比较高,执行效率稍微低一些;后者的上传大小比较小,安全性低,执行的效率会较高一点。
Get 方式提交数据,会带来安全问题,比如一个登陆页面,通过 Get 方式提交数据时,用户名和密码将出现在 URL 上,如果页面可以被缓存或者其他人可以访问客户这台机器,就可以从历史记录获得该用户的帐号和密码,所以表单提交建议使用 Post 方法;Post 方法提交的表单页面常见的问题是,该页面如果刷新的时候,会弹出一个对话框。This is not the end.It is not even the beginning of the end.But it is,perhaps,the end of the beginning.
更多分享