CURL + Передача переменных $ _POST / массив - PullRequest
2 голосов
/ 20 декабря 2011

У меня следующая ситуация:

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, «тело идет сюда»);

Как мне отправить имя пользователя / пароль? У меня будет другое время, когда мне нужно будет отправить больше данных, поэтому я предполагаю (и из моего чтения, что массив является лучшим) ...

В настоящее время мои данные передаются из JQUERY / HTML ... как мне затем преобразовать эти данные в массив и обернуть их в целевой домен?

ТНХ

Ответы [ 3 ]

1 голос
/ 20 декабря 2011

На мой взгляд, лучший способ (безопасный) способ передачи имени пользователя и пароля в качестве HTTP HEATER 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']
1 голос
/ 12 апреля 2012

За исключением защиты учетных данных, если вы хотите получить быстрый ответ на заглавную тему «CURL + Passing $ _POST variable / array» и вам не нужно беспокоиться о конфиденциальных данных, вы можете попробовать это:

$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.

1 голос
/ 20 декабря 2011

Попробуйте это:

curl_setopt($ch, CURLOPT_POSTFIELDS, array('username' => $_POST['username'], 'passwd' => $_POST['passwd']));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...