使用 PHP 的 curl 登录到 Opencart 的管理员

Login to Opencart's admin with curl of PHP

我想使用 curl 自动登录 OpenCart CMS 并自动向其添加内容
但我无法登录 it.I 搜索并找到了一些结果但无法帮助我我没有得到任何结果。这是我的代码:

<?php
include_once "simple_html_dom.php";
$username = 'active';
$password = '123active';
$loginUrl = 'http://localhost:100/mywebsite/admin/';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $loginUrl);

curl_setopt($ch, CURLOPT_POST, 1);

curl_setopt($ch, CURLOPT_POSTFIELDS, 'username='.$username.'&password='.$password);

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$store = curl_exec($ch);
$html=new simple_html_dom();
$html->load($store);
foreach($html->find("li#dashboard") as $dash){
    echo $dash->innertext;
}
?> 

在这段代码中,我首先初始化 usernamepassword 以及我的 URL 链接到
到我网站的管理员,然后我使用 CURLOPT_POST请求和 CURLOPT_POSTFIELDS
然后执行 $ch 但现在我在 cookie.txt 上没有任何结果并且没有
登录到网站的管理员。

我查看了http://demo.opencart.com/admin/,发现表单中的操作url 不仅是/admin。试试这个:

<?php
include_once "simple_html_dom.php";
$username = 'active';

$password = '123active';
//$loginUrl = 'http://localhost:100/mywebsite/admin/';
//new url
$loginUrl = 'http://localhost:100/mywebsite/admin/index.php?route=common/login';

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $loginUrl);

curl_setopt($ch, CURLOPT_POST, true );

// follows a location header redirect
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );

curl_setopt($ch, CURLOPT_POSTFIELDS, 'username='.$username.'&password='.$password);

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$store = curl_exec($ch);
$html=new simple_html_dom();
$html->load($store);
foreach($html->find("li#dashboard") as $dash){
    echo $dash->innertext;
}
?>

我没有测试操作 url 是否取决于特定版本,所以只需使用浏览器开发人员工具检查表单即可