Публикация без метода Form (PHP)

#php #html #post

#php #HTML #Публикация

Вопрос:

Есть ли какой-либо способ передать материал с одной страницы на другую с помощью метода POST без использования форм.

Как и в get, вы можете просто добавить ? ко всему, что хотите отправить. Можете ли вы что-нибудь сделать для post.

Я также прочитал один другой поток, в котором говорилось об использовании сеансов. Но сеансы сохраняются на компьютере пользователя в виде файлов cookie, а файлы cookie небезопасны.

Итак, есть ли какой-либо другой способ сделать это? Например, описать что-то на первой странице, а затем передать это на вторую страницу.

Также было бы хорошо, если бы кто-нибудь мог объяснить мне, как работает метод POST? И как он передает данные?

Комментарии:

1. вы можете использовать GET, или, что еще лучше, вы можете использовать jQuery, чтобы вам не приходилось создавать форму. jQuery обладает надежной функциональностью ajax, которая может упростить для вас

2. Вы имеете в виду сделать запрос из браузера пользователя или из вашего скрипта?

3. Почему файлы cookie небезопасны? Кажется, что сеансы были бы правильным решением здесь. В файле cookie сохраняется только идентификатор сеанса. Данные хранятся на сервере. Как работает POST: en.wikipedia.org/wiki/HTTP_POST По сути, вместо добавления данных к URL-адресу они отправляются в теле запроса. Вы должны объяснить, что вы на самом деле хотите сделать, чтобы мы могли вам помочь.

4. Короче говоря: нет. Но почему вы не хотите использовать POST?

5. ПОЛУЧИТЬ параметры передачи через URL запроса, параметры передачи POST через тело запроса (даже после заголовков). Вы не можете просто сформировать запрос POST без форм. Используйте Jquery или чистый javascript для этого. Также сеанс НЕ сохраняется на компьютере пользователя — только идентификатор сеанса.

Ответ №1:

Для этого вам следует использовать jQuery. Вы можете использовать его ajax() функцию. Перейдите по ссылке ниже и прочитайте полное описание вместе со списком функций, которые помогут вам в этом.

Вот пример кода для вас:

 <hmtl>
    <head>
        <script type="http://code.jquery.com/jquery-1.5.1.min.js"></script>
    </head>
    <body>
        <div class="my-fake-form">
            <input id="posting-value-1" type="text" />
            <a id="submit-form-link" href="#submit">Submit this Div!</a>
        </div>
    </body>
</html>
  

Ajax-код:

 function fake_form_submit ()
{

    var post = $('input#posting-value-1').val();

    $.ajax({
    'url': 'your-php-file.php',
    'type': 'POST',
    'dataType': 'json', 
    'data': {post: post},
    'success': function(data)
     {
         if(data.finish)
         {
            $("div.my-fake-form").attr("innerHTML","Form Submited!");
         }
         else
         {
            $("div.my-fake-form").attr("innerHTML","Form Not Submited!");   
         }
     },
     beforeSend: function()
       {
            $(document).ready(function () {
                $("div.my-fake-form").attr("innerHTML","Loading....");
            });
       },
        'error': function(data)
        {
          $(document).ready(function () {
            $("div.my-fake-form").attr("innerHTML","ERROR OCCURRED!");
          });
        }
      });
}

$(document).ready(function () {
    $('a#submit-form-link').click(function (e) {
       e.preventDefault();
       fake_form_submit();
    });
});
  

PHP:

 <?php
$post = $_POST['post'];

//Do Something with the value!

//On Succes return json encode array!
echo json_encode(array("finish" => true));
?>
  

Документация AJAX
Документация по функции AJAX
Учебное пособие по AJAX

Комментарии:

1. Хотя здесь показано, как выполнить запрос POST без формы, это, вероятно, не очень хорошее решение для того, что пытается сделать OP.

2. Это всего лишь код. Он тоже должен разработать какой-нибудь свой собственный.

3. в вашем примере AJAX-КОД :::::::: я чувствую, что beforeSend: должен быть заключен в одинарные кавычки.

Ответ №2:

Просто используйте сеансы.

Хранение сеансов в файле cookie, как указано в ответах выше, ограничено идентификатором сеанса. Файлы cookie можно даже настроить для отправки только в виде HTTP-файлов cookie, если вы заботитесь о безопасности.

На странице запроса установите нужную вам пару ключ-значение сеанса. На запрашиваемой странице запросите ранее установленный сеансовый ключ (сначала проверьте, существует ли он). В you’re php.ini вы можете выбрать использование сеансовых файлов cookie только по протоколу HTTP, чтобы обеспечить большую безопасность.

Кроме того: публикация данных может быть такой же простой, как использование AJAX или cURL, как описано выше.

Ответ №3:

На стороне сервера вы можете достичь этого, используя расширение cURL. Руководство: здесь я не уверен на 100%, что вы ищете решение на стороне сервера, хотя?

Ответ №4:

вы можете использовать Ajax-запросы для отправки POST-запросов на сервер. или cURL на стороне сервера.

Ответ №5:

Вам понадобится некоторый javascript, если вы хотите опубликовать из браузера и придать ему вид ссылки:

вы можете использовать функцию submit() . смотрите http://www.javascript-coder.com/javascript-form/javascript-form-submit.phtml например.

но если вы хотите, чтобы он действовал как GET, почему бы не использовать GET ?

Ответ №6:

Для отправки запроса в POST со страницы вы можете использовать jQuery.post (в этом случае вы должны использовать библиотеку) или cURL (на php)

Ответ №7:

Один из способов — использовать JavaScript для отправки невидимой формы. HTML:

 <button id="my-button">Go to other page</button>
<form id="my-form" method="POST" action="/other-page" style="display: none">
  <input type="hidden" name="param1" value="value1">
  <input type="hidden" name="param2" value="value2">
</form>
  

JavaScript (jQuery):

 $("#my-button").click(function(e) {
    $("#my-form").submit();
});
  

Вы также могли бы использовать ссылку ( <a> тег) вместо кнопки и т.д.

Это заставит браузер перейти на другую страницу. Если вы хотите остаться на текущей странице и просто опубликовать некоторые данные в фоновом режиме, используйте функции ajax в jQuery или аналогичных библиотеках.