เรื่องการส่ง post request

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
oxygenyoyo
PHP Hero Member
PHP Hero Member
โพสต์: 140
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am

เรื่องการส่ง post request

โพสต์ที่ยังไม่ได้อ่าน โดย oxygenyoyo »

คือผมอยากทราบเกี่ยวกับวิธีส่งข้อมูลโดยใช้

opensock อ่ะครับ โดยส่งแบบที่มี header ไปด้วยอ่ะครับ

ปัญหาคือ ผมไม่รู้ว่า header ต้องใส่อะไรไปเท่าไรบ้างอ่ะครับ หลักๆที่ต้องส่งมีอะไรบ้างอ่ะครับ

แล้วส่งไปแล้วเป็น xml จะมีฟังก์ชั่นอะไรในการรับค่าที่มาจาก post โดยที่เราไม่ทราบตัวแปรบ้างอ่ะครับ

เคยทำแต่พวกส่งผ่านเพจแต่ ครั้งนี้ต้องติดต่อกับ ที่อื่น จนปัญญาเลยอ่ะครับรบกวนใครมีความรู้ บอกหน่อยนะครับ
ภาพประจำตัวสมาชิก
oxygenyoyo
PHP Hero Member
PHP Hero Member
โพสต์: 140
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am

Re: เรื่องการส่ง post request

โพสต์ที่ยังไม่ได้อ่าน โดย oxygenyoyo »

คุณ mindphp รบกวนถ้าดูแล้วบอกหน่อยครับว่าผมอธิบายไม่ละเอียดหรือว่าอย่างไรครับ
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41364
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: เรื่องการส่ง post request

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ผมไม่รู้จัก opensock ครับ มันคืออะไร หรือครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
oxygenyoyo
PHP Hero Member
PHP Hero Member
โพสต์: 140
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am

Re: เรื่องการส่ง post request

โพสต์ที่ยังไม่ได้อ่าน โดย oxygenyoyo »

โทษทีครับผมรีบพิมพ์

ฟังก์ชั่น fsockopen ครับ


เค้าให้เอกสารบอกว่าจะส่งมาอย่างนี้อ่ะครับ

HTTP POST
The standard format for the POST method is:
POST <URL> HTTP 1.x <CRLF> [message-body]
All content is URL encoded.
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41364
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: เรื่องการส่ง post request

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

php สามารถสั่ง หรือ ส่ง Post ค่าไปที่ Server อื่น ที่ผมทราบ เละเคยทดสอบ มี สอง วิธี คือ
1. ใช้ socket ก็ function ที่ คุณ oxygenyoyo บอกมาคือ ใช้ fsockopen
2. ใช้ Curl lib
โดยทั้งสองแบบ ตอนส่ง ต้องกำหนด ในส่วน ของ Header กับ body ไป ทำเลียนแบบ การส่ง จากหน้า page
ทั้งนี้ต้องเช็คค่า response ด้วย
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
oxygenyoyo
PHP Hero Member
PHP Hero Member
โพสต์: 140
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am

Re: เรื่องการส่ง post request

โพสต์ที่ยังไม่ได้อ่าน โดย oxygenyoyo »

ผมได้ทำการจองการส่งเป็นอย่างนี้ครับ

โค้ด: เลือกทั้งหมด

$port = "80";
$path = "/dna/recive_feed_update_ucl.php";
$host = "localhost";
$method = "POST";
$contenttype = "text/xml";
$data = $data;

// script
if($port == 443)
      $sslhost = "ssl://".$host;
else
      $sslhost = $host;
$fp = fsockopen($sslhost, $port);
fputs($fp, "$method $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");
fputs($fp, "Content-type: $contenttype\r\n");
fputs($fp, "Content-length: ".strlen($data)."\r\n");
fputs($fp, "Connection: close\r\n");
fputs($fp, "\r\n$data");

	 while (!feof($fp)) {
       echo fgets($fp, 128);
   }
   fclose($fp);
แต่ค่าที่กลับมาคือ

โค้ด: เลือกทั้งหมด

HTTP/1.1 200 OK Date: Mon, 29 Sep 2008 04:37:25 GMT Server: Apache/2.2.3 (Win32) PHP/5.1.6 X-Powered-By: PHP/5.1.6 Content-Length: 13 Connection: close Content-Type: text/html ไม่มีข้อมูล

คำว่าไม่มีข้อมูลนั้นลองทำการเช็คดูว่ามีการส่งค่า post มาหรือเปล่าโดย var_dump($_POST);

แล้วเช็ค if ดูอ่ะครับ

ผมไม่รู้จะทำยังไงดีอ่ะครับ
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41364
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: เรื่องการส่ง post request

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

ลอง สั่ง Post ค่า ไปที่ Host ที่เป็น http ธรรมดาก่อน (ทำทั้งจำลองของตัวเอง และ up ไปที่ Host อื่น ที่ใช้ OS ต่าง กัน)
แล้วค่อย test กับ ssl ทั้ง สอง host อีกที

ปล. ต้องแน่ใจด้วยว่า ใช้อะไรเป็นตัวแยกระหว่าง Head กับ data ผมเห็นตอนนี้ใช้ "\r\n" ลองเป็น "\n" ด้วย ได้ผลยังไงบอกด้วยครับ
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
oxygenyoyo
PHP Hero Member
PHP Hero Member
โพสต์: 140
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am

Re: เรื่องการส่ง post request

โพสต์ที่ยังไม่ได้อ่าน โดย oxygenyoyo »

HTTP/1.1 200 OK Date: Mon, 29 Sep 2008 04:55:47 GMT Server: Apache/2.2.3 (Win32) PHP/5.1.6 X-Powered-By: PHP/5.1.6 Content-Length: 81 Connection: close Content-Type: text/html array(0) { } Array ( [1] => [value] => [0] => 0 [key] => 0 )

บรรทัดบนคือแก้จาก \r\n เป็น \n ก็ยังผลเหมือนเดิม แต่ test ในเครื่องครับ


HTTP/1.1 200 OK Content-Type: text/html Server: Microsoft-IIS/6.0 X-Powered-By: PHP/4.4.6 X-Powered-By: ASP.NET Date: Mon, 29 Sep 2008 05:11:10 GMT Connection: close array(0) { } Array ( [1] => [value] => [0] => 0 [key] => 0 )


บรรทัดบนคือแก้จาก \r\n เป็น \n แต่ test ที่โฮสครับ


ส่วนเรื่อง ssl ไม่ต้องสนใจก็ได้ครับผมตอนนี้ก็ต้องการแบบธรรมดาให้ส่งค่าได้ก่อน
ภาพประจำตัวสมาชิก
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
โพสต์: 41364
ลงทะเบียนเมื่อ: 22/09/2008 6:18 pm
ติดต่อ:

Re: เรื่องการส่ง post request

โพสต์ที่ยังไม่ได้อ่าน โดย mindphp »

เรื่อง Socket ลองอ่านดูตามบทความนี้ครับ ละเอียดดีทีเดียว
http://www.devshed.com/c/a/PHP/Socket-P ... -With-PHP/
ลองสร้างหน้า form ธรรมดา ขึ้นมา แล้วกำหนด field ใส่ข้อมูลลงไป เลียนแบบการ POST ด้วย Socket ให้ POST จาก form ดูว่า response data ถูกต้องหรือเปล่า
ติดตาม VDO: http://www.youtube.com/c/MindphpVideoman
ติดตาม FB: https://www.facebook.com/pages/MindphpC ... 9517401606
หมวดแชร์ความรู้: https://www.mindphp.com/forums/viewforum.php?f=29
รับอบรม และพัฒนาระบบ: https://www.mindphp.com/forums/viewtopic.php?f=6&t=2042
ภาพประจำตัวสมาชิก
oxygenyoyo
PHP Hero Member
PHP Hero Member
โพสต์: 140
ลงทะเบียนเมื่อ: 01/01/1970 7:00 am

Re: เรื่องการส่ง post request

โพสต์ที่ยังไม่ได้อ่าน โดย oxygenyoyo »

HTTP/1.1 200 OK
Date: Mon, 29 Sep 2008 06:44:30 GMT
Server: Apache/2.2.3 (Win32) PHP/5.1.6
X-Powered-By: PHP/5.1.6
Content-Length: 193
Connection: close
Content-Type: text/html


Array
(
[1] => <?xml version="1.0" encode="UTF-8"?><status>T</status>
[value] => <?xml version="1.0" encode="UTF-8"?><status>T</status>
[0] => 0
[key] => 0
)
OK INSERT SUCCESS


ได้แล้วครับคุณ mindphp ถ้าอย่างนี้ถ้าเค้าส่งมาผมก็สามารถรับได้แล้วอ่ะสิครับ
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: eange08 และบุคลทั่วไป 136