сделать перенаправление клиента с CURL - PullRequest
0 голосов
/ 19 июля 2011

вот что я пытаюсь сделать:

  • передать форму с оператором curl, используя переменную POST => good
  • после того, как я зашел на сайт, перейдите на любую нужную мне страницу => не хорошо

вот мой сценарий:

$postData = array(
    'login' => 'john',
    'pwd' => 'doe'
);

$array_url = array('3109');

foreach ($array_url as $k => $i) {
    echo $i."<br>";
    $c = curl_init();

    $url = "http://mywebsite/index.php?ok=1";

    curl_setopt($c, CURLOPT_URL, $url);
    curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($c, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($c, CURLOPT_POSTFIELDS, $postData);

    $output = curl_exec($c);
    if ($output === false) {
        trigger_error('Erreur curl : ' . curl_error($c), E_USER_WARNING);
    }
    else {

        var_dump($output);
        echo $output;
    }
    curl_close($c);
}

Как мне этого добиться?

edit: Если я пытаюсь получить страницу, к которой я хотел бы обратиться, я получаю перенаправление на форму входа, потому что я не могу установить логин / пароль для пары с этой страницы, мне нужно получить контрольный пароль один ...

Thx

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Вам необходимо определить, как удаленная страница выполняет аутентификацию сеансов. Большинство сайтов делают это с помощью куки. После того как вы вошли в систему, любые последовательные запросы страниц передают cookie, удаленный сайт проверяет cookie, если он действителен и не просрочен, он пропускает вас, в противном случае он возвращает вас обратно на страницу входа (или выдает ошибка или что-то еще).

Так что, если это cookie, вам нужно сохранить возвращенный cookie и использовать его в любых последующих запросах curl.

0 голосов
/ 19 июля 2011

Попробуйте использовать Zend_Http_Client - это часть Zend Framework. Он может хранить куки и отправлять их при каждом следующем запросе. Вот пример из документации :

// To turn cookie stickiness on, set a Cookie Jar
$client->setCookieJar();

// First request: log in and start a session
$client->setUri('http://example.com/login.php');
$client->setParameterPost('user', 'h4x0r');
$client->setParameterPost('password', '1337');
$client->request('POST');

// The Cookie Jar automatically stores the cookies set
// in the response, like a session ID cookie.

// Now we can send our next request - the stored cookies
// will be automatically sent.
$client->setUri('http://example.com/read_member_news.php');
$client->request('GET');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...