โพสต์ข้อมูลไปยัง URL ใน PHP


96

ฉันจะส่งข้อมูล POST ไปยัง URL ใน PHP (โดยไม่มีแบบฟอร์ม) ได้อย่างไร

ฉันจะใช้สำหรับส่งตัวแปรเพื่อกรอกข้อมูลและส่งแบบฟอร์ม

คำตอบ:


198

หากคุณต้องการโพสต์ข้อมูลไปยัง URL จากโค้ด PHP (โดยไม่ต้องใช้รูปแบบ html) ก็สามารถทำได้ด้วย curl จะมีลักษณะดังนี้:

$url = 'http://www.someurl.com';
$myvars = 'myvar1=' . $myvar1 . '&myvar2=' . $myvar2;

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_POST, 1);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $myvars);
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt( $ch, CURLOPT_HEADER, 0);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec( $ch );

สิ่งนี้จะส่งตัวแปรโพสต์ไปยัง url ที่ระบุและสิ่งที่เพจส่งกลับจะเป็น $ response


2
เท่าที่วิธีแก้ปัญหาของคุณถูกต้องฉันคิดว่า OP ต้องการทราบวิธีการใช้งานในรูปแบบ HTML แม้ว่าคำถามจะไม่ชัดเจนมากนัก
Helen Neely

เราไม่เข้าใจปัญหา แต่มันล็อกโปรแกรม
albatross

2
สนใจที่จะอธิบายรายละเอียดสิ่งที่CURLOPT_FOLLOWLOCATION, CURLOPT_HEADERและCURLOPT_RETURNTRANSFERทำอย่างไร ฉันไม่ต้องการคัดลอกโค้ดที่ฉันไม่เข้าใจทั้งหมด
Stefan Fabian

2
@ ไมค์ในขณะที่เป็นความจริงฉันต้องการให้ทุกอย่างเป็นคำตอบที่ชัดเจนตั้งแต่เริ่มต้นหรืออธิบายในคำตอบเพราะคนมักจะมาที่ stackoverflow เพื่อหาคำตอบเพื่อไม่ให้มีคำถามมากขึ้น
Stefan Fabian

1
@ สเตฟานฉันรู้สึกว่าคำตอบนั้นชัดเจนมาก ... มันตอบคำถาม หากระดับความเข้าใจของคุณต่ำกว่าระดับของคำตอบให้ทำการค้นคว้าเพิ่มเติม เขาจำเป็นต้องอธิบายด้วยว่า$urlhas a $because ใน php นั่นเป็นวิธีที่คุณระบุตัวแปรหรือไม่? คุณลากเส้นตรงไหน? "... ไม่ต้องรับคำถามเพิ่ม" ไม่ใช่ทัศนคติของคนที่จะประสบความสำเร็จจากการเรียนรู้ด้วยตนเองโดยเฉพาะการเขียนโปรแกรม
Mike

75

cURL-less ที่คุณสามารถใช้ใน php5

$url = 'URL';
$data = array('field1' => 'value', 'field2' => 'value');
$options = array(
        'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    )
);

$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result);

6
file_get_contents มักจะถูกปิดใช้งานบนโฮสต์ของบุคคลที่สามและ cURL เป็นตัวเลือกเดียว
KryptoniteDove

3
@KryptoniteDove ฉันรู้ว่ามันมักจะถูกปิดใช้งาน เนื่องจากฉันใส่บรรทัดด้านบนของคำตอบ "CURLESS"
Phd. Burak Öztürk

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.