【问题标题】:How to use Post method without a Form如何在没有表单的情况下使用 Post 方法
【发布时间】:2010-12-13 16:27:14
【问题描述】:

我是那种花更多时间在web项目中寻找错误并纠正它们的人,但我仍然对GET和POST方法的使用有一个疑问

总而言之,对于可能来自链接或简单按钮示例的查询,我经常使用 GET 方法:

<a href="example.php?n=2030004">Click me</a>

对于表单(注册、登录或评论),我使用 post 方法。但问题是:

有时(例如,多步骤注册),我可能需要将从第 1 页的表单收集的信息传递到第 2 页(用户可以在其中找到例如验证码)。如果验证码测试是 Okey,则将它们发送到数据库。但问题是,如何在不使用隐藏表单的情况下通过 POST 方法将这些信息传递到下一页? 我需要使用套接字从头开始重新创建 POST 方法吗?

谢谢你

【问题讨论】:

  • 很抱歉,我刚刚在另一个页面中发现了一个类似的主题,但我认为复制它真的是一个很棒的主题。
  • 有或没有 jquery/javascript??
  • 不,它只是关于 XTML 和 PHP。当一些 POST 参数传递到第二页时,我想将这些信息重新发送到第三页,而不使用第二页中的隐藏表单(所有这些都使用 post 方法)
  • Oliver 在下面是正确的。可能没有比使用会话或 cookie 存储数据更好的解决方案(如果我理解正确的话)。在任何情况下,您都需要将该数据存储在某处。根据您的动机,另一个可能的解决方案是在您进行时简单地将信息存储到数据库中。然后运行一个 cron 来检查状态,如果超过一天左右清除不完整的结果。但同样,为了让事情井井有条,您可能需要定期发布帖子和/或会话以及错误检查,因为这些事情在任何情况下都可能被欺骗。

标签: php post get


【解决方案1】:

您可以使用 JavaScript (jQuery):

首先你需要加载jQuery(使用谷歌作为主机或者你下载它):

<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"></script>

那么……

    <script type="text/javascript">
    $(document).ready(function() {
         $('#Link').click(function() {
              $.post("example.php", { n: "203000"} );
         });
    });
    </script>

<a id="Link" href="#">Click me</a>

编辑

然后将其保存在 example.php 中的SESSION

$ _SESSION['N'] = (int) $_POST['n'];

当这个值将被存储在服务器端。并绑定到客户端会话,直到他关闭浏览器或它在服务器端为该会话设置的时间用完。

编辑2: 还有另一种发布请求的可能性,是的.. 但我自己不喜欢这种方法...... 这是使用的形式,这是 OP 不想要的。

<form name="myform" action="example.php" method="POST">
    <input type="hidden" name="n" value="203000">
       <a id="Link" onclick="document.myform.submit()" href="#">Click me</a>
</form>

【讨论】:

  • @sv88erik 但这似乎是一个get方法
  • @Col。弹片:现在他问如何在没有表单元素的情况下做到这一点
  • 你的 jquery 是相同的形式,只是形式不同。他只需要一个会话,而不是愚蠢的 jquery
  • @Col。弹片:如果你看到的少一点:),所以我把值保存在SESSION中,这样他就可以转到下一页,或者他想要什么。并且该值被缓存,以便您可以更进一步。
  • @Simo 您的第二个页面不必在任何地方发送任何内容!!!您的所有页面都将表单数据发送到服务器,而不是其他页面!所以,你的数据已经在服务器上了!它存储在会话中,而不是数据库中。你终于明白了吗?
【解决方案2】:

使用会话存储数据,直到您提交它们: http://de.php.net/manual/en/intro.session.php。 使用会话有一个很大的优势, 一旦您验证了数据,您就可以存储它。

请记住,用户可能会操纵 POST 请求!

【讨论】:

  • @Ash 关注链接?
  • 我只在登录、投票或查看次数中使用会话(投票以防止某人投票两次,查看以防止同一用户查看两次..),但不能用于我可以用 javascript 做的事情.无论如何+1
【解决方案3】:

如果问题是像在多步骤表单中那样在页面之间传递信息,您应该使用会话(如果您使用的是 PHP)。 顺便说一句,发送没有表单的 POST 请求,您需要使用 CURL,如 example

【讨论】:

  • 在多步骤注册的这个特殊示例中使用 curl 有什么用?您要将数据发送到哪里?
【解决方案4】:

语句是浏览器用来启动 POST/GET 数据关系的 HTML 语言语句。浏览器是执行环境。

您可以使用 Java、Java Script、C# 等其他语言(及其执行环境)来启动 HTTP POST/GET 数据关系。

【讨论】:

  • 谢谢+1,问题是9岁。你刚刚触发了我 20 岁时的一些回忆。最好的
【解决方案5】:

抱歉,如果我没有正确理解您,但从我所阅读的内容来看,您想访问在第 2 页的第 1 页输入的表单数据(使用带有 post 方法的表单)?如果是这样,请使用 $_POST 自动全局数组。例如,$nameOnPage2 = $_POST['nameFromPage1']。您不必为此在第二页上创建表单。

【讨论】:

  • 不,问题是如何在不使用隐藏表单的情况下使用 POST 方法将信息从第二页传递到第三页?
  • @Simo 您迫切需要了解页面是什么以及要将数据发送到哪里。除非这完全是浪费时间。
  • 第 1 页的 $_POST 自动全局数组数据在第 2 页上不存在。看图
猜你喜欢
  • 2013-11-29
  • 1970-01-01
  • 2016-09-20
  • 1970-01-01
  • 2017-03-26
  • 1970-01-01
  • 2018-11-05
  • 1970-01-01
  • 2011-04-18
相关资源
最近更新 更多