扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
在获取表单数据中,最常用的自动全局变量是$_GET和$_POST,它们分别获取通过GET方法提交的数据和通过POST方法提交的数据。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网站空间、营销软件、网站建设、灵宝网站维护、网站推广。
比如一个名称为"user"的文本框表单控件,如果用GET方法提交,可以用 $_GET["user"]或者$_GET['user']
获取它提交的值。
方法1、最常见的方法是:$_POST['fieldname'];
说明:只能接收Content-Type:
application/x-www-form-urlencoded提交的数据
解释:也就是表单POST过来的数据
方法2、file_get_contents("php://input");
说明:
允许读取
POST
的
原始数据
。
和
$HTTP_RAW_POST_DATA
比起来,它给内存带来的压力较小,并且不需要任何特殊的
php.ini
设置。
php://input
不能用于
enctype="multipart/form-data"。
解释:
对于未指定
Content-Type
的POST数据,则可以使用file_get_contents(“php://input”);来获取原始数据。
事实上,用PHP接收POST的任何数据都可以使用本方法。而不用考虑Content-Type,包括
二进制文件
流也可以。
所以用方法二是最保险的方法
方法3、$GLOBALS['HTTP_RAW_POST_DATA'];
说明:
总是产生
$HTTP_RAW_POST_DATA
变量包含有原始的
POST
数据。
此变量仅在碰到未识别
MIME
类型的数据时产生。
$HTTP_RAW_POST_DATA
对于
enctype="multipart/form-data"
表单数据不可用
如果post过来的数据不是PHP能够识别的,可以用
$GLOBALS['HTTP_RAW_POST_DATA']来接收,
比如
text/xml
或者
soap
等等
解释:
$GLOBALS['HTTP_RAW_POST_DATA']存放的是POST过来的原始数据。
$_POST或
$_REQUEST
存放的是
PHP以key=value的形式格式化以后的数据。
但$GLOBALS['HTTP_RAW_POST_DATA']中是否保存POST过来的数据取决于centent-Type的设置,即POST数据时
必须显式示指明Content-Type:
application/x-www-form-urlencoded,POST的数据才会存放到
$GLOBALS['HTTP_RAW_POST_DATA']中
一般是用post获取提交的数据,如下实例:
form name="form1" method="post"
p用户名:input type="text" name="uname" //p
p密码:input type="password" name="upwd" //p
pinput type="submit" name="btn" value="提交" //p
?php
if ($_POST["btn"]){
echo '用户名:'.$_POST["uname"].'br';//三体教程
echo '密码:'.$_POST["upwd"];
}
?
/form
PHP 可以通过POST、GET方法获取到表单提交的数据
获取到的POST、GET是数组形式的值,需要通过键值来详细获取相应的值
比如: index.php 页面
下面是POST方法
form name="form1" method="post" action="index.php"
input type="text" name="contents" value=""
input type="submit" value="提交"
/form
?php
//获取表单提交的数据
$contents = $_POST['contents'];
echo $contents;
?
也可以是下面是GET方法
form name="form1" method="get" action="index.php"
input type="text" name="contents" value=""
input type="submit" value="提交"
/form
?php
//获取表单提交的数据
$contents = $_GET['contents'];
echo $contents;
?
POST相对于GET方法,更好一些,可以提交大量数据,以及更安全些。
一、用file_get_contents以get方式获取内容,需要输入内容为:
1、?php
2、$url='';
3、$html = file_get_contents($url);
4、echo $html;
5、?
二、用file_get_contents函数,以post方式获取url,需要输入内容为
1、?php
2、$url = '';
3、$data = array ('foo' = 'bar');
4、$data = http_build_query($data);
5、$opts = array (
6、'http' = array (
7、 'method' = 'POST',
8、 'header'= "Content-type: application/x-www-form-urlencoded\r\n" .
9、 "Content-Length: " . strlen($data) . "\r\n",
10、 'content' = $data
11、)
12、);
13、$ctx = stream_context_create($opts);
14、$html = @file_get_contents($url,'',$ctx);
15、?
三、用fopen打开url,以get方式获取内容,需要输入内容为
1、?php
2、$fp = fopen($url, 'r');
3、$header = stream_get_meta_data($fp);//获取信息
4、while(!feof($fp)) {
5、$result .= fgets($fp, 1024);
6、}
7、echo "url header: {$header} br":
8、echo "url body: $result";
9、fclose($fp);
10、?
四、用fopen打开url,以post方式获取内容,需要输入内容为
1、?php
2、$data = array ('foo2' = 'bar2','foo3'='bar3');
3、$data = http_build_query($data);
4、$opts = array (
5、'http' = array (
6、'method' = 'POST',
7、'header'= "Content-type: application/x-www-form-urlencoded\r\nCookie:cook1=c3;cook2=c4\r\n" .
8、"Content-Length: " . strlen($data) . "\r\n",
9、'content' = $data
10、)
11、);
12、$context = stream_context_create($opts);
13、$html = fopen(';id2=i4','rb' ,false, $context);
14、$w=fread($html,1024);
15、echo $w;
16、?
五、用fsockopen函数打开url,以get方式获取完整的数据,包括header和body,需要输入内容为
1、?php
2、function get_url ($url,$cookie=false)
3、{
4、$url = parse_url($url);
5、$query = $url[path]."?".$url[query];
6、echo "Query:".$query;
7、$fp = fsockopen( $url[host], $url[port]?$url[port]:80 , $errno, $errstr, 30);
8、if (!$fp) {
9、return false;
10、} else {
11、$request = "GET $query HTTP/1.1\r\n";
12、$request .= "Host: $url[host]\r\n";
13、$request .= "Connection: Close\r\n";
14、if($cookie) $request.="Cookie: $cookie\n";
15、$request.="\r\n";
16、fwrite($fp,$request);
17、while(!@feof($fp)) {
18、$result .= @fgets($fp, 1024);
19、}
20、fclose($fp);
21、return $result;
22、}
23、}
24、//获取url的html部分,去掉header
25、function GetUrlHTML($url,$cookie=false)
26、{
27、$rowdata = get_url($url,$cookie);
28、if($rowdata)
29、{
30、$body= stristr($rowdata,"\r\n\r\n");
31、$body=substr($body,4,strlen($body));
32、return $body;
33、}
34、 return false;
35、}
36、?
参考资料:
php-file_get_contents
给您一个思路,前台ajax提交表单数据,后台使用Json格式返回一个规范的json数据,前台other特殊可以使用success方法获取到返回的数据。
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流