使用PHP curl获取登录内容


Get logged in content using PHP curl

我试图用以下代码获取登录页面的内容。我尝试了不同的URL,但对于这个,我不确定为什么它返回空白结果。我查看了错误日志,没有显示任何内容,并且我的curl已启用。

solved

卷曲设置中存在一些错误配置,首先:

$login = array(
    'username' => $username,
    'password' => $pass,
    'login' => 'login'
);

这应该只有您想要发布的字段,所以'login' => 'login'是不相关的。字段名称必须与表单字段名称匹配,否则它们对服务器毫无意义。您可以通过Firebug或inspect元素来检查它们的名称。

第二:

$loginUrl = 'https://affiliate.styles.my/index.php/login/page/login';

由于您发布的是form,您应该发布到action属性中设置的url,您可以通过在FireFox中启动inspect元素来找到它,并检查form标签,然后查看action属性指向的url是什么。

试试这个:

<?php
$username = 'eldy';
$pass = '1234';
$login = array(
    'user' => $username,
    'password' => $pass
);
$loginUrl = 'https://affiliate.styles.my/index.php/login/dologin';
echo http_build_query($login);
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($login));
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$content = curl_exec($ch);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, "https://affiliate.styles.my/index.php/dashboard/page/dashboard");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$content2 = curl_exec($ch);
echo $content2;
curl_close($ch);
?>

首先,您的登录帖子url不正确。实际的表单帖子url是

        $loginUrl = 'https://affiliate.styles.my/index.php/login/dologin';

除了表单张贴字段设置不正确之外,密码字段应该是"pass"而不是"password"

$login = array(
    'username' => $username,
    'pass' => $pass,
    'login' => 'login'
);

所以正确的方法是首先加载登录页面发送邮件数据然后获取仪表板页面这是正确的代码

<?php
$username = 'eldy';
$pass = '1234';
$login = array(
    'username' => $username,
    'pass' => $pass,
    'login' => 'login'
);
            $loginUrl = 'https://affiliate.styles.my/index.php/login/dologin';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://affiliate.styles.my/index.php/login");
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_exec($ch);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_URL, $loginUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $login);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
//curl_setopt($ch, CURLOPT_VERBOSE, 1);
var_dump($ch);
$content = curl_exec($ch);
//echo $content;


curl_setopt($ch, CURLOPT_URL, "https://affiliate.styles.my/index.php/dashboard/page/dashboard");
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_VERBOSE, 1);
$content2 = curl_exec($ch);
echo $content2;
curl_close($ch);