我需要协助使用http帖子后返回的数据。 以下是我将当前数据发布到特定网站的当前邮政编码
<?php
//extract data from the post
extract($_POST);
//set POST variables
$url = 'https://test.com';
$fields = array(
'surname' => urlencode($surname),
'first_name' => urlencode($first_name),
'dob' => urlencode($dob),
'email' => urlencode($email),
'home_phone' => urlencode($home_phone),
'mobile_phone' => urlencode($mobile_phone),
'work_phone' => urlencode($work_phone),
'postcode' => urlencode($postcode),
'leadid' => urlencode(123),
'affid' => urlencode(123),
'subid' => urlencode(123),
'bank_acno' => urlencode($bank_acno),
'bank_sort' => urlencode($bank_sort),
'amount_required' => urlencode($amount_required),
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
?>
我得到2个回复之一 - {result:true}或{result:false}
我需要知道如何执行以下操作:
当我得到{result:true}时,我想重定向到网址&#34; http://thisurl.com&#34; 当我得到{result:false}时,我想返回一个回复&#34;拒绝&#34;
请注意,响应不是json,只是以该格式返回。
答案 0 :(得分:1)
您需要检查$result
变量包含的内容,然后根据情况制作重定向或显示被拒绝的消息:
<?php
//extract data from the post
extract($_POST);
//set POST variables
$url = 'https://test.com';
$fields = array(
'surname' => urlencode($surname),
'first_name' => urlencode($first_name),
'dob' => urlencode($dob),
'email' => urlencode($email),
'home_phone' => urlencode($home_phone),
'mobile_phone' => urlencode($mobile_phone),
'work_phone' => urlencode($work_phone),
'postcode' => urlencode($postcode),
'leadid' => urlencode(123),
'affid' => urlencode(123),
'subid' => urlencode(123),
'bank_acno' => urlencode($bank_acno),
'bank_sort' => urlencode($bank_sort),
'amount_required' => urlencode($amount_required),
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string, '&');
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
$result_true = 'true';
$check_true = strpos($result, $result_true);
if ($check_true !== false) {
header('Location: http://url.com');
die;
}
$result_false = 'false';
$check_false = strpos($result, $result_false);
if ($check_false !== false) {
echo "Denied";
}
在您使用的代码中:
curl_setopt($ch,CURLOPT_POST, count($fields));
但是在php.net手册中:
CURLOPT_POST:TRUE执行常规HTTP POST。这个POST是正常的 application / x-www-form-urlencoded kind,最常用于HTML 形式。
因此计算字段不是正确的方法,它可能是TRUE或FALSE而不是计数。当然,如果$fields
数组为空,则结果为0
,等于FALSE
,或者如果它为1则为1
{{{ 1}})但是当计数结果大于TRUE
时,没有任何意义。