컬을 사용하여 쿠키를 전달하는 데 다소 흥미로운 문제가 있습니다. 내 회사의 대기열에 로그인하는 스크립트를 작성한 다음 성공적인 로그인에서 쿠키를 가져옵니다. 나중에 스크립트는 시스템에 쿼리하고 출력을 구문 분석하기 위해 쿠키를 회수합니다. 이 스크립트는 localhost에서 완벽하게 작동하지만 회사의 서버로 마이그레이션하지는 않습니다. 그것은 쿠키 파일을 만들지 만 모든 파일 크기 = 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
고마워요!