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


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

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

User avatar
oxygenyoyo
PHP Hero Member
PHP Hero Member
Posts: 140
Joined: 01/01/1970 7:00 am

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

Post by oxygenyoyo » 26/09/2008 10:41 pm

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

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

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

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

เคยทำแต่พวกส่งผ่านเพจแต่ ครั้งนี้ต้องติดต่อกับ ที่อื่น จนปัญญาเลยอ่ะครับรบกวนใครมีความรู้ บอกหน่อยนะครับ

User avatar
oxygenyoyo
PHP Hero Member
PHP Hero Member
Posts: 140
Joined: 01/01/1970 7:00 am

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

Post by oxygenyoyo » 27/09/2008 1:51 am

คุณ mindphp รบกวนถ้าดูแล้วบอกหน่อยครับว่าผมอธิบายไม่ละเอียดหรือว่าอย่างไรครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22607
Joined: 22/09/2008 6:18 pm
Contact:

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

Post by mindphp » 27/09/2008 5:38 am

ผมไม่รู้จัก 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

User avatar
oxygenyoyo
PHP Hero Member
PHP Hero Member
Posts: 140
Joined: 01/01/1970 7:00 am

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

Post by oxygenyoyo » 29/09/2008 4:26 pm

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

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


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

HTTP POST
The standard format for the POST method is:
POST <URL> HTTP 1.x <CRLF> [message-body]
All content is URL encoded.

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22607
Joined: 22/09/2008 6:18 pm
Contact:

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

Post by mindphp » 29/09/2008 5:57 pm

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

User avatar
oxygenyoyo
PHP Hero Member
PHP Hero Member
Posts: 140
Joined: 01/01/1970 7:00 am

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

Post by oxygenyoyo » 29/09/2008 6:37 pm

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

Code: Select all

$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);
แต่ค่าที่กลับมาคือ

Code: Select all

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 ดูอ่ะครับ

ผมไม่รู้จะทำยังไงดีอ่ะครับ

User avatar
mindphp
ผู้ดูแลระบบ MindPHP
ผู้ดูแลระบบ MindPHP
Posts: 22607
Joined: 22/09/2008 6:18 pm
Contact:

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

Post by mindphp » 29/09/2008 6:50 pm

ลอง สั่ง 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

User avatar
oxygenyoyo
PHP Hero Member
PHP Hero Member
Posts: 140
Joined: 01/01/1970 7:00 am

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

Post by oxygenyoyo » 29/09/2008 6:57 pm

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 ไม่ต้องสนใจก็ได้ครับผมตอนนี้ก็ต้องการแบบธรรมดาให้ส่งค่าได้ก่อน

Post Reply

Return to “Programming - PHP”

Users browsing this forum: Google [Bot] and 17 guests