2012-03-12 91 views
1

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

我该怎么用PHP做这件事?我正在考虑使用curl_exec来访问该页面,但我不知道如何通过登录。这甚至可能吗?

回答

3

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

如果您在登录后需要访问附加网址,您需要通过有效网址获取SID,或者从Cookie更稳定地获取SID。

在最初的curl_exec上设置CURLOPT_COOKIEJAR为任何空白文件(它可以是一个tmp文件)。在随后的curl_exec上,正确设置URL并将CURLOPT_COOKIEFILE设置为相同的文件。

1

您可以使用库如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是这里的关键方法。