fopen не работает: почему $ _POST пуст?

0

У меня есть два файла active.php и passive.php. Я хочу, чтобы active.php отправлял данные без взаимодействия с пользователем на passive.php, как описано здесь. Если мой код работал, в конце массив $ _POST должен содержать 'Name' => 'John Doe' вместо того, чтобы быть пустым, поскольку мой навигатор сообщает мне. Что я сделал не так?

Я полностью понимаю, что есть решения, использующие Javascript (как описано здесь) или cURL (как описано здесь), но этот вопрос касается только метода PHP, поэтому, пожалуйста, не оставляйте никаких комментариев или ответов, связанных с Javascript или cURL.

Содержание passive.php:

<?php
     var_dump($_POST);
  ?>

Содержание active.php:

  <?php

   $post_data=array('Name'=>'John Doe');
   $url='http://localhost:8888/passive.php';
   $params = array('http' => array(
                'method' => 'POST',
                'content' => $post_data
             ));
   $ctx = stream_context_create($params);
   $fp = @fopen($url, 'rb', false, $ctx);
   $response = @stream_get_contents($fp);
   fclose($fp);
   var_dump($response);

?>
  • 0
    Возможно, вы захотите попробовать добавить заголовок в контекст вашего потока
Теги:
post

1 ответ

0
Лучший ответ

На самой странице руководства PHP, найденной здесь, в рейтинге комментариев объясняется, как выполнить операцию POST с использованием потока. Как уже упоминалось в комментарии выше, вы просто пропускаете заголовок

$post_data=array('Name'=>'John Doe');
$url='http://localhost:8888/passive.php';

$params = array(
  'http' => array
  (
      'method' => 'POST',
      'header'=>"Content-Type: application/x-www-form-urlencoded",
      'content' => $post_data
  )
);

$ctx = stream_context_create($params);
$fp = fopen($url, 'rb', false, $ctx);

$response = stream_get_contents($fp);
  • 0
    Ваше решение является неполным (и не работает на моем компьютере), но на странице, на которую вы ссылаетесь, я нашел другой совет: замените $ post_data на http_build_query ($ post_data). Объединение этого с заголовком работает на моем компьютере. Спасибо за вашу косвенную помощь
  • 0
    @WarrenBeadus - Рад, что он отсортирован и может быть полезен :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню