Php Curl登录Joomla 1.6/3.0

Php Curl登录Joomla 1.6/3.0,php,curl,joomla,Php,Curl,Joomla,我试图用PHP中的curl登录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, C

我试图用PHP中的curl登录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);

但这是被禁止的演出

乔姆拉!通常,web浏览器会发送一个令牌,以确保表单是从浏览器发布的(而不是像您尝试的那样从外部发布)

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


您可能需要寻找一个支持您正在尝试做的事情的autentication插件。例如。

谢谢,但这并不能解决我的问题,因为那个网站不是我的。我只想要独立的PHP代码。我也面临着同样的挑战——你找到了适合你的解决方案吗?没有,因为它使用会话令牌。如果您可以读取并发送令牌,则可以执行此操作