簡體   English   中英

php curl:返回登錄頁面

[英]php curl: return to login page

我一直在反對這個問題。 我正在嘗試登錄頁面並使用php和curl,但是有兩個問題,我懷疑它們之間存在關聯。

  1. Cookie文件保持為空(可能是因為登錄失敗?)

  2. 嘗試登錄后,該頁面返回到錯誤的登錄頁面:超出登錄時間。

首先,我轉到頁面以提取時間敏感變量:

// $ urlString =“ https://domain.com/portal/gas.nsf/Tool嗎?

OpenAgent&action=TNQuery&ordernumber=".$order."&tn=".$tn."&User=".$username."&lang=en_US";
    $loginUrl = 'https://domain.com/login';
    $randnum = rand(5, 15);
    $ckfile = tempnam ($cwd, "cookie.txt");



$ch = curl_init($loginUrl);

curl_setopt ($ch, CURLOPT_COOKIEJAR, $ckfile); //write
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);

$result = curl_exec ($ch);
curl_close($ch);
//var_dump($result);

$dom = new DOMDocument();
@$dom->loadHTML($result);
$xml = simplexml_import_dom($dom);

// extract time sensitive variable from the login page
$genData = $xml->xpath("//input[@name='pageGenTime']");
$epoch = $genData[0][value];

要發布的數據:

$postdata = array(
    'HiddenURI' => 'https://domain.com/loadPortal.htm',
    'AUTHMETHOD' => 'UserPassword',
    'pageGenTime' => $epoch,
    'LOCALE' => "en_US",
    'usr_name' => $username,
    'usr_password' => $password
);

cURL處理程序:

$ch = curl_init();
// Now login to the portal
curl_setopt_array($ch, array(
    CURLOPT_URL => $loginUrl,
    CURLOPT_USERAGENT => $agent,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $postdata,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_COOKIESESSION => true,
    CURLOPT_COOKIEFILE => 'cookie.txt',
    CURLOPT_COOKIEJAR => 'cookie.txt'
));
curl_exec($ch);

$exec = curl_exec($ch);
$info = curl_getinfo($ch); 
curl_close ($ch);

print_r返回:

Array
(
    [url] => https://domain.com/login
    [content_type] => text/html;charset=iso-8859-1
    [http_code] => 200
    [header_size] => 253
    [request_size] => 304
    [filetime] => -1
    [ssl_verify_result] => 0
    [redirect_count] => 0
    [total_time] => 0.08823
    [namelookup_time] => 2.7E-5
    [connect_time] => 3.1E-5
    [pretransfer_time] => 8.0E-5
    [size_upload] => 744
    [size_download] => 9992
    [speed_download] => 113249
    [speed_upload] => 8432
    [download_content_length] => 9992
    [upload_content_length] => 744
    [starttransfer_time] => 0.026516
    [redirect_time] => 0
    [certinfo] => Array
        (
        )

    [primary_ip] => 206.47.249.9
    [primary_port] => 443
    [local_ip] => [concealed]
    [local_port] => 41349
    [redirect_url] => 
)

很好,HTTP代碼200 ..但實際上沒有登錄。我在做什么錯? POST數據正確。

感謝您的寶貴時間!

找出問題所在,就是它不喜歡的cookie: CURLOPT_COOKIEFILE => 'cookie.txt', CURLOPT_COOKIEJAR => 'cookie.txt'更改為CURLOPT_COOKIEJAR => $randnum.'cookie.txt', CURLOPT_COOKIEFILE => $randnum.'cookie.txt'

現在正在編寫cookie,並且登錄成功。 var_dump($ exec)確實提供了我所需的額外調試。 謝謝@ mike-brant!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM