【问题标题】:php Same form multiple times in same pagephp 在同一页面中多次使用相同的表单
【发布时间】:2011-09-22 13:32:22
【问题描述】:

所以我在同一页面中有 2-3 次相同的表单,这是一个投票问题,它是从数据库动态生成的,所以它与其他表单相同,但是当我点击提交按钮时,我也可以投票给其他表单,因为每个按钮上的按钮与其他按钮具有相同的名称...

我该如何解决这个问题,以免影响其他民意调查?

表格是这样的:

<form action="" method="post" name="form">
radio buttons here...
<input type="submit" value="Vote" name="btn" />
</form>

【问题讨论】:

  • 表单名称应该不同
  • 我在 form 旁边添加了一个计数器,所以它类似于 form1 , form2 等。但问题仍然存在
  • 表单根本不应该有名字,它们应该have ids
  • 您将表单名称更改为ids 很好,但是您是否正在检查服务器端提交的表单?即值来自哪种形式。您是否有一个WHERE 子句告诉在您的SQL 查询中向哪个投票添加投票??
  • 这是在一个 while 循环中完成的,我从系统中获取所有民意调查...我不知道这是否会导致问题...

标签: php forms submit


【解决方案1】:

您可以为每个表单设置不同的名称,也可以在每个表单中设置一个隐藏字段来告知问题 ID。

<form action="" method="post" name="form">
radio buttons here...
<input type="hidden" name="poll_id"  value="(Your_question_id)">
<input type="submit" value="Vote" name="btn" />
</form>

因此,在此之后,在您的 SQL 部分中,只需在 WHERE 子句中添加 poll_id 即可。认为这应该工作

【讨论】:

  • 但是如果用户没有从单选按钮中选择一个选项,它将显示一条消息,用户需要选择一些东西......所以问题仍然存在......
【解决方案2】:

您必须为表单使用 id 字段。我的网站上也有多种表格。所以我总是将带有表单名称(id)的隐藏字段发送回服务器。当我的应用程序收到 POST 请求时,我首先读取带有表单 ID 的隐藏字段。你也可以这样做,所以你知道投票ID。当用户没有选择任何单选按钮时,我不明白您的问题。

【讨论】:

    【解决方案3】:

    最简单的解决方案是更改表单操作 - 然后它将指向不同的 uri,这应该可以解决问题:

    <form action=".../vote/id-of-first-poll">
    ...
    </form>
    
    <form action=".../vote/id-of-second-poll">
    ...
    </form>
    
    <form action=".../vote/id-of-third-poll">
    ...
    </form>
    

    那么您只需将传递的 id 从 url 应用到更新查询中的“where”...

    顺便说一句:不确定你有多先进,所以如果你不使用任何框架,拥有这样的网址可能会容易得多:

    • vote.php?id=id-of-first-poll
    • vote.php?id=id-of-second-poll

    那么你可以通过 $_GET["id"] 得到那个 id

    【讨论】:

    • 我所描述的是一个管理员功能,因此如果尚未投票,管理员可以在查看民意调查时投票。但我可能会删除它,因为它似乎没有必要......跨度>
    猜你喜欢
    • 1970-01-01
    • 2011-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-24
    相关资源
    最近更新 更多