войти на сайт с помощью curl - PullRequest
0 голосов
/ 30 декабря 2010

Я хочу войти на сайт, используя curl, а затем получить полученную страницу. например, я хочу запустить скрипт и посмотреть мою почтовую страницу Yahoo. я написал что-то вроде этого.

//set POST variables
$url = 'http://localhost/test/login';
$fields = array(
                        'username'=>'abc',
                        'password'=>'def'
                );
$fields_string='';
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
rtrim($fields_string,'&');

//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST,count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

//execute post
$result = curl_exec($ch);

//close connection
curl_close($ch);
echo $result;

login.php

echo $_POST['username'];
echo $_POST['password'];

header('Location: http://www.xyz.com/');

скрипт публикует данные в login.php, но содержимое xyz.com не отображается.

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Заходя на сайт, вы обычно генерируете идентификатор сеанса, который сохраняется в сеансе. Войдя в систему с помощью CURL, вы не сохранили этот файл cookie в своем браузере клиентов, возможно, вы вошли в систему на своем сервере, но нет возможности войти в систему с помощью клиента.

И, конечно, измените эту строку:

echo $_POST['username'];
echo $_POST['password'];

header('Location: http://www.xyz.com/');

к следующему:

header('Location: http://www.xyz.com/');
echo $_POST['username'];
echo $_POST['password'];

или используйте ob_start (); в начале вашего сценария.

... что не имеет смысла, потому что вы никогда не увидите этот контент;)

1 голос
/ 30 декабря 2010

Ваша проблема в двух echo вызовах до вызова header.

В соответствии с документацией header должен быть вызван перед отправкой любого другого вывода.

http://php.net/manual/en/function.header.php

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