将数据发布到PHP中的URL


94

如何将POST数据发送到PHP中的URL(无表单)?

我将使用它来发送变量以完成并提交表单。

Answers:


193

如果您要从PHP代码本身(不使用html表单)将数据发布到URL,则可以使用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 );

这会将post变量发送到指定的url,页面返回的内容将在$ response中。


2
在您的解决方案正确的范围内,我认为OP希望知道如何使用HTML表单进行操作。虽然问题不是很清楚。
Helen Neely 2010年

我们无法理解问题,但是它锁定了程序。
信天翁

2
详细地谈一谈什么CURLOPT_FOLLOWLOCATIONCURLOPT_HEADER以及CURLOPT_RETURNTRANSFER做什么?我不想复制我不完全理解的代码。
Stefan Fabian

1
@Mike的确如此,我希望答案中的所有内容要么从一开始就很清楚,要么在答案中进行解释,因为人们通常会在stackoverflow上寻求答案而不是得到更多问题。
Stefan Fabian

1
@Stefan我觉得答案很明确……它解决了这个问题。如果您的理解水平低于答案的水平,请进行更多研究。他是否还需要解释,在php中$url有一个$因为指示变量的方式?您在哪里划界线?“……不问更多问题”并不是成功学习自学的人的态度,尤其是编程。
迈克

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 2014年

3
@KryptoniteDove我知道它经常被禁用。由于我把我的回答“CURLESS”一条线顶
布拉克Öztürk的

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.