104

How can I send POST data to a URL in PHP (without a form)?

I'm going to use it for sending a variable to complete and submit a form.

3 Answers 3

215

If you're looking to post data to a URL from PHP code itself (without using an html form) it can be done with curl. It will look like this:

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

This will send the post variables to the specified url, and what the page returns will be in $response.

Sign up to request clarification or add additional context in comments.

8 Comments

In as much as your solution is correct, I think the OP wanted to know how to do it with HTML form. Although the question was not very clear.
We couldnt understand the problem but it locks the program.
care to elaborate what CURLOPT_FOLLOWLOCATION, CURLOPT_HEADER and CURLOPT_RETURNTRANSFER do? I prefer not to copy code I don't fully understand.
@Mike while that is true I'd prefer to have everything in an answer to be either clear from the beginning or explained in the answer because people usually come to stackoverflow for an answer not to get more questions.
@Stefan I felt the answer was perfectly clear... it addressed the question. If your level of understanding is below the level of the answer, then do some more research. Does he also need to explain that the $url has a $ because in php that's how you indicate a variable? Where do you draw the line? "... not to get more questions" is not the attitude of someone that will succeed at self-learning, especially programming.
|
81

cURL-less you can use in 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);

2 Comments

file_get_contents is often disabled on third party hosts and cURL is the only option
@KryptoniteDove I know it is often disabled. Due to I put a line top of my answer "CURLESS"
9

Your question is not particularly clear, but in case you want to send POST data to a url without using a form, you can use either fsockopen or curl.

Here's a pretty good walkthrough of both

1 Comment

Link is no longer good.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.