3

我正在尝试通过 curl 在 PHP 中登录 Joomla 1.6/3.0,但没有成功。

我尝试了 joomla 1.5 的方法

$uname = "id";
$upswd = "pswd";
$url = "http://www.somewebpage.com";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE );
curl_setopt($ch, CURLOPT_COOKIEJAR, './cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, './cookie.txt');
curl_setopt($ch, CURLOPT_HEADER, FALSE );
$ret = curl_exec($ch);
if (!preg_match('/name="([a-zA-z0-9]{32})"/', $ret, $spoof)) {
    preg_match("/name='([a-zA-z0-9]{32})'/", $ret, $spoof);
}

// POST fields
$postfields = array();
$postfields['username'] = urlencode($uname);
$postfields['passwd'] = urlencode($upswd);
$postfields['lang'] = '';
$postfields['option'] = 'com_login';
$postfields['task'] = 'login';
$postfields[$spoof[1]] = '1';
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
$ret = curl_exec($ch);

但它是禁止展示的

4

1 回答 1

1

Joomla!通常从网络浏览器将发送一个令牌,以确保表单是从浏览器发布的(而不是像您尝试做的那样从外部某个地方发布)。

如果它不是从浏览器发布的,则会出现类似“最近的请求被拒绝,因为它包含无效的安全令牌”之类的错误。请刷新页面并重试。

您可能想寻找一个支持您正在尝试做的事情的认证插件。例如自动登录插件

于 2013-03-23T08:37:47.953 回答