У меня есть следующая ситуация:
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 в целевой домен?
спасибо
На мой взгляд, лучший способ (безопасный) метод для передачи имени пользователя и пароля как 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']
Попробуй это:
curl_setopt($ch, CURLOPT_POSTFIELDS, array('username' => $_POST['username'], 'passwd' => $_POST['passwd']));
Если вы хотите получить быстрый ответ на заголовок «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.