Отправка данных POST без формы

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

 Samuel23 сент. 2010 г., 19:28
ну я передаю его из одного файла в другой на том же сервере
 buggedcom23 сент. 2010 г., 19:26
Не совсем понятно, куда вы отправляете данные. Это клиент на сервер или сервер на сервер или сервер на другой сервер?
 Gazler23 сент. 2010 г., 19:23
Похоже, вам нужно использовать сеансы.
 Samuel23 сент. 2010 г., 19:32
окей сессии
 flatline23 сент. 2010 г., 19:28
Данные будут почти одинаково хорошо отображаться через POST, как и через GET, пары ключ-значение просто не будут отображаться в адресной строке, но информация все еще передается в открытом виде, если вы не используете SSL или это строго межсерверный тип вещей по защищенному каналу связи.
 riwalk23 сент. 2010 г., 19:29
Данные POST чрезвычайно видны для пользователя (только не для вашего обычного пользователя). Сессии - это путь.

Ответы на вопрос(5)

Просто используйте: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);

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

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

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

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

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

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

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

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

Решение Вопроса

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

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

Проверять, выписыватьсяэтот урок на сессиях PHP.

 Stephen Holiday23 сент. 2010 г., 20:30
Почему это плохое решение? Возможно, процесс Самуила таков, что угон сеанса не является проблемой. Единственный способ по-настоящему решить перехват сеанса (ненавязчивым способом) - использовать SSL для всех запросов, связанных с сеансом. Если Сэмюэля беспокоит утечка данных, ему следует использовать SSL.
 riwalk24 сент. 2010 г., 20:44
@zolex, что такого сложного в перехвате почтовых данных? Сидеть в кафе с запущенным WireShark - это все, что вам нужно для кражи данных POST. Создайте запрос заново с помощью файлов cookie и отправьте данные, и все готово. Если вы считаете сессии плохим решением, то SSL - единственное хорошее решение.
 Andreas Linden25 сент. 2010 г., 02:25
классический пользовательский сбой при отправке конфиденциальных данных из кафе;) и, кстати, вопрос заключался в том, как отправить данные поста с помощью php, чтобы не выставлять данные в URL, т.е. он не будет регистрироваться веб-сервером и т. д. Я думаю, что это было главной целью ... мой ответ действительно отвечает на вопрос и не дает обходного пути, подобного вашему. хорошо, если он в порядке с этим. Поцелуй;)
 Andreas Linden23 сент. 2010 г., 20:17
это не очень хорошее решение, даже если автор принял это в качестве обходного пути. Кроме того, сеансы легче перехватить, чем манипулировать почтовым запросом (т. е. атакой «человек посередине»).

которые вы можете отправить после запроса, используя их.

fsockopen()
fputs()

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

также нашелхороший пример используя гугл ...

если вам не нужны формы.

Использование jquery$ .post Метод довольно прост:

$.post('/foo.php', { key1: 'value1', key2: 'value2' }, function(result) {
    alert('successfully posted key1=value1&key2=value2 to foo.php');
});
 Samuel23 сент. 2010 г., 19:30
Я не знал, что AJAX был Javascript, и я не могу использовать Javascript
 Pushpendra Singh31 дек. 2015 г., 14:05
@DarinDimitrov Можем ли мы отправить массив json с пост-запросом. Я хочу отправить массив с почтовым запросом.
 Samuel23 сент. 2010 г., 19:25
Как я могу это сделать?
 Darin Dimitrov23 сент. 2010 г., 19:29
@ Самуил, теперь, если ты говоришь, что яваскрипт не разрешен, то все становится довольно невозможным :-)
 Gazler23 сент. 2010 г., 19:26
Это JavaScript. AJAX = Асинхронный JavaScript и XML
 Gem04 июл. 2019 г., 09:21
Как разместить выходные данные на другой странице PHP, используя метод POST,pastiebin.com/5d1da8d6643ec и мой код восстановления PHP:pastiebin.com/5d1da94043f95 @ Darin Dimitrov
 wpcoder27 окт. 2017 г., 19:25
Теги вопроса - это PHP, это не PHP
 Dheeraj16 нояб. 2015 г., 07:38
это, вероятно, лучший ответ здесь, использующий jquery для выполнения тяжелой работы, и это также работает после того, как страница была обработана.
 Samuel23 сент. 2010 г., 19:38
я не могу использовать javascript для основных функций, и я искал способы передачи информации без форм, я мог бы использовать скрытые формы, но я искал более элегантный способ (я полностью забыл о сессиях)
 Darin Dimitrov23 сент. 2010 г., 19:31
Что вы можете использовать на самом деле? Вы разрабатываете веб-сайт или что-то еще, потому что, говоря, что вы не можете использовать формы и javascript, вы начинаете с огромных препятствий в веб-разработке с самого начала? Это потому, что технически вы не знаете JavaScript или есть какая-то другая причина?

Ваш ответ на вопрос