2011-12-20 3 views
2

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

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 ... как мне тогда преобразовать эти данные в массив и CURL в целевой домен?

ТНХ

ответ

1

На мой взгляд, лучший способ (метод) обеспечения для передачи имени пользователя и пароля, как HTTP HEADER аутентичности С 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

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

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

Стоит отметить, что когда 'CURLOPT_POSTFIELDS' является массивом,' Content-Type' будет 'multipart/form-data'. На практике это, вероятно, не имеет значения, но в любом случае. –

+0

Не знаете, что было вашим комментарием, но если вы действительно не хотите отправлять форму как «mutipart/form-data», вы можете сделать так: 'curl_setopt ($ ch, CURLOPT_POSTFIELDS, http_build_query (array ('username' => $ _POST ['username'], 'passwd' => $ _POST ['passwd']))); ' – piotrekkr

+0

Это было о« ничего », просто FYI. Как я уже сказал, вероятно, на практике не имеет никакого значения. –

1

Credential безопасности в стороне, если вы хотите быстрый ответ на заглавную тему «CURL + Passing $ _POST variables/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.

Смежные вопросы