使用 PHP curl 获取登录内容

Get logged in content using PHP curl

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

solved

您的 curl 设置中存在一些配置错误,首先:

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

这应该只有您想要 post 的字段,因此 'login' => 'login' 是无关紧要的。 字段名称必须与表单字段名称匹配,否则它们对服务器没有意义。您可以通过 Firebug 或 inspect element.

查看他们的名字

第二个:

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

既然你是postform,你应该post到action属性中设置的url,你可以找到这个通过在 FireFox 中触发检查元素,检查 form 标签,然后查看 url action 属性指向什么。

试试这个:

<?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);
?>

首先您的登录 post url 不正确。实际形式posturl是

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

除了表单 post 字段设置不正确外,密码字段应该是 'pass' 而不是 'password'

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

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

<?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);