2017-10-23 7 views
0

cpanel의 awstats 페이지를 표시하도록 구현하려고합니다. cpanel에 자동으로 로그인 한 다음 전달 된 도메인의 awstats를 표시하고 싶습니다. 나는이 다음 코드를 사용하지만, 로그인 페이지로 이동하여 awstats 페이지cpanel awstats가 자동으로 리디렉션합니다.

$cp_user = "<username>"; 
$cp_pwd = "<password>"; 
$url = "https://xxxx:2083/login"; 
$cookies = "cookies.txt"; 

$ch=curl_init(); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
//curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies); // Save cookies to 
curl_setopt($ch, CURLOPT_POSTFIELDS, "user=$cp_user&pass=$cp_pwd"); 
curl_setopt($ch, CURLOPT_TIMEOUT, 100020); 

$f = curl_exec($ch); 
$h = curl_getinfo($ch); 
curl_close($ch); 

if ($f == true and strpos($h['url'],"cpsess")) 
{ 
    // Get the cpsess part of the url 
$pattern="/.*?(\/cpsess.*?)\/.*?/is"; 
$preg_res=preg_match($pattern,$h['url'],$cpsess); 
} 

$token= $cpsess[1]; 
header('Locations: https://xxxx:2083'.$token.'/awstats.pl?config=<domain>&ssl=&lang=en'); 

이 문제 있나요 표시되지 않는 것 같다?

답변

0

나는이 질문이 오래된 것을 알고 있지만 아무도 응답하지 않았기 때문에 나는 대답을 버릴 것이라고 생각했다. 어쩌면 다른 사람도 이걸 시도하는 데 도움이 될 것입니다.

cPanel이 사용자의 IP 주소를 확인했기 때문에이 기능을 사용할 수없는 이유가 있습니다. cURL 스크립트는 IP가있는 서버에 있으며 로그인하려는 사용자는 고유 한 IP 주소를 사용합니다.

cPanel (x3) 로그인 양식을 확인해보십시오. IP 주소를 제출할 양식 필드도 없기 때문에 스푸핑을 방지하기 위해 서버 측에서만 검색됩니다.

$curl = curl_init(); 

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,0); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_VERBOSE, 1); 
curl_setopt($curl, CURLOPT_HEADER, 1); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($curl, CURLOPT_URL, $url); 
curl_setopt($curl, CURLOPT_POSTFIELDS, "user=myuser&pass=mypass"); 
$result = curl_exec($curl); 
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); 
$header = substr($result, 0, $header_size); 
$body = substr($result, $header_size); 
curl_close($curl); 

$header = str_replace("\r", '', $header); 
$header = explode("\n", $header); 

foreach ($header as $h) { 
    header ($h); 
} 
$parts = explode('URL=', $result); 
$session_parts = explode('/frontend/', $parts[1]); 
$token = $session_parts[0]; 

header('Location: http://ss.com:2082'.$token.'/awstats.pl?config=ss.com&ssl=&lang=pt'); 
+0

답장을 보내 주신 Ravi Chauhan에게 감사드립니다. 즉,이를 수행 할 방법이 없음을 의미합니다. –