很多站长朋友们都不太清楚php如何测试post,今天小编就来给大家整理php如何测试post,希望对各位有所帮助,具体内容如下:
本文目录一览: 1、 PHP 判断请求是POST还是GET 2、 php判断当前请求是post还是get 3、 php 判断是否有get 或者post 4、 怎么查看php发出的post请求 5、 php 怎么POST获取数据? 6、 php 判断是post还是get PHP 判断请求是POST还是GET$_SERVER['REQUEST_METHOD']该变量中存储的是表单提交的方式。默认为get可用isset($_POST["表单名或字段名"]) 或者$_SERVER['REQUEST_METHOD']=="POST"判断 试过以下是无效的:用$_REQUEST_METHOD 来判断 ,如:<?phpif($_REQUEST_METHOD == “POST”){echo “post:”.$_POST['firstName'].”—”.$_POST["birthday"];
php判断当前请求是post还是get具体的判断方法如下:
如果是在不知道前台用什么提交的话,在后台只要判断一下哪个数组不为空就行了:
$method = !empty($_GET) ? 'GET' : 'POST';
echo($method);
ps:上面只是用来判断用什么方式提交的,顺便还可以映射一下,使用的话就更方便了
if(!empty($_POST)){
extract($_POST);
}else{
extract($_GET);
}
附带post、get的区别:
1、$_GET变量接受所有以get方式发送的请求,及浏览器地址栏中的?之后的内容
2、$_POST变量接受所有以post方式发送的请求,例如,一个form以method=post提交,提交后php会处理post过来的全部变量
php 判断是否有get 或者postisset()是判断这个变量是否定义,empty()是在这个变量已经定义的情况下(如果变量没定义,将报错variable is undefinded),判断这个变量是否为null,空字符串,空数组都被empty()视为空,返回true。举个例子,比如传过来一个表单$user('name'=>'tom','nickname'=>''),你想判断$use['nickname']是都已经被用户填写了数据,可以用empty()来判断,比如你的表单里面本来有password字段,但是第三方登录注册的用户暂时没有密码字段,这你就需要判断isset($user['password'])了,isset和empty有本质上的区别,
怎么查看php发出的post请求用PHP向服务器发送HTTP的POST请求,代码如下:
<?php
/**
* 发送post请求
* @param string $url 请求地址
* @param array $post_data post键值对数据
* @return string
*/
function send_post($url, $post_data) {
$postdata = http_build_query($post_data);
$options = array(
'http' => array(
'method' => 'POST',
'header' => 'Content-type:application/x-www-form-urlencoded',
'content' => $postdata,
'timeout' => 15 * 60 // 超时时间(单位:s)
)
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
return $result;
}
使用的时候直接调用上面定义的send_post方法:
$post_data = array(
'username' => 'username',
'password' => 'password'
);
send_post('网址', $post_data);
php 怎么POST获取数据?方法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']中
php 判断是post还是get用$_REQUEST_METHOD 来判断 ,如:
<?php
if($REQUEST_METHOD == “POST”)
{
echo “post:”.$_POST['firstName'].”—”.$_POST["birthday"];
}else if($REQUEST_METHOD == “GET”)
{
echo “GET:”.$_GET['firstName'].”######”.$_GET['birthday'];
}
?>
关于php如何测试post的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。
查看更多关于php如何测试post的简单介绍的详细内容...