Войдите в систему с помощью php, затем выполните скрипт - PullRequest
1 голос
/ 12 марта 2012

Мне было предложено выполнить сценарий, расположенный на другом сервере, сценарий можно легко выполнить через браузер (он имеет небольшую страницу входа в систему, а затем, посетив URL-адрес, выполняется сценарий (в .cfm))

Как я могу сделать это с PHP? Я подумываю использовать curl_exec для посещения страницы, но я не знаю, как мне пройти вход в систему ... Это вообще возможно?

Ответы [ 2 ]

3 голосов
/ 12 марта 2012

Да, это возможно;Вы можете очень легко пройти регистрацию, отправив обычные данные POST в форму.Я предполагаю, что у вас есть имя / пароль, который вы можете использовать, так что вы можете просто передать их с помощью CURLOPT_POSTFIELDS.

Если вам нужно посетить дополнительный URL после входа в систему, вам нужноSID либо из действующего URL, либо более стабильно из cookie.

В начальном curl_exec установите CURLOPT_COOKIEJAR для любого пустого файла (это может быть файл tmp).В последующем curl_exec установите соответствующий URL-адрес и установите CURLOPT_COOKIEFILE в этот же файл.

1 голос
/ 12 марта 2012

Вы можете использовать такую ​​библиотеку, как HTTP_Request2 .

<?php
require_once 'HTTP/Request2.php';

$request = new HTTP_Request2('http://Your site/', HTTP_Request2::METHOD_POST);
// This will set credentials for Digest auth
$request->setAuth('user', 'password', HTTP_Request2::AUTH_DIGEST);

try {

    $response = $request->send();
    if (200 == $response->getStatus()) {
        echo $response->getBody();
    } else {
        echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
         $response->getReasonPhrase();
    }
} catch (HTTP_Request2_Exception $e) {
    echo 'Error: ' . $e->getMessage();
}
?>

$request->setAuth - это ключевой метод здесь.

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