Отправка данных POST без формы - PullRequest
29 голосов
/ 23 сентября 2010

Могу ли я отправить, например, строку или другой фрагмент информации в другой файл .php, не раскрывая его [таким образом, не GET, а POST соответствует тому, что я знаю], не используя форму?

Ответы [ 6 ]

22 голосов
/ 23 сентября 2010

Если вы не хотите, чтобы ваши данные видели пользователь, используйте сеанс PHP.

Данные в почтовом запросе по-прежнему доступны (и могут использоваться пользователем).

Оформить заказ это руководство на сессиях PHP.

17 голосов
/ 23 сентября 2010

Вы можете использовать AJAX для отправки запроса POST, если вам не нужны формы.

Используя jquery $. Post , метод довольно прост:

$.post('/foo.php', { key1: 'value1', key2: 'value2' }, function(result) {
    alert('successfully posted key1=value1&key2=value2 to foo.php');
});
9 голосов
/ 27 апреля 2011

Отправляйте свои данные с СЕССИИ, а не по почте.

session_start();
$_SESSION['foo'] = "bar";

На странице, где вы получаете запрос, если вам абсолютно необходимы данные POST (какая-то странная логика), вы можете сделать это где-то в начале:

$_POST['foo'] = $_SESSION['foo'];

Почтовые данные будут действительны так же, как если бы они были отправлены с POST.

Затем уничтожьте сеанс (или просто сбросьте поля, если сеанс необходим для других целей).

Важно уничтожить сеанс или сбросить поля, потому что в отличие от POST, SESSION будет действовать до тех пор, пока вы явно не уничтожите его или до конца сеанса браузера. Если вы этого не сделаете, вы можете наблюдать некоторые странные результаты. Например: вы используете sesson для фильтрации некоторых данных. Пользователь включает фильтр и получает отфильтрованные данные. Через некоторое время он возвращается на страницу и ожидает сброса фильтра, но это не так: он все еще видит отфильтрованные данные.

5 голосов
/ 23 сентября 2010

Посмотрите документацию php для этих функций, которые вы можете отправить после запроса, используя их.

fsockopen()
fputs()

или просто использовать класс, такой как Zend_Http_Client , который также основан на socket-conenctions.

также нашел аккуратный пример с помощью Google ...

4 голосов
/ 27 октября 2017

Просто используйте: file_get_contents()

// building array of variables
$content = http_build_query(array(
            'username' => 'value',
            'password' => 'value'
            ));
// creating the context change POST to GET if that is relevant 
$context = stream_context_create(array(
            'http' => array(
                'method' => 'POST',
                'content' => $content, )));

$result = file_get_contents('http://www.example.com/page.php', null, $context);
//dumping the reuslt
var_dump($result);

Ссылка : мой ответ на аналогичный вопрос:

0 голосов
/ 28 июня 2019

function redir(data) {
  document.getElementById('redirect').innerHTML = '<form style="display:none;" position="absolute" method="post" action="location.php"><input id="redirbtn" type="submit" name="value" value=' + data + '></form>';
  document.getElementById('redirbtn').click();
}
<button onclick="redir('dataToBeSent');">Next Page</button>
<div id="redirect"></div>

Вы можете использовать этот метод, который создает новую скрытую форму, чьи «данные» отправляются «post» в «location.php» при нажатии кнопки [Следующая страница].

...