[英]php curl: return to login page
我一直在反對這個問題。 我正在嘗試登錄頁面並使用php和curl,但是有兩個問題,我懷疑它們之間存在關聯。
Cookie文件保持為空(可能是因為登錄失敗?)
嘗試登錄后,該頁面返回到錯誤的登錄頁面:超出登錄時間。
首先,我轉到頁面以提取時間敏感變量:
// $ 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.