ĐĂNG dữ liệu lên một URL bằng PHP


95

Làm cách nào để gửi dữ liệu POST tới một URL trong PHP (không có biểu mẫu)?

Tôi sẽ sử dụng nó để gửi một biến để hoàn thành và gửi biểu mẫu.

Câu trả lời:


195

Nếu bạn đang tìm cách đăng dữ liệu lên URL từ chính mã PHP (mà không sử dụng biểu mẫu html) thì có thể thực hiện bằng curl. Nó sẽ trông giống thế này:

$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 );

Điều này sẽ gửi các biến bài đăng đến url được chỉ định và những gì trang trả về sẽ ở dạng $ response.


2
Trong chừng mực giải pháp của bạn là đúng, tôi nghĩ OP muốn biết cách thực hiện với biểu mẫu HTML. Mặc dù câu hỏi không được rõ ràng lắm.
Helen Neely

Chúng tôi không thể hiểu sự cố nhưng nó khóa chương trình.
albatross

2
quan tâm để xây dựng những gì CURLOPT_FOLLOWLOCATION, CURLOPT_HEADERCURLOPT_RETURNTRANSFERlàm gì? Tôi không thích sao chép mã mà tôi không hiểu đầy đủ.
Stefan Fabian

1
@Mike trong khi điều đó là đúng, tôi muốn mọi thứ trong câu trả lời phải rõ ràng ngay từ đầu hoặc được giải thích trong câu trả lời vì mọi người thường đến stackoverflow để tìm câu trả lời mà không phải nhận thêm câu hỏi.
Stefan Fabian

1
@Stefan Tôi cảm thấy câu trả lời hoàn toàn rõ ràng ... nó giải quyết được câu hỏi. Nếu mức độ hiểu biết của bạn thấp hơn mức độ câu trả lời, thì hãy thực hiện thêm một số nghiên cứu. Anh ta cũng cần giải thích rằng $urlcó một $bởi vì trong php đó là cách bạn chỉ ra một biến? Bạn ve con đương nay ở đâu vậy? "... không nhận thêm câu hỏi" không phải là thái độ của một người sẽ thành công khi tự học, đặc biệt là lập trình.
Mike

75

cURL-less bạn có thể sử dụng trong 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 thường vô hiệu hóa trên host của bên thứ ba và cURL là lựa chọn duy nhất
KryptoniteDove

3
@KryptoniteDove Tôi biết nó thường bị vô hiệu hóa. Do tôi đã đặt đầu dòng câu trả lời của mình là "CURLESS"
Phd. Burak Öztürk

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.