通过curl登录并在php中解析数据

时间:2014-04-11 11:25:51

标签: php curl

我尝试通过curl登录论坛。每次显示登录页面时,论坛都会生成一个唯一的ID。这有点让我烦恼:(我能够解析id并使用它。但不知何故,当我尝试实际登录时,id会被更改。

到目前为止我的代码:

$ch = curl_init();

$url ="http://theforum.dk/index.php/Login/";
$cookie="cookie.txt";


//Fetching the id

curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch); (1)

$pos = strpos($output, '"t"')+11;
$pos2 = strpos($output, " />",$pos)-1;
$unique_id = substr($output, $pos,$pos2-$pos);

echo $unique_id; //Shows correct id

//Filling the POST array and submitting it

$arrSubmit="username=TESTUSER&action=login&password=TESTPASS&useCookies=1&url=&t=".$unique_id;


curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $arrSubmit);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, false);


//Exectute and display result
echo curl_exec($ch); (2)

输出类似于"您的ID不再有效"。 (1)处的id与(2)处页面源中的id不同:(

登录表单只是一个基本的HTML表单 - 提交数据并不是问题,只是从一开始就使用获取的id。

你们有什么想法吗?

感谢任何帮助:)

1 个答案:

答案 0 :(得分:0)

您好我的curl登录示例。

祝你好运

        $login_email = 'mehmet';
        $login_pass = '112233';

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, 'http://www.mysites.com/giris');
        curl_setopt($ch, CURLOPT_POSTFIELDS,'username='.urlencode($login_email).'&password='.urlencode($login_pass));
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_COOKIEJAR, "my_cookies.txt");
        curl_setopt($ch, CURLOPT_COOKIEFILE, "my_cookies.txt");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3");
        curl_setopt($ch, CURLOPT_REFERER, "http://www.mysites.com/package-details/237");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $curl_handle = curl_init ("http://www.mysites.com/package-details/237");
        curl_setopt ($curl_handle, CURLOPT_COOKIEFILE, 'cookie.txt');
        curl_setopt ($curl_handle, CURLOPT_RETURNTRANSFER, true);
        $page       = curl_exec($ch);
        echo $page;