|
|
|
สอบถามการใช้ curl ในการ login smf ไม่สามารถ login ได้ รบกวนผู้รู้ด้วยค่ะ |
|
|
|
|
|
|
|
Code (PHP)
<?php
$username="sammam";
$password="123456789";
$url="http://sbayjai.com/forum/index.php?PHPSESSID=8cf5ef98c885243c9beb1ad00a66114f&action=login";
$cookie="cookie.txt";
$postdata = "user=".$username."&passwrd=".$password."&cookielength=-1";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
echo $result;
curl_close($ch);
?>
ตอนนี้ใช้ code นี้แต่ยังเข้าไม่ได้ค่ะ
รบกวนช่วยดูให้ด้วยคร้า
Tag : PHP, HTML/CSS
|
|
|
|
|
|
Date :
2016-02-10 09:48:55 |
By :
sammam |
View :
2761 |
Reply :
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
http://stackoverflow.com/questions/22257532/how-can-i-retrieve-a-session-id-using-curl-in-php
|
|
|
|
|
Date :
2016-02-10 18:30:13 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตอนนี้ สามารถ login ได้แล้วค่ะ
Code (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);
}
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($datapost, CURLOPT_COOKIEFILE, "cookie.txt");
ob_start();
return curl_exec ($datapost);
ob_end_clean();
curl_close ($datapost);
unset($datapost);
}
แต่ติดปัญหาคือ จะให้โพส auto ค่ะ ตรง function post_data($site,$data)
$data ที่ได้จาก HttpFox เป็นแบบนี้ค่ะ
-----------------------------124742512519420
Content-Disposition: form-data; name="topic"
0
-----------------------------124742512519420
Content-Disposition: form-data; name="subject"
toyotavigo
-----------------------------124742512519420
Content-Disposition: form-data; name="icon"
xx
-----------------------------124742512519420
Content-Disposition: form-data; name="message"
2015
-----------------------------124742512519420
Content-Disposition: form-data; name="notify"
0
-----------------------------124742512519420
Content-Disposition: form-data; name="lock"
0
-----------------------------124742512519420
Content-Disposition: form-data; name="attachment[]"; filename=""
Content-Type: application/octet-stream
-----------------------------124742512519420
Content-Disposition: form-data; name="post"
à¸à¸±à¹à¸à¸à¸£à¸°à¸à¸¹à¹
-----------------------------124742512519420
Content-Disposition: form-data; name="additional_options"
0
-----------------------------124742512519420
Content-Disposition: form-data; name="sc"
8e29b0d9e9098cdce36bbdd90e6daa1c
-----------------------------124742512519420
Content-Disposition: form-data; name="seqnum"
7081131
-----------------------------124742512519420--
ทำให้ function post_data เกิด error ค่ะ ไม่สามารถโพส ได้ รบกวนช่วยดูให้หน่อยค่ะ ว่าพอมีวิธีที่สามารถให้ $data ที่ได้จาก HttpFox ไม่ทำให้ function post_data เกิด error แล้วสามารถโพสได้ค่ะ ลองทำเป็นแบบนี้แต่ก็ยังไม่สามารถโพสได้ค่ะ ช่วยดูให้หน่อยค่ะ
Code (PHP)
post_data("http://sbayjai.com/forum/index.php?action=post2;start=0;board=12","topic=0&subject=toyotavigo2016&icon=xx&message=20152016¬ify=0&lock=0&post=à¸à¸±à¹à¸à¸à¸£à¸°à¸à¸¹à¹&additional_options=0&sc=
8e29b0d9e9098cdce36bbdd90e6daa1c&seqnum=6829805");
|
|
|
|
|
Date :
2016-02-14 17:17:57 |
By :
sammam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ดูจาก function แต่ละอัน มีการ ปิด connection ทำให้ไม่แน่ใจว่า ฝั่งโน้นเขาเก็บ session ยังไง
ถ้า session หลุด จะสามารถใช้ session เดิมได้หรือไม่
ดังนั้นควร ทำงาน ภายใน curl เดียวกัน ไม่ต้อง close จนกว่าจะเสร็จ
วิธีการ login แล้วจะทำอะไรต่อก็ทำไปเลยจนจบ ค่อย close curl
http://stackoverflow.com/questions/13020404/keeping-session-alive-with-curl-and-php
ปล.แบบที่ง่ายที่สุด ต้องมี login เป็นยาดำ แทรกอยู่กับทุกฟังก์ชั่น
|
ประวัติการแก้ไข 2016-02-15 06:47:24
|
|
|
|
Date :
2016-02-15 06:44:28 |
By :
Chaidhanan |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 02
|