Как отправить HTTP запрос методом POST на URL через PHP?

Как отправить HTTP запрос методом POST на URL через PHP?
  • Вопрос задан
  • 225889 просмотров
Решения вопроса 1
Tyranron
@Tyranron
Действительно, за время, которое потратили на создание вопроса, Вы могли без проблем найти интересующую Вас информацию в любом поисковике.

Но раз вопрос уже задан, то должен быть и ответ(ы).
Собственно, @OnYourLips дал ссылку на хороший фреймворк, но если нет смысла тащить в проект/скрипт целый фреймворк ради одного запроса, к примеру, то логичнее воспользоваться упомянутым CURL. В Вашем случае сценарий использования CURL будет выглядеть примерно следующим образом:
$myCurl = curl_init();
curl_setopt_array($myCurl, array(
    CURLOPT_URL => 'http://target.site.com/form.php',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query(array(/*здесь массив параметров запроса*/))
));
$response = curl_exec($myCurl);
curl_close($myCurl);

echo "Ответ на Ваш запрос: ".$response;

Если надо передать при этом ещё и файлы, или обратиться по https, или ещё чего Вам понадобится - добро пожаловать в документацию:
http://php.net/manual/ru/book.curl.php
Советую обратиться к документации в любом случае, дабы ознакомиться со всеми возможными нюансами, а также понять и выбрать то, что конкретно Вам потребуется для решения Вашей задачи.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
GeneMoss
@GeneMoss
void
$url = 'http://localhost/post.php';
$params = array(
    'param1' => '123', // в http://localhost/post.php это будет $_POST['param1'] == '123'
    'param2' => 'abc', // в http://localhost/post.php это будет $_POST['param2'] == 'abc'
);
$result = file_get_contents($url, false, stream_context_create(array(
    'http' => array(
        'method'  => 'POST',
        'header'  => 'Content-type: application/x-www-form-urlencoded',
        'content' => http_build_query($params)
    )
)));

echo $result;
Ответ написан
taliban
@taliban
php программист
Это капец, все что угодно перечислили, лишь не встроенную функцию
http://php.net/manual/ru/function.file-get-contents.php#108309
Ответ написан
Можно отправить POST-запрос используя контексты потоковых операций PHP. На хабре есть статья на эту тему.
Ответ написан
Комментировать
Отправляем на сервер:
<?
        $secret = 'DquEn!lw4j3k98SMS#sfud'; // придумываем ключ
        $key1 = microtime(true);
        $key2 = md5($key1.$secret);
        
        $sendData = array(
            'name' => $sUserName,
            'phone' => $sUserPhone,
            'station' => $sStationName,
            'key1' => $key1,
            'key2' => $key2,  
        );
        
        $oCurl = curl_init();
        curl_setopt($oCurl, CURLOPT_URL, "https://site.ru/request.php");
        curl_setopt($oCurl, CURLOPT_POST, true);
        curl_setopt($oCurl, CURLOPT_HEADER, false);
        curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, false);
        curl_setopt($oCurl, CURLOPT_POSTFIELDS, $sendData);
        $result = curl_exec($oCurl);
        curl_close($oCurl);
?>


Принимаем на сервере, файл request.php:
<?
$secret = 'DquEn!lw4j3k98SMS#sfud';

$key1 = $_POST['key1'];
$key2 = $_POST['key2'];

if(microtime(true) - $key1 > 300) die('Неверные ключи');
if($key2 != md5($key1.$secret)) die('Неверные ключи');

$name = strip_tags($_POST['name']);
$name = str_replace("\n", '', $name);
$name = str_replace(";", '', $name);
$name = trim($name); 

$phone = strip_tags($_POST['phone']);
$phone = str_replace("\n", '', $phone);
$phone = str_replace(";", '', $phone);
$phone = trim($phone);

$station = strip_tags($_POST['station']);
$station = str_replace("\n", '', $station);
$station = str_replace(";", '', $station);
$station = trim($station);
Ответ написан
Комментировать
KEKSOV
@KEKSOV
Какой-то народ неадекватный пошел, наверно, новый дизайн так влияет...
Ответ на Ваш вопрос. От себя добавлю ещё один вариант решения pecl_http - HttpRequest.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы