CURL +传递$ _POST变量/数组

时间:2011-12-20 08:22:32

标签: php jquery curl

我有以下情况:

if(isset($_POST['thisvalue'])) {

$username = $_POST['username'];
$passwd = $_POST['passwd'];

$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,            'http://www.domain.com/scripts/curl/index_general.php' );
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt($ch, CURLOPT_POST,           true );
    curl_setopt($ch, CURLOPT_REFERER,            'http://www.domain.com.au' );
    curl_setopt($ch, CURLOPT_POSTFIELDS,     "body goes here" ); 
    curl_setopt($ch, CURLOPT_HTTPHEADER,     array('Content-Type: text/plain')); 
$result = curl_exec($ch);
curl_close($ch);
echo $result;

我可以通过“http://www.domain.com/scripts/curl/index_general.php”返回一个值。

我需要知道完成这条线的最佳方法: curl_setopt($ ch,CURLOPT_POSTFIELDS,“body goes here”);

我应该如何发送用户名/密码。 我还有其他时间需要发送更多数据,所以我假设(并且从我的阅读中得知数组是最好的)......

目前我的数据是从JQUERY / HTML传递的...我应该如何将这些数据转换为数组并将CURL转换为目标域?

THX

3 个答案:

答案 0 :(得分:1)

试试这个:

curl_setopt($ch, CURLOPT_POSTFIELDS, array('username' => $_POST['username'], 'passwd' => $_POST['passwd']));

答案 1 :(得分:1)

在我看来,将用户名和密码作为HTTP HEADER AUTHENTICATION with CURL传递的最佳方式(安全)方法。

if(isset($_POST['thisvalue'])) {

$username = $_POST['username'];
$passwd = $_POST['passwd'];

$data = array('serialno' => '12345');    

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.domain.com/scripts/curl/index_general.php');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt($ch, CURLOPT_POST, true );
curl_setopt($ch, CURLOPT_USERPWD,'username:password'); // set your username and password
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_REFERER,'http://www.domain.com.au');
curl_setopt($ch, CURLOPT_POSTFIELDS,$data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain')); 
$result = curl_exec($ch);
curl_close($ch);
echo $result;
}

在index_general.php

您可以访问http用户名和密码

$_SERVER['PHP_AUTH_USER'] and $_SERVER['PHP_AUTH_PW']

答案 2 :(得分:1)

除了凭证安全性,如果您想快速回答“CURL +传递$ _POST变量/数组”的标题主题而不需要担心敏感数据,可以试试这个:

$post_fields = '';
foreach ( $_POST as $a => $b ) { $post_fields .= $a.'='.$b.'&'; }
$post_fields = substr( $post_fields, 0, -1 );

curl_setopt( $ch, CURLOPT_POSTFIELDS, $post_fields );

然后您不需要手动枚举任何可能的POST字段。