2

PHPでcurlを使用して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;

何が間違っているのですか?手伝ってくれてありがとう!

4

2 に答える 2

0

管理者がログインを設定している可能性があります。不正アクセスを防止するように設計されています。admn から取得する場合は、認証を処理する方法を追加する必要があります。おそらく使用できるhttp認証プラグインを備えた学生プロジェクトがあります。

Cookie ベースの認証を行おうとしていますか?

フロントエンドに行ってみませんか?

于 2013-07-20T20:31:08.670 に答える
0

サイトのルートに Cookie ファイルを作成します。cookie.txt という名前を付けます。joomle ではコーディングしていませんが、フォーム トークンがあると思います。つまり、トークン ハッシュを取得せずにフォームを送信することはできません。

手動でログインしてログインすると、url にはハッシュのようなものがありますか?

于 2013-07-20T20:35:18.027 に答える