ให้ลองหลับตาแล้วจินตนการให้เห็นหน้าเพจที่มีฟอร์มอยู่ฟอร์มหนึ่ง ลงมือป้อนข้อมูลลงไปในฟอร์ม กดปุ่ม submit
เบื้องหลัง เบราเซอร์จะเก็บรวบรวมข้อมูลภายในฟอร์ม สร้างขึ้นมาเป็นสตริงชุดหนึ่ง แล้วส่งไปให้กับไฟล์ที่ระบุไว้ใน target ของฟอร์ม (มันบ่ได้ส่งฟอร์มไปทั้งฟอร์มอย่างที่เราเห็นดอกนะ ส่งไปเฉพาะข้อมูลที่ถูกป้อนเท่านั้น) เมื่อไฟล์นั้นได้รับข้อมูลก็จะทำการประมวลผลตามคำสั่งที่อยู่ภายในไฟล์ ได้ผลลัพธ์อะไรเซิฟเวอร์ก็รวบรวมเป็นสตริงชุดหนึ่ง แล้วส่งกลับมาให้เบราเซอร์เจ้าของ เบราเซอร์ได้รับสตริงแล้วก็ประมวลผลแสดงออกมาเป็นหน้าเพจ
ถ้าเราต้องการทำระบบโพสต์ข้อมูลอัตโนมัติ คำตอบคือ CURL ไม่ใช่แต่เฉพาะโพสต์ฟอร์มแต่รวมไปถึงร้องขอหน้าเพจจากเซิฟเวอร์ ถ้าท่านงงๆ ให้จินตนาการง่ายๆว่าเป็นการอ่านไฟล์ข้ามเว็บไซต์ก็แล้วกัน
CURL เป็นไลบรารี่ที่อนุญาติให้เราเขียนว่าจะส่งตัวแปรอะไรไปให้ไฟล์ไหนที่เว็บไซต์ไหน response ที่ได้กลับมาคือผลลัพธ์ที่ถูกประมวลผลเรียบร้อยแล้ว
เราสามารถเขียนโค้ดให้โปรแกรมเราล้อกอินอัตโนมัติไปยังเว็บไซต์ไหนก็ได้ เพื่อเอาข้อมูลบางอย่าง บางคราเราก็ใช้ CURL ส่งข้อมูลเพื่อร้องขอข้อมูลจากเว็บไซต์ที่เขามีหน้าเว็บให้ป้อนข้อมูล (อัตโนมัติ ไม่ต้องใช้คนคอยป้อนข้อมูล)
ผมขออ้างอิงไปที่บทความ CURL หรือ คือคำตอบสุดท้ายสำหรับ http client application บน php เวลาผมเขียน CURL ไม่ถูกก็ได้อาศัยเว็บพี่เขา เว็บแห่งนี้เป็นเสมือนอาจารย์ที่สอน PHP เชิงลึก แก่ผมเลยทีเดียว ขอขอบคุณด้วยใจจริงครับ
สมาชิกที่ผ่านมาอ่านเจอบทความนี้ ถ้าอยากได้ความรู้แจ่มๆ แวะไปเลยครับ www.phpzealots.com รับรองไม่ผิดหวัง
โค้ดด้านล่างผมก้อปปี้มาจากเว็บพี่เขาครับ ( เพื่อให้บทความต่อเนื่อง ต้องขออนุญาติพี่ phpzelot.com ไว้ ณ ตรงนี้ด้วยนะครับ ) วิธีเขียน CURL
<?php $urlWithoutProtocol = "www.example.com:80/someServices"; $request = ""; $isRequestHeader = false; $exHeaderInfoArr = array(); $exHeaderInfoArr[] = "Content-type: text/xml"; $exHeaderInfoArr[] = "Authorization: "."Basic ".base64_encode("authen_user:authen_pwd"); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $urlWithoutProtocol); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $request); curl_setopt($ch, CURLOPT_HEADER, (($isRequestHeader) ? 1 : 0)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if( is_array($exHeaderInfo) && !empty($exHeaderInfo) ) { curl_setopt($ch, CURLOPT_HTTPHEADER, $exHeaderInfo); } $response = curl_exec($ch); curl_close($ch); echo $response; ?> |
โค้ดด้านล่างเป็นการเขียนแบบสั้นๆ อีกวิธีหนึ่ง ส่งตัวแปรแบบ Querystring ไปด้วย
<?php $request = "format=csv&by=member&rs=hour&rk=productivity&rb=".$month_first_date."&re=".$cur_date = date('Y-m-d'); $urlWithoutProtocol = "www.rescuetime.com/anapi/data/?".$request ; $isRequestHeader = FALSE; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $urlWithoutProtocol); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $productivity = curl_exec($ch); curl_close($ch); ?> |
ถ้าเป็นเว็บไซต์ที่ใช้ https จะต้องเขียนอย่างนี้ครับ
<?php $request = "format=csv&by=member&rs=hour&rk=productivity&rb=".$month_first_date."&re=".$cur_date = date('Y-m-d'); $urlWithoutProtocol = "https://www.rescuetime.com/anapi/data/?".$request ; $isRequestHeader = FALSE; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $urlWithoutProtocol); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $productivity = curl_exec($ch); curl_close($ch); ?> |
เพิ่มคำสั่งเข้ามาอีกคำสั่ง
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); |
ที่เว็บนี้ก็อธิบายวิธีการเขียนโค้ดล้อกอินอัตโนมัติเว็บไซต์ที่ถูก protact ไว้ ลองแวะไปดูครับ Using cURL in PHP to access HTTPS (SSL/TLS) protected sites
iPong says:
25/04/2554 at 25/04/2554
ขอบพระคุณครับสำหรับบทความนี้ครับ ถือเป็นเรื่องใหม่สำหรับผมมากๆ
ความรู้ไม่มีที่สิ้นสุดจริงๆ
จากตัวอย่างทำให้เห็นช่องทางที่จะประยุกต์ใช้งานเยอะเลยครับ
แต่…ยังมองภาพไม่ชัดนัก เพราะความรู้น้อยนิด มีตัวอย่างที่ไหนให้ดูหรือเปล่าครับ
chanmongkon says:
29/04/2554 at 29/04/2554
ok โครต
คงภัค says:
01/06/2554 at 01/06/2554
โอ้ผู้ชี้ทางแสวงแก่ข้าพเจ้า ขอบคุณมากๆเลยครับ Bookmark ไปเรียบร้อย
โหลดเพลง says:
02/06/2554 at 02/06/2554
ขอบคุณมาก ๆ ค่ะ
โหลดหนัง says:
11/06/2554 at 11/06/2554
ขอบคุณมากครับ ที่มีบทความดีๆ ให้เราอ่าน
ครับ says:
17/06/2554 at 17/06/2554
สอบถามหน่อยครับ กำลังสนใจเรือ่ง curl เหมือนกัน คือ
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
กับ
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
ต่างกันไหมครับ
administrator says:
24/11/2554 at 24/11/2554
ไม่ต่างกันครับ เพราะ 1 เมื่อถูกแปลงเป็นค่า boolean จะได้ true ผมเพิ่มเติมให้นิดนึงว่า true สามารถเขียนได้ 2 แบบ คือ true ,TRUE
php code father says:
23/11/2554 at 23/11/2554
ขอบคุณอย่างแรงครับ
เว็บดูหนังออนไลน์ says:
08/01/2555 at 08/01/2555
ขอบคุณมากๆเลยครับมีประโยชน์มากๆเลย
iCrazy says:
14/12/2555 at 14/12/2555
มันสามารถ ให้มันตั้งเวลาที่จะอัพเดทตลอดเวลาได้ไหมครับ
วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย says:
14/12/2555 at 14/12/2555
ต้องใช้ cron job ครับ ในเว็บนี้ผมก็เขียนวิธีการใช้งานอยู่ ลองหาในช่อง search ดู
hatyaidev says:
20/12/2556 at 20/12/2556
http://www.phpzealots.com/ ผมเข้าไมไ่ด้แล้วนะครับ site เขาปิดหรือเปล่า หรือว่าผมเข้าไม่ได้คนเดียว ?
วัชรเมธน์ ชิษณุคุปต์ ศรีเนธิโรทัย says:
23/12/2556 at 23/12/2556
ผมก็เข้าไม่ได้ เหมือนกัน ไม่แน่ใจว่าเขาปิดเว็บไปหรือเปล่า
Shinra Fenr says:
26/06/2557 at 26/06/2557
เจ๋งไปเลยครับ กำลังหาข้อมูลเรื่องนี้อยู่พอดี
php says:
15/08/2557 at 15/08/2557
ถ้าต้องการกรองเอาแต่ลิ้งภาพ มาเก็บไว้ใน array ต้องทำยังไงครับ แบบว่าเอาแต่ url ของภาพ ไม่เอาเนื้อหาอื่นมาเก็บไว้ แล้วค่อยเอาเรียกใช้อีกที
ทนงศักดิ์ จันทะสิงห์ says:
03/05/2566 at 03/05/2566
ติดปัญหาการใช้คำสั่ง curl ใน php เพื่อต้องการ login เข้าไปใน https://login.yahoo.co.jp/config/login เบอร์ติดต่อกลับ 098-273-0129 ขอบคุณครับ