$_POST 变量用于收集来自 method="post" 的表单中的值。从带有 POST 方法的表单发送的信息,对任何人都是不可见的(不会显示在浏览器的地址栏),并且对发送信息的量也没有限制。
先来看个最简单的实例
如我输入 你好,
post.php文件代码如下
输出结果就是
You are 你好
那么post如何获取像单选按钮呢,实例如下
radiopost.php文件
这样你选择那个就全出输那个的值,对于checkbox会有所不同,这个大家可以注意一下
checkboxpost.php文件
代码如下 | 复制代码 |
print_r($_POST['abcde']); |
输出的是个数组形式了
注:
通过 HTTP POST 发送的变量不会显示在 URL 中。
变量没有长度限制。
$_POST 与 php://input可以取到值,$HTTP_RAW_POST_DATA 为空
$_POST 以关联数组方式组织提交的数据,并对此进行编码处理,如urldecode,甚至编码转换。
php://input 可通过输入流以文件读取方式取得未经处理的POST原始数据
php://input 允许读取 POST 的原始数据。和 $HTTP_RAW_POST_DATA 比起来,它给内存带来的压力较小,并且不需要任何特殊的 php.ini 设置。php://input 不能用于 enctype="multipart/form-data"。
这里拓展一下post模拟方法
代码如下 | 复制代码 |
$flag = 0; //要post的数据 $argv = array( 'var1'=>'abc', 'var2'=>'你好吗'); //构造要post的字符串 foreach ($argv as $key=>$value) { if ($flag!=0) { $params .= "&"; $flag = 1; } $params.= $key."="; $params.= urlencode($value); $flag = 1; } $length = strlen($params); //创建socket连接 $fp = fsockopen("127.0.0.1",80,$errno,$errstr,10) or exit($errstr."--->".$errno); //构造post请求的头 $header = "POST /mobile/try.php HTTP/1.1"; $header .= "Host:127.0.0.1"; $header .= "Referer:/mobile/sendpost.php"; $header .= "Content-Type: application/x-www-form-urlencoded"; $header .= "Content-Length: ".$length.""; $header .= "Connection: Close"; //添加post的字符串 $header .= $params.""; //发送post的数据 fputs($fp,$header); $inheader = 1; while (!feof($fp)) { $line = fgets($fp,1024); //去除请求包的头只显示页面的返回数据 if ($inheader && ($line == "n" || $line == "")) { $inheader = 0; } if ($inheader == 0) { echo $line; } } fclose($fp); ?> |