หัวข้อ: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: oxygenyoyo ที่ 26 กันยายน 2008, 17:21:15 คือผมทำหน้าเพจที่ส่งค่าแบบ post โดยใช้ฟังก์ชั่น fopensock แล้วใช้ fwrite ในการส่งข้อมูลแบบโพสครับ
function sendToHost($host,$data,$path,$message) { $fp = fsockopen("$host", 80, $errno, $errstr, 30); if (!$fp) { echo "$errstr ($errno)\n"; } else { // $url = $path."?".$data; fwrite($fp,"POST /$path HTTP/1.1\r\nHost: $host \r\nContent-Type: text/xml; charset=UTF-8\r\n\r\n$data"); $x=""; while (!feof($fp)) { $x=$x.fgets($fp, 128); } fclose($fp); $fp1 = fopen("C:\AppServ\www\dna\include\counter.txt","a"); if(fwrite($fp1,$message)) { $xml=""; while (!feof($fp1)) { $xml .= fgets ($fp1,128); } fclose($fp1); } } return $x; } โดยผมลองส่งแบบในเครื่องตัวเองอ่ะครับ แล้วทดสอบการส่งค่าไป แล้วอีกหน้าหนึ่งก็ทำการรับค่า post แต่ผมไม่รู้ว่าจะรับค่ายังไงอ่ะครับ ถ้าส่งมาแล้วมันจะมีฟังก์ชั่นอะไรในการรับค่าบ้างครับ หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: oxygenyoyo ที่ 26 กันยายน 2008, 18:51:38 รบกวนชี้แนะหน่อยนะครับ ถ้าผมไม่ได้คำตอบเนี้ยผมอาจจะไม่ได้กลับบ้านอ่า T^T
หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: did9 ที่ 26 กันยายน 2008, 19:29:58 หน้าที่รับค่าลอง
var_dump($_POST); ดูรึยังครับว่า มีค่า post มามั๊ย? หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: oxygenyoyo ที่ 29 กันยายน 2008, 09:39:02 ลองดูแล้วได้ผลอย่างนี้ครับ
array(0) { } แปลว่าผมส่งตัวแปรไปไม่ได้หรอครับเนี้ย - -' หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: ball6847 ที่ 29 กันยายน 2008, 11:53:58 บอกมะถูก ปกติใช้แต่ curl ที่มันง่ายกว่านี้เยอะ
แต่ลองๆดูประมาณนี้ ได้ยังงัยบอกด้วย โค๊ด: <?php ไม่เข้าใจตรงไหนก็ถามนะ จะได้มีคนที่รู้มาตอบ ผมจะได้เข้ามาอ่านด้วย เพราะผมก้ไม่รู้ แหะๆ :D หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: oxygenyoyo ที่ 29 กันยายน 2008, 12:09:16 The standard format for the POST method is:
POST <URL> HTTP 1.x <CRLF> [message-body] All content is URL encoded. คือเนี้ยอ่ะครับประเด็นที่ผมต้องหาวิธีการส่ง post request http อ่ะครับ ผมไม่รู้ว่าจะรับค่านี้อย่างไร เค้าให้เอกสารมาบอกแค่นี้อ่ะครับ โดย message-body นั้นจะเป็น xml ซึ่ง ตอนนี้ผมไม่รู้ว่าจะรับค่านั้นอย่างไรอ่ะครับ ก็เลยลองเขียนจำลองการส่งของเค้ามาอ่ะครับ ผมอยากทราบว่าถ้าเป็นเืพื่อนๆแล้วจะรับค่าที่เค้าบอกมาแค่นี้อย่างไรอ่ะครับ หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: EThaiZone ที่ 29 กันยายน 2008, 12:54:50 จะส่ง post
ค่า $data ไม่ควรเพียวๆ ครับ ต้องแนวเช่นจากเดิมสมมุติ $data = "My text\r\nTest test"; ต้องเป็น $data = "My text\r\nTest test"; $data = "text=".urlencode($data); แล้วที่หน้ารับ ก็ของดูค่า $_POST ดู น่าจะเจอ แล้่วถ้าจะแปลงค่ากลับ ก็ใช้ urldecode :) อธิบายเพิ่ม ที่ผมพูดไปก็คือการส่ง query string ซึ่งสำหรับ GET เราจะเห็นต่อท้ายจาก ? ใน url สำหรับ POST เอง ก็ไม่ต่างจาก GET เพียงแต่ค่ามันจะถูกส่งต่อจาก header ซึ่งเป็นการทำงานในเบื้องหลังของโปรโตคอลนั้นเอง :) หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: kero ที่ 29 กันยายน 2008, 13:01:58 The standard format for the POST method is: POST <URL> HTTP 1.x <CRLF> [message-body] All content is URL encoded. คือเนี้ยอ่ะครับประเด็นที่ผมต้องหาวิธีการส่ง post request http อ่ะครับ ผมไม่รู้ว่าจะรับค่านี้อย่างไร เค้าให้เอกสารมาบอกแค่นี้อ่ะครับ โดย message-body นั้นจะเป็น xml ซึ่ง ตอนนี้ผมไม่รู้ว่าจะรับค่านั้นอย่างไรอ่ะครับ ก็เลยลองเขียนจำลองการส่งของเค้ามาอ่ะครับ ผมอยากทราบว่าถ้าเป็นเืพื่อนๆแล้วจะรับค่าที่เค้าบอกมาแค่นี้อย่างไรอ่ะครับ แค่ต้องการจำลองการส่ง ทำไมไม่ทำหน้า form แล้วส่ง ไม่ง่ายกว่าเหรอครับ ??? ผมว่า post รับมันง่ายกว่าส่งนะ ไม่ลองเขียนรับของจริงไปเลยล่ะ หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: zo501 ที่ 29 กันยายน 2008, 13:18:47 งงเป็นไก่ตาแตกเลย :P
ตรงบรรทัดไหน fn รับข้อมูลจาก fsock อะ เห็นมีแต่เขียนข้อมูล ผมคิดว่าตัวรับเต้องขียนเป็น script รันแบบ deamon เอานะ ไม่งั้นส่งไปแล้วมันไม่รู้หรอกว่าคุณส่งมา หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: oxygenyoyo ที่ 29 กันยายน 2008, 13:24:21 รับของจริง ผมเขียนแล้วไม่มีข้อมูลอะไรมาเลยอ่ะครับ
โค๊ด: if($GLOBALS['GLOBALS']['HTTP_RAW_POST_DATA']){ ลอง echo $XML_STR มาก็ไม่มีอะไรเลยอ่ะครับ โค้ดข้างบนคือหน้ารับข้อมูลอ่ะครับ หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: oxygenyoyo ที่ 29 กันยายน 2008, 13:32:11 อ้างถึง ผมคิดว่าตัวรับเต้องขียนเป็น script รันแบบ deamon เอานะ ไม่งั้นส่งไปแล้วมันไม่รู้หรอกว่าคุณส่งมา หมายความว่าไงอ่ะครับ ? หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: EThaiZone ที่ 29 กันยายน 2008, 13:36:35 ลองแบบนี้ละกัน ยังรับค่าไม่ได้ให้เตะหมาข้างบ้าน :-X
โค๊ด: echo file_get_contents("php://input"); กรำ แก้ๆ พิมพ์ผิด จะเล่นมุขหมาข้างบ้าน อันนี้ใช้รับค่าที่ต่อจาก header ล้วนๆ เลย :P หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: ball6847 ที่ 29 กันยายน 2008, 13:39:01 เอ้อ งง
ทีแรกที่ผมบอกฟังก์ชั่นไป เพราะคิดว่าฟังก์ชั่นที่ท่านใช้มันมีข้อผิดพลาดง่าย อย่างตรง host data หรือ path ผมไม่ทราบว่าท่านใส่ไปยังงัย ทั้ง 3 ตัวแปรใส่ผิดนิดนึงคือไม่ส่งค่าโพสท์ทันทีอ่ะ ผมเลยเขียนฟังก์ชั่น ให้มันดูง่ายขึ้น แต่ว่ามันผิดจุดประสงค์ของท่านไป ไม่เป็นไร เอางี้ จากฟังก์ชั่นผมนะ ไปสร้างไฟล์อีกไฟล์แบบนี้ สมมุตชื่อไฟล์ submit.php โค๊ด: <?php แล้วลอง fsock เข้าไปแล้วดูว่า response body เป็นยังงัย อย่างเช่น โค๊ด: <?php ถ้ามันรับค่าโพสท์จาก fsock ได้ ผลการรันควรจะเป็นแบบนี้ โค๊ด: Array หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: ball6847 ที่ 29 กันยายน 2008, 13:47:06 The standard format for the POST method is: POST <URL> HTTP 1.x <CRLF> [message-body] All content is URL encoded. คือเนี้ยอ่ะครับประเด็นที่ผมต้องหาวิธีการส่ง post request http อ่ะครับ ผมไม่รู้ว่าจะรับค่านี้อย่างไร เค้าให้เอกสารมาบอกแค่นี้อ่ะครับ โดย message-body นั้นจะเป็น xml ซึ่ง ตอนนี้ผมไม่รู้ว่าจะรับค่านั้นอย่างไรอ่ะครับ ก็เลยลองเขียนจำลองการส่งของเค้ามาอ่ะครับ ผมอยากทราบว่าถ้าเป็นเืพื่อนๆแล้วจะรับค่าที่เค้าบอกมาแค่นี้อย่างไรอ่ะครับ เชเช เข้าใจแระ เหมือนจะงง ไม่ใช่จำลองการรับค่า POST METHOD แล้วคับ หลงประเด็นไปไกลเลยทั้งผมด้วย แต่เป็นการอ่าน xml request มากกว่า เหมือนจะเป็น api อะไรสักอย่างใช่มะ หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: oxygenyoyo ที่ 29 กันยายน 2008, 13:53:01 โค๊ด:
ตอนนี้ผมใช้โค้ดข้างบนนี้ก็สามารถรับค่าได้แล้วครับ ข้างล่างคือ respone ครับ โค๊ด: HTTP/1.1 200 OK หัวข้อ: Re: เกี่ยวกับการับค่าครับ PHP เริ่มหัวข้อโดย: zo501 ที่ 29 กันยายน 2008, 15:17:33 แก้ได้แล้ว :D ดีใจด้วยครับ :)
|