使用GET传递数据、$_GET[]取得数据
今天学习了一个“新的”参数:GET。对,就是之前表单里提到的那个。
<form method="get" action="dosth.php"> <input type="radio" name="agreeornot" value="agree" /> Agree <input type="radio" name="agreeornot" value="disagree" /> Disagree <br /> <input type="submit" name="submit" value="Confirm" /> </form>
这是一个采用get方式的表单,这样看和post表单并没有什么区别:只是method由post变成了get。
包括他们在网页上表现出来的样子都是一模一样的(注意下图对比)。
你能区分哪个是POST那个是GET吗?其实我也不能,因为他们本来表现出来就一模一样!(所以我这里只用了一张截图 :D 。)
其实他们的区别在这里:
<--采用GET的链接--> http://somewebsite.com/dosth.php?agreeornot=agree&submit=Confirm <--采用POST的链接--> http://somewebsite.com/dosth.php
采用GET方法将数据直接以URL的形式传递到处理数据的页面,而采用POST方法将会把数据打包后传递到处理数据的页面。
GET方法传递数据的量可以看作是有限的,因为URL的长度有限。
而POST方法传输数据看以看作是无限的,因为他是打包后进行传输。
GET方法是明文传递,POST暂时可以看作是秘密传递。
那既然POST这么好,那我们还需要用GET吗?答案是肯定的。
因为POST方法必须伴随表单出现,事实上有很多地方是不需要采用表单这种繁琐的方式来传输简单的数据,我们使用GET就可以了。
注意观察之前“Confirm”后得到的结果的不同:在GET的链接里有 “?agreeornot=agree&submit=Confirm”,这个“?”之后的就是GET开始传递的数据啦。
所以我们把一个链接改写为这种形式就不需要页面中充斥繁琐的表单了:
... <p>Do you Agree with me?</p> <p> <a href="dosth.php?agreeornot=agree">AGREE</a> <a href="dosth.php?agreeornot=disagree">DISAGREE</a> </p> ...
这样我们就得到了下图:
这时我们点击AGREE和DISAGREE的效果和使用表单勾选再confirm的效果是一样的了。
那我们怎样来接收这个传递的参数呢?很简单,使用 $_GET[]变量即可。
# test.php <?php if( isset( $_GET['agreeornot'] ) ){ if( $_GET['agreeornot'] == 'agree' ){ echo '<p>Thank you!</p>'; } else if ( $_GET['agreeornot'] == 'disagree' ){ echo '<p>Thanks</p>'; } else { echo '<p>Page Error</p>'; } } else { echo '<p>Page Error 2</p>'; } ?>
把上面的代码写入test.php进行测试。
当我们直接打开 test.php 不给任何参数的时候,他应当显示“Page Error 2”,因为没有检测到参数的存在。
当我们传参Agree、disagree的情形分别如下:
当我们给参数agreeornot增加一个不存在的选项的时候,会显示“Page Error”
会用了吗?举一反三哦~