PHP使用curl自动登录和重定向

时间:2016-09-26 13:42:49

标签: php redirect curl cookies

我正在尝试自动登录网站并重定向。我这样做是使用curl这里是我的代码,但它不适合我,我的意思是它不做自动登录,即使我的登录详细信息是正确的我可以直接登录但不能通过curl php。 这是我的代码:

function login($url,$data){
    $fp = fopen("cookie.txt","w");
    fclose($fp);
    $login = curl_init();
    curl_setopt($login,CURLOPT_COOKIEJAR,"cookie.txt");
    curl_setopt($login,CURLOPT_COOKIEFILE,"cookie.txt");
    curl_setopt($login,CURLOPT_TIMEOUT, 40000);
    curl_setopt($login,CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($login,CURLOPT_URL,$url);
    curl_setopt($login,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
    curl_setopt($login,CURLOPT_FOLLOWLOCATION,TRUE);
    curl_setopt($login,CURLOPT_POST,TRUE);
    curl_setopt($login,CURLOPT_POSTFIELDS,$data);
    ob_start();
    return curl_exec($login);
    ob_end_clean();
    curl_close($login);
    unset($login);

    }
function grab_page($site){
    $ch= curl_init();
    curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
    curl_setopt($ch,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch,CURLOPT_TIMEOUT,40);
    curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");
    curl_setopt($ch,CURLOPT_URL,$site);
    ob_start();
    return curl_exec($ch);
    ob_end_clean();
    curl_close($ch);
    unset($ch);
        }
function post_data($site,$data){
    $datapost = curl_init();
    $headers=array("Expect:");
    curl_setopt($datapost,CURLOPT_URL,$site);
    curl_setopt($datapost,CURLOPT_TIMEOUT,40000);
    curl_setopt($datapost,CURLOPT_HEADER,TRUE);
    curl_setopt($datapost,CURLOPT_HTTPHEADER,$headers);
    curl_setopt($datapost,CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
    curl_setopt($datapost,CURLOPT_POST,TRUE);
    curl_setopt($datapost,CURLOPT_POSTFIELDS,$data);
    curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");
    ob_start();
    return curl_exec($datapost);
    ob_end_clean();
    curl_close($datapost);
    unset($datapost);

    }
echo login("https://www.jollywallet.com/api/aff","token=00D3A9E8-A9F4-F21B-122E-54AF4B00A0E8&captcha%5Binput%5D=&captcha%5Bid%5D=&type=login&user=armokoj@gmail.com&dist_id=0&dist_sub_id=0&password=4704e86d0ea8a20752a9b882b9a2a5f9&reg_option=2");

echo grab_page("https://www.jollywallet.com/jollywallet/storelist");

1 个答案:

答案 0 :(得分:0)

你没有解释你的错误是什么。

如果您是登录并从服务器获得正确的响应,但是网站重定向或使用另一个卷曲转到另一个页面,但第二个卷曲的响应是登录页面,它回到您的cookie。是的我知道你保存cookie但有些网站使用javascript设置cookie然后必须浏览器加载页面以获得正确的cookie或其他导致cookie不能正常工作的事情

如果您的第一个curl用于登录错误的响应,那么您不会发送一些数据。一些网站使用隐藏输入必须发送它们,在某些情况下隐藏输入的值用javascript填充,你必须自己填写

我希望这可以帮到你