使用php登录,然后执行脚本


Logging in with php, then executing a script

我被要求执行位于另一台服务器中的脚本,该脚本可以通过浏览器轻松执行(它有一个小的登录页面,然后通过访问url来执行脚本(在.cfm中))

我如何使用PHP来实现这一点?我正在考虑使用curl_exec访问该页面,但我不知道如何传递登录信息。这可能吗?

是的,这是可能的;通过向表单提交正常的POST数据,您可以非常容易地传递登录信息。我假设您有一个可以使用的名称/密码,所以您可以使用CURLOPT_POSTFIELDS传递这些信息。

如果您在登录后需要访问其他URL,则需要来自有效URL或更稳定的cookie的SID。

在初始curl_exec上,将CURLOPT_COOKIEJAR设置为任何空白文件(可以是tmp文件)。在随后的curl_exec上,适当地设置URL,并将CURLOPT_COOKIEFILE设置为同一文件。

您可以使用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是本文的关键方法。