บทความนี้นะครับ ก็เป็นการ ใช้ extension cure เพื่อ ติดต่อ กับ URL อื่น และ ตัดข้อความบางส่วนออกมาใช้นะครับ
การใช้ cure นั้น จะมีลักษณะ คล้ายๆ กับ ajax คือ cure สามารถติดต่อ และส่ง ค่าตัวแปร ด้วย get หรือ post ไปยัง url อื่น และรับข้อมูลประมวลผล กลับมาแสดงในหน้าเว็บได้ ซึ่ หากเป้น ajax process การทำงานนั้นจะ อยู่ที่ agent ฝั่ง client นั่นคือ object xmlHTTPRequest นะครับ
แต่หากเป็น cure นั้น agent หรือตัวกลาง จะอยู่ที่ฝั่ง server ภายใต้ environment ของ PHP ที่เปิด extension cure ใน php.ini นะครับ
อันดับแรก ผมอยากจะให้ดูวิธีการใช้ cure ซักนิด ด้วยตัวอย่างง่ายๆ เช่นการ Login
โจทย์ของผมคือ สร้าง ฟอร์ม Login ขึ้นมา และส่งค่า username และ password ไปยัง ไฟล์ curl_service.php ซึ่ง จะให้บริการ ตรวจสอบ username และ password จาก database ซึ่ง ฟอร์ม Login และ curl_service.php นั้น จะอยู่กัน คนละ server และ server ของ formLogin.php นั้นไม่สามารถติดต่อ database ได้
ที่ server 1 (ไม่สามารถติดต่อ Db ได้ แต่เปิด curl) ไฟล์ formLogin.php โคดดังนี้
<?php
$submit=$_POST["Submit"];
$curlurl ="http://server2/curl/curl_service.php"; // url เพื่อเรียก ไปที่ curl_service ที่อยู่ใน server ที่สามารรถติดต่อดาต้าเบสได้
function reg_login($username,$password)
{
global $curlurl;
$user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
$params = "username=$username&password=".$password;
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST,1); // method ที่เราจะส่ง เป็น get หรือ post
curl_setopt($ch, CURLOPT_POSTFIELDS,$params); // paremeter สำหรับส่งไปยังไฟล์ ที่กำหนด
curl_setopt($ch, CURLOPT_URL,$curlurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
$result = curl_exec($ch); // ผลการ execute กลับมาเป็น ข้อมูลใน url ที่เรา ส่งคำร้องขอไป
curl_close ($ch);
return $result;
}
?>
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<form action="<?php $_SERVER["PHP_SELF"];?>" method="post">
<table width="500" border="0" align="center" cellpadding="1" cellspacing="1" bgcolor="#CCCCCC">
<tr bgcolor="#CCFFFF">
<td colspan="2"><strong>Curl Login Form !!</strong></td>
</tr>
<tr>
<td width="127" bgcolor="#FFFFFF"><strong>username</strong></td>
<td width="366" bgcolor="#FFFFFF"><input type="text" name="txtname"></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><strong>password</strong></td>
<td bgcolor="#FFFFFF"><input type="text" name="txtpass"></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"> </td>
<td bgcolor="#FFFFFF"><input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Reset"></td>
</tr>
</table>
</form>
<?php
// ตรวจสอบ การกดปุ่ม submit
if (isset($submit)){
$username=$_POST["txtname"];
$password=$_POST["txtpass"];
echo reg_login($username,$password);
}
?>
</BODY>
</HTML>
ที่ server 2 (สามารถติดต่อ Db ได้ ไม่ได้เปิด curl) ไฟล์ curl_service.php โคดดังนี้
<?php
// รหัส login
$admin_user="admin";
$admin_pass="123";
// เว็บ service โดยใช้ curl เป็นหลัก
$user=$_POST["username"];
$pass=$_POST["password"];
if ($admin_user==$user && $admin_pass==$pass) {
echo "Login ถูกต้องนะครับ ยินดีต้อนรับคุณ ".$user;
}else{
echo "ไม่ถูกต้องกรุณา Login ใหม่ด้วยนะครับ !!";
}
จะเห็นได้ว่า ใน โคดที่ curl_service.php คือการเขียนโคด ตรวจสอบ login ธรรมดา ทั่วไป และมีการ echo ข้อความเท่านั้น
ซึ่งทั้งหมดนี้ process ของการ ส่งค่า และรับค่าไปแสดงผล จะอยู่ที่กระบวนการทางฝั่งของ formLogin.php โดยผ่านตัวกลาง agent ก็คือ curl นั่นเอง
ที่กล่าวมานี้ จะเป็น แค่ตัวอย่าง การใช้ curl เป็นตัวกลางในการส่งค่า ไปยังเว็บอื่น เพื่อ แสดงผลข้อมูล ต่อไป เราจะ ได้ทดลอง การตัดต่อ ข้อความเฉพาะส่งจาก เว็บไซต์อื่นนะครับ ด้วย ตัวอย่าง การ ดึง บทความจากเว็บไซต์ เมืองนอก มาแสดงผลในหน้าเว็บเรา โดยการ ตัดเอาเฉพาะ ข้อมูล ตรง ส่วน main บทความเท่านั้น นะครับ
<?php
$url="http://www.4guysfromrolla.com/webtech/";
if ($viewcat<>"")
$url.=$viewcat;
else
$url.="index_asp.shtml";
function replaceLink($data){
$data = ereg_replace('<a href="/webtech/','<a href="aspnet_article.php?viewcat=',$data);
return $data;
}
function callArticle(){
global $url;
$user_agent = "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)";
// $params = "";
// $url .="?".$params;
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POST,0);
//curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, $user_agent);
$result = curl_exec($ch);
$start_result = strpos($result,"<!--content_start-->");
$end_result = strpos($result,"<P><CENTER>",$start_result+11);
$substring .= substr($result,$start_result,$end_result-$start_result);
curl_close ($ch);
return replaceLink($substring);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=tis-620">
</HEAD>
<BODY>
<h2>การตัดต่อ Article http://www.4guysfromrolla.com/webtech/index_asp.shtml <br>ผลลัพธ์ที่ได้คือ</h2><hr>
<?php
echo callArticle();
?>
</BODY>
</HTML>
จะเห็นว่า เมื่อ curl ไปดึงบทความจากเว็บไซต์ตัวอย่างมาแล้ว ผมจะทำการ ใช้ function strpos ของ php เพื่อ ค้นหา เอา tag ที่ เป็นส่วน content ที่ผมต้องการ โดยการ find หา จุด string start และ หา string end ก็คือ บริเวณที่ tag ของ content สิ้นสุด ที่เราต้องการ
เราก็จะได้ข้อมูล บริเวณ ภายใต้แทก start และ end ของข้อมูลครับ
ทั้งนี้ ก่อนที่เราจะหา content start ได้ เราจำเป็นจะต้อง มอง content ของเว็บที่เราต้องการ ให้เป็น Dom เพื่อหา บริเวณ แทก ที่เป็นจุดเริ่มของ content ที่เราต้องการ มาครับ และ มองหา บริเวณ ของ dom จุดที่เป็น จุดสิ้นสุด ของ content ที่เราต้องการ เพื่อมาตัดต่อเอา ข้อมูลเฉพาะนะครับ

13 ความคิดเห็น:
ขอบคุณมากๆค่ะ แวะมาอ่านครบเลยคะ
Here is my problem. The computer I synced my iphone with has been reformated, therefore my computer now no longer recognizes my iphone and wishes to erase and sync. My contacts were saved on my computer before it was reformated. I fear that if I let my computer sync, then it will erase all my contacts since my reformated computer no longer carries the past data. How do I save and restore my contacts and applications without having to do it manually?
[url=http://forexrobot-review.info]best forex software[/url] [url=http://forum.ez-daaf.org/viewtopic.php?f=2&t=648&p=2650#p2650]unlock iphone[/url]
Being a complete computer nut, the idea of using a computer to evaluate current trends in real time and have it indicate the optimum buy and sell points, really makes sense to me. If you have had any experiences with automated software in the forex or similar trading platforms your answer will be of great interest to me
[url=http://forexrobot-review.info]best forex software[/url]
Τα αναβολικά μας στεροειδές online κατάστημα έχει σχεδιαστεί για να απαντήσει όλα τα ερωτήματα σχετικά με αναβολικά στεροειδή και για γρήγορη και εύκολη την αγορά όλα τα γνωστά αναβολικά στεροειδή. online shop μας έχει περάσει μερικά χρόνια μελέτη και την έρευνα αναβολικά στεροειδή. Έχουμε προσπαθήσει να συγκεντρώσει όλες τις πληροφορίες από άλλες ιστοσελίδες, εταιρίες, ιδιώτες, τα βιβλία και την ελπίδα που καλύπτουν κάθε άγγελος των αναβολικών στεροειδών.
αγοράσετε αναβολικά στεροειδή allanabolics.com
Hi, it's nice here so I am just saying hi. I've been reading forum for a year now and decided to register. Hope that my english will be good enough to communicate with you :). My hobby are internet contests and my hobby page - [url=http://www.instantempo.pl]instantempo[/url] it's about them.
эроклассники +без регистрации )
эроклассники ru 583697
736 эроклассники
код активации эроклассники 1763
эроклассники ru :-(
эроклассники фото 435619
792 эроклассники сом
эроклассники ру 2849
76945 курсы косметолога в уфе :-[[[
62819 оценка егэ по русскому -))
今年のクリスマスも後少しですね。グリー内でもクリスマスに備えて異性と交流を持つコミュニティが活発で、自分も今年のクリスマスにお陰で間に合いました!!みなさんもイブを一人で過ごさなくても良いように、グリーで異性をGETしよう
Tiffany Necklaces are very popular with women. Nearly every woman knows Tiffany’s brand. This is a piece of Tiffany Circlet drop earrings. Circles of diamonds in timeless elegance. Earrings with round brilliant diamonds in platinum, for pierced ears. Size mini. All of them are very glittering in the events.
最低時給1万円!?誰も知らない驚愕の副収入・・・会員登録すれば今すぐにでも開始できます!!今月ピンチな方・お金を稼ぎたい方はココで稼いで下さい
must look at this replica coach purses replica coach bags online coach replica purses for less
แสดงความคิดเห็น