如何在curl请求中传递PHP_session_id

时间:2016-10-03 08:47:01

标签: php curl

我正在学习PHP并尝试自动化网站登录,然后在登录后将一些数据发布到另一个页面。我设法登录到网站,当我尝试发布数据时,我得到了“文档已移动”。

然后我分析了firebug中的标题,并意识到有一个PHP_session_id,所以当我尝试手动传递这个PHP_session_id时,它起作用了。

所以我的问题是,如何在登录时自动获取sessionid,然后将其传递给我的第二个请求?

这就是我的代码:

<?php
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,"http://www.example.com/login-main.php");
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS,
                "loginType=company&username=johndoe%40gmail.com&password=1234&company=test");

    ob_start();
    curl_exec ($ch);
    ob_end_clean();
    curl_close ($ch);
    unset($ch);

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(

    'Host:www.example.com',
    'Origin:http://www.example.com',
    'Cookie:PHPSESSID=na6ivnsdfab206ktb453o2au07',
    'Referer:http://www.example.com/bookings/'

        ));
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_URL,"http://www.example.com/bookings.php");
    curl_setopt($ch, CURLOPT_POSTFIELDS,
                "start_date=&end_date=&type=instructor&b_type=&id=41");
    $buf2 = curl_exec ($ch);
    curl_close ($ch);
    echo "<PRE>".htmlentities($buf2);
?>

1 个答案:

答案 0 :(得分:1)

在所有curl请求中添加代码

round($number, -2);

例如

 curl_setopt($ch, CURLOPT_COOKIEJAR, $full_path_to_cookie_file);
 curl_setopt($ch, CURLOPT_COOKIEFILE, $full_path_to_cookie_file);