2013-07-20 110 views
2

我試圖遠程訪問Joomla 2.5與捲曲在PHP中。後來我也想創建新內容,但現在我遇到了登錄問題。對我來說,捲毛是新的,所以我不知道我做錯了什麼。我收到以下消息:「您的會話已過期,請重新登錄。」這是我的代碼到目前爲止:Joomla 2.5登錄捲曲

$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 auth插件的學生項目。

您是否試圖執行基於cookie的身份驗證?

爲什麼不去前端?

+0

你給了我主意。明天我會嘗試這個自動登錄插件http://extensions.joomla.org/extensions/access-a-security/authentication-cloud-based/10508 – warriorslo

0

在網站根目錄下創建cookie文件。將其命名爲cookie.txt 我不在joomle上編碼,但我認爲有表單令牌。 Whitch的意思是,你不能提交表單而沒有獲得令牌散列。

當您登錄manualy並且您已經登錄,在url中就像哈希?

+0

我從2個隱藏表單中獲取值,所以我猜這是你正在說話的標記關於。手動登錄後,網址中沒有散列值。 – warriorslo