php
回复内容:
$_GET、$_POST函数是在php程序里从GET或POST请求中获取传值,其中GET请求可以在地址栏看到传值,而POST请求将在entity-body(消息体)传值,地址栏看不到(可以通过抓包获取,所以不要觉得POST传值就比GET传值安全)
我写了一个小程序演示GET和POST传值的异同点。在第一行输入框输入内容,点击“test get”即对服务器发出GET请求并传值,而服务器也将返回确认信息;同理,在第二行输入框输入内容,点击“test post”发出POST请求并传值,也将看到返回的确认信息。
在浏览器中看到的页面如下:
HTML代码:
【服务器确认收到GET请求的传值】
在地址栏可以清楚看到value=rabbit,截图下方也有确认收到传值的信息。
再看看GET请求的HTTP数据包包文内容,需要传递的值“rabbit”就在请求URL里,作为参数传值(也就是你在地址栏看到的)。
【服务器确认收到POST请求的传值】
跟上面的GET传值不同的是POST请求传值并不体现在地址栏上(所以很多人都直觉地觉得POST传值比GET安全的原因)。
再看看POST请求的报文内容。通过直接读取数据包报文内容,可以看到请求URL并不包含任何传值的内容,这也就是为什么你在地址栏看不到的原因,而在下方消息体里,很清楚可以看到Value: rabbit。
虽然两种传值的方式差异甚大,但对于php程序里读取传值的方法大同小异,即通过$_GET、$_POST函数直接读取。
【附】测试程序代码: