【问题标题】:POST without Form Method (PHP)没有表单方法的 POST (PHP)
【发布时间】:2011-08-10 20:21:52
【问题描述】:

有没有什么方法可以在不使用表单的情况下使用 POST 方法将内容从一个页面传递到另一个页面。

就像在 get 中一样,您只需在 ? 后面加上您想要发送的任何内容。你能为post做点什么吗?

我还阅读了另一个说使用会话的线程。但是会话作为 cookie 保存在用户计算机上,并且 cookie 是不安全的。

那么还有其他方法吗?比如在第一页描述一些东西,然后把它传递到第二页。

如果有人能解释一下 POST 方法是如何工作的,那就太好了?它又是如何传递数据的?

【问题讨论】:

  • 您可以使用 GET,或者更好的是您可以使用 jQuery,这样您就不必创建表单。 jQuery 具有强大的 ajax 功能,可以让您更轻松
  • 您的意思是从用户的浏览器发出请求,还是从您的脚本发出请求?
  • 为什么 cookie 不安全?似乎会话在这里是正确的解决方案。只有会话 ID 存储在 cookie 中。数据存储在服务器上。 POST 的工作原理:en.wikipedia.org/wiki/HTTP_POST 基本上,不是将数据附加到 URL,而是在请求正文中发送。您必须说明您真正想做什么,以便我们为您提供帮助。
  • 简而言之:没有。但是你为什么不想使用 POST 呢?
  • GET 通过请求 url 传递参数,POST 通过请求正文传递参数(即使在标头之后)。你不能简单地形成没有表格的 POST 请求。为此使用 Jquery 或纯 javascript。会话也不会保存在用户计算机上 - 仅限会话 ID。

标签: php html 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 documentation
AJAX function documentation
AJAX tutorial

【讨论】:

  • 虽然这显示了如何在没有表单的情况下发出 POST 请求,但它可能不是 OP 尝试做的一个好的解决方案。
  • 这只是一个代码。他也应该自己想办法。
  • 在您的示例中,AJAX CODE :::::::: 我感觉 beforeSend: 应该用单引号括起来。
【解决方案2】:

只使用会话。

cookie 中的会话存储如上述答案所示,仅限于会话 ID。如果您有安全意识,甚至可以将 Cookie 配置为仅作为 HTTP-cookie 发送。

在请求页面,设置你想要的会话键值对。在请求的页面上请求先前设置的会话密钥(首先检查它是否存在)。在您的 php.ini 中,您可以选择仅将会话 cookie 用作 HTTP-only,这样您就有了更高的安全性。

此外:发布数据也可以像使用 AJAX 或 cURL 一样简单,如上所述。

【讨论】:

    【解决方案3】:

    服务器端您可以使用cURL 扩展来实现这一点。教程:here 不过,我不能 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();
            });
            

            您也可以使用链接(&lt;a&gt; 标签)代替按钮等。

            这将使浏览器转到另一个页面。如果你想留在当前页面,只是在后台发布一些数据,请使用 jQuery 或类似库中的 ajax 函数。

            【讨论】:

              猜你喜欢
              • 2021-06-17
              • 2019-06-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-10-09
              • 1970-01-01
              • 2013-10-27
              • 1970-01-01
              相关资源
              最近更新 更多