收集和使用从http Curl(php)帖子返回的数据

时间:2015-04-15 10:04:30

标签: php curl

我需要协助使用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,只是以该格式返回。

1 个答案:

答案 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时,没有任何意义。