xmen256k
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 98
ออฟไลน์
กระทู้: 1,999
|
 |
« เมื่อ: 07 ธันวาคม 2008, 01:54:21 » |
|
จากกระทู้ file_get_contents ออกมาแล้วเราจะสามารถหาข้อความที่เราต้องการหายังไงดีครับ http://www.thaiseoboard.com/index.php?topic=37596.0  จาที่อ่านๆดูเห็นบอกว่า curl_init() จะเร็วกว่าใช่ป่าวครับ แล้วจะอกมาเป็น html
ที่นี้ผมอยากหา ส่วนส่วนนึงของเวปที่ ผม get มาอะครับ
อย่าง
$url = $websiteown; $url = file_get_contents($url); echo $url;
$url = $websiteown; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch); echo $response;
สมมุติว่า
ใน html มี
. . .
<div id="content"> <img src="http://..........jpg"> </div> . . .
ผมต้องการข้อมูลที่อยู่หลัง <div id="content"> และ ก่อน </div> เท่านั้นครับ
ต้องเขียนยังไงครับผม ขอบพระคุณครับ ไม่ทราบว่า ถ้าจะใช้ fsockopen แทน จะต้องใช้สคริปแบบไหนอ่าครับ ขอบคุณมากครับ
|
|
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,518
|
 |
« ตอบ #1 เมื่อ: 07 ธันวาคม 2008, 02:01:31 » |
|
หาดูตัวอย่างจากนี้ดูครับ http://th.php.net/fsockopen  ก็แค่รับค่าจาก fgets หรือ fread 
|
|
|
บันทึกการเข้า
|
|
|
|
xmen256k
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 98
ออฟไลน์
กระทู้: 1,999
|
 |
« ตอบ #2 เมื่อ: 07 ธันวาคม 2008, 02:21:16 » |
|
เอ่อ คือถ้าไม่เป็นการรบกวนขอช่วยโค๊ดไฟล์ตัวอย่างสักหน่อยได้มั๊ยอ่าครับ ลักษณะการทำงานเหมือน จขกท.เลยครับ ปล.อังกฤษก็ไม่ค่อยจะรู้เรื่องกับเค้าเท่าไหร่อ่าครับ php ก็อยู่ในช่วงเริ่มต้นเท่านั้นอ่าครับ ขอบคุณครับ
|
|
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,518
|
 |
« ตอบ #3 เมื่อ: 07 ธันวาคม 2008, 02:37:12 » |
|
$url = "http://www.thaiseoboard.com/index.php/topic,45350.0.html";
$u = parse_url($url); $fp = fsockopen($u['host'], 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { $out = "GET ".$u['path']." HTTP/1.1\r\n"; $out .= "Host: ".$u['host']."\r\n"; $out .= "Connection: Close\r\n\r\n"; fwrite($fp, $out); while (!feof($fp)) { $page .= fgets($fp, 128); } fclose($fp); }
preg_match_all('#<b><a[^>]+action=profile[^>]+>([^<]+)</a></b>#', $page , $matches); print_r($matches[1]);
|
|
|
บันทึกการเข้า
|
|
|
|
xmen256k
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 98
ออฟไลน์
กระทู้: 1,999
|
 |
« ตอบ #4 เมื่อ: 07 ธันวาคม 2008, 02:50:43 » |
|
ขอบคุณมากครับ พอจะได้แนวทางหละครับ ^^ +1ให้เลย
|
|
|
บันทึกการเข้า
|
|
|
|
|
xmen256k
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 98
ออฟไลน์
กระทู้: 1,999
|
 |
« ตอบ #6 เมื่อ: 08 ธันวาคม 2008, 02:36:03 » |
|
เอ่อ งงได้ใจเลยผม 
|
|
|
บันทึกการเข้า
|
|
|
|
EThaiZone
เจ้าพ่อโลลิค่อน
เจ้าพ่อบอร์ดเสียว
พลังน้ำใจ: 321
ออฟไลน์
กระทู้: 12,518
|
 |
« ตอบ #7 เมื่อ: 08 ธันวาคม 2008, 02:41:44 » |
|
ู^ ^ ถ้าจะใช้พวก libraly ที่เขียนในรูป class แนะนำให้ศึกษาเรื่องการเขียนในรูป OOP ก่อนนะครับ จะได้ไม่งง 
|
|
|
บันทึกการเข้า
|
|
|
|
xmen256k
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 98
ออฟไลน์
กระทู้: 1,999
|
 |
« ตอบ #8 เมื่อ: 08 ธันวาคม 2008, 02:48:37 » |
|
โอ้ว เทพทั้งน้าน ผมก็คงพื้นฐานต่อไป แหะๆ
|
|
|
บันทึกการเข้า
|
|
|
|
Amnaj
Newbie
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 34
|
 |
« ตอบ #9 เมื่อ: 11 ธันวาคม 2008, 15:52:09 » |
|
แล้วการใช้ fsockopen นี่ มันสามารถส่งค่าผ่านตัวแปลเหมือน curl ได้ป่ะ แล้วโปรแกรม sniffer ที่ใช้ดู header อ่ะงับ ใครมีมั่งขอหน่อย หา ใน google ไม่พบใช้ คำค้น ไม่ตรงงับ
|
|
|
บันทึกการเข้า
|
|
|
|
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 79
ออฟไลน์
กระทู้: 1,861
|
 |
« ตอบ #10 เมื่อ: 11 ธันวาคม 2008, 16:04:29 » |
|
ได้สิครับ ลองไปโหลด ตัว httpClient ด้านบนมาก่อน หรือไม่ก็ เอา Google หาคำว่า php snoopy
|
|
|
บันทึกการเข้า
|
|
|
|
Amnaj
Newbie
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 34
|
 |
« ตอบ #11 เมื่อ: 11 ธันวาคม 2008, 17:30:30 » |
|
ได้สิครับ ลองไปโหลด ตัว httpClient ด้านบนมาก่อน หรือไม่ก็ เอา Google หาคำว่า php snoopy
พอมีตัวอย่างง่ายให้ดูไหมงับ อย่างเช่นการล็อคอิน เคยใช้แต่ curl ง่ะ ไปโหลด php snoopy มาแล้ว แต่ เหอะ งง นิดหน่อย
|
|
|
บันทึกการเข้า
|
|
|
|
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 79
ออฟไลน์
กระทู้: 1,861
|
 |
« ตอบ #12 เมื่อ: 11 ธันวาคม 2008, 17:40:34 » |
|
^ ^ ^ http://snippets.dzone.com/posts/show/2007  <?php require('snoopy.php'); $snoopy = new Snoopy(); $url = 'http://www.example.com'; $data['param1'] = 'value1'; $data['param2'] = 'value2'; $data['param3'] = 'value3'; $snoopy->submit($url, $data); ?>
|
|
« แก้ไขครั้งสุดท้าย: 11 ธันวาคม 2008, 17:47:11 โดย Tee++; »
|
บันทึกการเข้า
|
|
|
|
Amnaj
Newbie
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 34
|
 |
« ตอบ #13 เมื่อ: 11 ธันวาคม 2008, 18:13:40 » |
|
^ ^ ^ http://snippets.dzone.com/posts/show/2007  <?php require('snoopy.php'); $snoopy = new Snoopy(); $url = 'http://www.example.com'; $data['param1'] = 'value1'; $data['param2'] = 'value2'; $data['param3'] = 'value3'; $snoopy->submit($url, $data); ?> ขอบคุณมากครับ เข้าใจมากแล้วครับ แต่ค่าเกี่ยวกับ cookies อ่ะงับ มันต้องใช้ตัวแปลจากในเว็บ หรือ เราสร้างขึ้นมาเก็บ แล้วค่า cookies หรือ Session มันถูกเก็บไว้ในงับ ประมาณว่าล็อคอิน แล้ว แต่ถ้าจะไปหน้าต่อไปก็ยังใช้ Session เดิม งับ (อยากลองในสิ่งที่ curl ทำไม่ได้ (อาจเพราะไม่เข้าใจมันเอง เหอะ)) แปลกใจทำไม curl , fsockopen ,php snoopy ทำไม ถึงใช้ Session เดี่ยวกับการเข้าหน้าเว็บปกติไม่ได้
|
|
« แก้ไขครั้งสุดท้าย: 11 ธันวาคม 2008, 18:17:43 โดย Amnaj »
|
บันทึกการเข้า
|
|
|
|
Tee++;
โปรแกรมเมอร์ จอหงวน
หัวหน้าแก๊งเสียว
พลังน้ำใจ: 79
ออฟไลน์
กระทู้: 1,861
|
 |
« ตอบ #14 เมื่อ: 11 ธันวาคม 2008, 18:28:21 » |
|
ทำได้ครับ มันสามารถ Store Cookie ไว้กับตัวได้ โดยที่ cURL จะ Store ในไฟล์ ดูเรื่อง cookie jar
ส่วนพวก httpClient มักจะ store ใน Session ถ้าจะใช้ระดับนี้ผมว่าไปเอา ของ Zend มาใช้จะดีกว่า
ส่วน session ของเวบ มันวิ่งได้ ปกติอยู่แล้วครับ เพราะเก็บ ที่ Server ไม่ใช่ Client
ส่วนการ authenticate แบบ pop-up อันนี้ผมเคยลองแต่กับ cURL โดย set opt ตัวนี้ลงไปด้วย CURLOPT_UNRESTRICTED_AUTH
ส่วนเรื่อง SSL ผมก็เคยลองแต่ของ cURL โดย set opt ตัวนี้ CURLOPT_SSL_VERIFYPEER
ถ้าให้เลือกระหว่าง 2 ตัวนี้ ผมเลือกใช้งาน cURL ครับ เพราะเขียนโครตง่าย
|
|
|
บันทึกการเข้า
|
|
|
|
Amnaj
Newbie
พลังน้ำใจ: 3
ออฟไลน์
กระทู้: 34
|
 |
« ตอบ #15 เมื่อ: 11 ธันวาคม 2008, 19:36:12 » |
|
cURL ยอมรับว่าใช้ง่าย เข้าใจง่ายครับ แต่ก็ยังใช้กับเว็บบางที่ไม่ได้ ลองใช้ EffeTech HTTP Sniffer ตรวจสอบค่าตอนส่งแบบปกติ กับที่ใช้ cURL มันต่างกัน ตรง ความแตกต่างของ Cookie มันเกี่ยวกันไหมนี่
เพิ่มเติม สมมุติ เรา ใช้ เบราเซอร์ ล็อคอินเว็บ เราจะเอา Session มาใช้ใน cURL ได้ป่ะ ลองไปดู Session ในเครื่องกับที่ใช้ cURL มันคนละรูปแบบเลย
|
|
« แก้ไขครั้งสุดท้าย: 11 ธันวาคม 2008, 20:48:34 โดย Amnaj »
|
บันทึกการเข้า
|
|
|
|
|