Curl Redirect для моего собственного веб-сайта, а не только для пользователей, которые ссылаются на целевой веб-сайт. - PullRequest
1 голос
/ 11 января 2012

Я пытаюсь получить некоторую информацию с веб-страницы, требующей входа в систему.Я использую PHP / cURL, чтобы разместить имя пользователя и пароль на странице входа на целевом веб-сайте.Веб-сайт использует относительные ссылки для перенаправления прошедших проверку пользователей в область только для членов.

Я получаю 200 OK и вижу, что я успешно прошел проверку подлинности.Моя проблема заключается в том, что я не знаю, как заставить его перейти к фактической области участника на целевом веб-сайте (targetwebsite.com/memberarea) в отличие от mywebsite.com/memberarea.Есть ли способ указать базовый домен целевого сайта в cURL?Не могли бы вы также сказать мне, если я делаю что-то не рекомендуется в следующем коде.

Вот что я делаю ...

<?php
// INIT CURL
$ch = curl_init();

// SET URL FOR THE POST FORM LOGIN
curl_setopt($ch, CURLOPT_URL, 'https://targetwebsite.com/login.php');
curl_setopt($ch, CURLOPT_HEADER, 1);

// ENABLE HTTP POST
curl_setopt ($ch, CURLOPT_POST, 1);

// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'username=someuser&password=mypassword');
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');
$header[0] = "Accept: text/xml,application/xml,application/xhtml+xml,"; 
$header[0] .= "text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5"; 
$header[] = "Cache-Control: max-age=0"; 
$header[] = "Connection: keep-alive"; 
$header[] = "Keep-Alive: 300"; 
$header[] = "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7"; 
$header[] = "Accept-Language: en-us,en;q=0.5"; 
$header[] = "Pragma: "; // browsers keep this blank. 

curl_setopt($ch, CURLOPT_HTTPHEADER, $header); 
curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com'); 
curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate'); 
curl_setopt($ch, CURLOPT_AUTOREFERER, true); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_TIMEOUT, 10); 


// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

# Setting CURLOPT_RETURNTRANSFER variable to 1 will force cURL
# not to print out the results of its query.
# Instead, it will return the results as a string return value
# from curl_exec() instead of the usual true/false.
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 0);

// EXECUTE 1st REQUEST (FORM LOGIN)
$store = curl_exec ($ch);


// SET FILE TO DOWNLOAD
curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_URL, 'https://targetwebsite.com?memberarea+welcome+UserFirstName');


// EXECUTE 2nd REQUEST (FILE DOWNLOAD)
$content = curl_exec ($ch);

//echo $store;

// CLOSE CURL
curl_close ($ch); 


?>

1 Ответ

0 голосов
/ 12 января 2012

Получаете ли вы местоположение: перенаправление?Если это так, используйте CURLOPT_FOLLOWLOCATION

Кроме того, Christian Sciberras рекомендует установить для MAXREDIRECTS значение не менее 3. Proof

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...