2014-02-06 3 views
0

로그인/비밀번호 스크립트를 성공적으로 처리 한 이전 컬 스크립트를 작성했습니다. 그러나 나는 깰 수없는 것에 직면하고있다. 여기 내 코드입니다 :특수 로그인 양식이있는 CURL

<? 
$login_email = "xxxx" ; 
$login_pass = "xxx" ; 
$cookie_file_path = "cookie3.txt"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php?php_action=IDENTIFICATION_form&type_ident=b2b'); 
curl_setopt($ch, CURLOPT_POSTFIELDS,'login='.urlencode($login_email).'&password='.urlencode($login_pass).'&php_action=IDENTIFICATION_login&type_ident=b2b'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); 
curl_setopt($ch, CURLOPT_REFERER, "http://89.31.145.108/athezza/"); 
$page = curl_exec($ch); 

var_dump($page); 
?> 

과 페이지는 다음과 같다 :

http://89.31.145.108/athezza/index.php?php_action=IDENTIFICATION_form&type_ident=b2b 

은 어떻게 든 내가 충분한 POST 요소를 보낼 관리 할 수 ​​없습니다, 내가 코드에 그들 모두를 식별 한 생각하더라도.

답변

1

먼저 CURLOPT_COOKIEFILE/CURLOPT_COOKIEJAR 옵션은 전체 경로 값으로 초기화해야합니다. "cookie3.txt"는 상대 경로입니다. 두 번째로 수동으로 POST 데이터를 작성하지 말고 대신 http_build_query()을 사용하십시오.

그래서 코드는 다음과 같아야합니다

$login_email = "xxxx"; 
$login_pass = "xxx"; 
$cookie_file_path = dirname(__FILE__)."/cookie3.txt"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php'); 
$data = array(
    'php_action' => 'IDENTIFICATION_login', 'type_ident' => 'b2b', 'login' => $login_email, 'password' => $login_pass 
); 

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); 
curl_setopt($ch, CURLOPT_REFERER, "http://89.31.145.108/athezza/"); 
$page = curl_exec($ch); 
1

을 로그인에 대한 데이터를 게시하기 전에 먼저 컬을 사용하여 로그인 페이지를 검색하면 파일에 대한 몇 가지 세션 쿠키를 가질 수 있도록.

$home = curl_init(); 
curl_setopt($home, CURLOPT_URL, 'http://89.31.145.108/athezza/index.php'); 
curl_setopt($home, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($home, CURLOPT_COOKIEJAR, $cookie_file_path); 
curl_setopt($home, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3"); 
curl_exec($home); 
curl_close($home); 

이제 데이터를 사용하여 POST 로그인 인증 정보를 사용하십시오.