简体   繁体   中英

Joomla 2.5 login with curl

I'm trying remotely access joomla 2.5 with curl in php. Later I want to create new content too, but for now i have troubles with login. For me is curl new so I don't know what am I doing wrong. I get this message: "Your session has expired. Please log in again.". Here is my code so far:

$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;

Any idea what is wrong? Thanks for help!

The administrator is probably putting up the login. It's designed to prevent abuseive access. YOu need to add a way to handle authentication if you want to pull from admn. There's a student project with a http auth plugin that you can use perhaps.

Are you trying to do cookie based authentication?

Why not go to the front end?

Create cookie file on site root. Name it as cookie.txt I dont code on joomle, but i think there is form token. Whitch means, you cant submit form without getting token hash.

When you login manualy and you are logged in, in url is something like hash?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM