PHP cURL发布和显示外部页面

时间:2015-02-27 16:34:28

标签: php post curl

我正在尝试重建当前向用户提供表单的网站,用户点击按钮发布到根据输入的数据执行某些计算的页面,并让他们点击另一个按钮发布到支付供应商使用输入的非敏感数据提供安全支付表格。

我正在尝试执行以下操作。我写了一个页面,显示客户数据输入的表单,他们点击提交按钮,发布到我网站上的php文件,我进行所需的计算,然后使用Curl发布到网站。

我过去只使用cURL发布到网站,检查流程状态是否良好,然后继续。我可以使用Curl发布到浏览器中的其他页面,就像我直接向表单提交表格一样吗?

摘要:

  1. 我可以在Curl中发布一个表单,让它表现得就像我从HTML表单发布,并将操作设置为外部网站网址。

  2. 如果是这样,我错过了什么?

  3. 以下是php文件中cUrl调用的代码:

    $fields = array(
        'x_invoice_num' => urlencode($x_invoice_num),
        'x_phone' => urlencode($x_phone),
        'x_email' => urlencode($x_email),
        'x_ship_to_address' => urlencode($x_ship_to_address),
        'x_first_name' => urlencode($x_first_name),
        'x_last_name' => urlencode($x_last_name),
        'x_address' => urlencode($x_address),
        'x_city' => urlencode($x_city),
        'x_state' => urlencode($x_state),
        'x_zip' => urlencode($x_zip),
        'x_amount' => urlencode($x_amount),
        'x_fp_hash' => urlencode($x_fp_hash),
        'x_fp_sequence' => urlencode($x_fp_sequence),
        'x_fp_timestamp' => urlencode($x_fp_timestamp),
        'x_login' => urlencode($x_login),
        'x_show_form' => urlencode($x_show_form),
        'x_description' => urlencode($x_description)
    );
    
            //url-ify the data for the POST
           $fields_string="";
           foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
           rtrim($fields_string, '&');
    
    
    
    
    
           //set the url, number of POST vars, POST data
    
           $ch = curl_init();
           curl_setopt($ch, CURLOPT_URL, $postURL);
           curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string);
           curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
           curl_setopt($ch, CURLOPT_HEADER, FALSE);
           curl_setopt($ch, CURLOPT_POST, TRUE);
           curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
           curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, TRUE);
           curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    
           $headers = array();
       $headers[] = "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5";
       $headers[] = "Accept-Language: en-us,en;q=0.5";
       $headers[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7";
       curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    
           //execute post
           //curl_exec($ch);
    
           $curl_result = curl_exec($ch);
           $OK = strpos($curl_result, 'OK');
           $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    
    
           curl_close($ch);
    

1 个答案:

答案 0 :(得分:1)

让用户重定向到安全支付提供商的想法是他/她将输入一些敏感的支付信息(CC,到期,......)进行处理。我不认为你在“$ fields”数组中有这个信息可以直接POST到提供者。

一旦付款成功并完成,您想要查看的内容可能是来自提供商网站的回调。