POST без метода формы (PHP)

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

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

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

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

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

Ответ 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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

вы можете использовать функцию 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> tag) вместо кнопки и т.д.

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