将数据POST到PHP中的URL

Bel*_*ish 90 php post

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

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

Pet*_*lmo 188

如果您希望将数据从PHP代码本身发布到URL(不使用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 );
Run Code Online (Sandbox Code Playgroud)

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

  • 尽管您的解决方案是正确的,但我认为OP想知道如何使用HTML表单.虽然问题不是很清楚. (2认同)
  • 注意详细说明`CURLOPT_FOLLOWLOCATION`,`CURLOPT_HEADER`和`CURLOPT_RETURNTRANSFER`做什么?我不喜欢复制我不完全理解的代码. (2认同)
  • @Mike虽然这是真的,但我更希望答案中的所有内容都从一开始就清楚或在答案中进行解释,因为人们通常会来stackoverflow寻求答案而不是得到更多问题。 (2认同)

Bur*_*ürk 75

你可以在php5中使用cURL-less

$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);
Run Code Online (Sandbox Code Playgroud)

  • file_get_contents通常在第三方主机上禁用,cURL是唯一的选项 (6认同)
  • @KryptoniteDove我知道它经常被禁用。由于我在回答“ CURLESS”的上方加上一行 (2认同)

jfo*_*her 10

您的问题不是特别清楚,但如果您想在不使用表单的情况下将POST数据发送到网址,您可以使用fsockopen或curl.

是两者的相当不错的演练

  • 链接不再好用了。 (2认同)