0
我使用curl傳遞cookie有一個相當有趣的問題。我有一個腳本登錄到我公司的排隊系統,然後從成功登錄中抓取cookie。之後,腳本會回憶這些cookie來查詢系統並解析輸出。該腳本完美地在localhost上運行,但將其遷移到公司的服務器上卻不行。它正在創建cookie文件,但所有文件大小= 0字節。我認爲這是一個權限問題,但我沒有看到(我竟然chmod 777文件)。最奇怪的是我可以使用fwrite()添加到任何文件。我不確定從哪裏開始調試,所以我希望你們中的一個人可能有一個想法。下面是相關的代碼片段:PHP CURLOPT_COOKIEFILE/CURLOPT_COOKIEJAR似乎沒有在遠程服務器上工作
[syntax=php]
main class{
include_once('../shared_data/cquserdata.php');
$ckfile_name = tempnam('temp/', sha1('CqAuth'));
$ckfile = fopen($ckfile_name, 'w') or die('Derp...open...nooooooooo!');
cqUserData::cqLogin($credentials['username'],$credentials['pass'],$ckfile);
(skip a few thousand lines)
$puname = sanitizers::sanitize($_POST['puname']); //sanitize post input
$manager = cqUserData::getManager($puname, $ckfile);
}
cqLogin($username, $pass, $ckfile){
$url = 'URL';
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_USERAGENT => 'uuberness',
CURLOPT_COOKIEJAR => $ckfile,
CURLOPT_POSTFIELDS => "redirect=&username=$username&password=$pass" //derp
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
return true;
}
getManager($user,$ckfile){
$url = "URL"';
$options = array(
CURLOPT_RETURNTRANSFER => true, // return web page
CURLOPT_HEADER => false, // don't return headers
CURLOPT_FOLLOWLOCATION => true, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_AUTOREFERER => true, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_SSL_VERIFYPEER => 0,
CURLOPT_USERAGENT => 'uuberness',
CURLOPT_COOKIEFILE => $ckfile,
CURLOPT_POSTFIELDS => "username=$user&usernamecheck=1" //derp
);
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$content = curl_exec($ch);
$err = curl_errno($ch);
$errmsg = curl_error($ch);
$header = curl_getinfo($ch);
curl_close($ch);
$header['errno'] = $err;
$header['errmsg'] = $errmsg;
$header['content'] = $content;
$header['data'] = $data;
$doc = new DOMDocument;
$doc->loadHTML($content);
$doc->preserveWhiteSpace = false;
$tables = $doc->getElementsByTagName('table');
foreach($tables as $table){
***Code excluded, loops rows to find correct, then defines manager**
$manager = $manager[1];
}
return $manager;
}
[/syntax]
在這一點上,我想它可能是一個好主意,試圖解析只爲餅乾頭,並與他們合作....但就是少比理想。任何建議,不勝感激:D
謝謝!