2013-07-20 5 views
2

나는 PHP에서 curl로 joomla 2.5에 원격으로 액세스하려고합니다. 나중에 나도 새로운 콘텐츠를 만들고 싶지만, 지금은 로그인에 문제가 있습니다. 나에겐 새로운 컬이기 때문에 내가 뭘 잘못하고 있는지 모른다. 다음 메시지가 나타납니다 : "세션이 만료되었습니다. 다시 로그인하십시오." 여기까지 내 코드가 있습니다 :Joomla 2.5 로그인 curl

$url = "http://localhost/joomla25/administrator/"; 
$cookie = "tmp/cookie".time().".txt"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
curl_setopt($ch, CURLOPT_URL, $url); 
ob_start(); 
$page = curl_exec ($ch); 
curl_close ($ch); 
unset($ch); 

//get hidden inputs 
preg_match_all("(<input type=\"hidden\" name=\"return\" value=\"(.*)\" />)siU", $page,      $matches1); 
preg_match_all("(<input type=\"hidden\" name=\"(.*)\" value=\"1\" />)iU", $page,  $matches2); 
$return = trim($matches1[1][0]); 
$key = trim($matches2[1][0]); 

$param = 'username='.urlencode("admin")."&passwd=".urlencode("admin")."&lang=&option=com_login&task=login&return=".urlencode($return)."&".urlencode($key)."=1"; 

$fp = fopen($cookie,"w"); 
fclose($fp); 

//login 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); 
curl_setopt($ch, CURLOPT_TIMEOUT, 40); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); 

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_HEADER, TRUE); 
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($ch, CURLOPT_POST, TRUE); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $param); 
ob_start();  
$page2 = curl_exec ($ch); 
ob_end_clean(); 
curl_close ($ch); 
unset($ch); 

echo $page2; 

어떤 생각이 잘못된가요? 도와 주셔서 감사합니다!

답변

0

관리자가 로그인했을 가능성이 높습니다. 악의적 인 액세스를 막기 위해 설계되었습니다. admn에서 가져 오려면 인증을 처리하는 방법을 추가해야합니다. 아마도 사용할 수있는 http 인증 플러그인이있는 학생 프로젝트가 있습니다.

쿠키 기반 인증을 시도하고 있습니까?

왜 프런트 엔드에 가지 않습니까?

+0

당신은 나에게 아이디어를주었습니다. 내일 내가이 자동 로그인 플러그 인을 시도 할 것이다 http://extensions.joomla.org/extensions/access-a-security/authentication-cloud-based/10508 – warriorslo

0

사이트 루트에 쿠키 파일을 만듭니다. 이름을 cookie.txt로 지정하십시오. joomle에서 코드를 사용하지 마십시오.하지만 폼 토큰이 있다고 생각합니다. 허풍은 토큰 해시를받지 않고 양식을 제출할 수 없다는 것을 의미합니다.

로그인 할 때 로그인하면 url은 해시와 비슷합니까?

+0

나는 2 개의 숨겨진 폼으로부터 값을 얻는다. 그래서 나는 이것이 당신이 말하는 토큰이라고 생각한다. 약. 수동 로그인 후 url에 해시가 없습니다. – warriorslo