【问题标题】:Why do we put "?" in action = "?"我们为什么要放“?”在行动=“?”
【发布时间】:2014-03-11 01:02:08
【问题描述】:

我在用Mysql学习Php的时候遇到了一个问题:

<form action="?" method="POST">
    .
    .
    .
</form>

我们为什么要放“?”在action 属性中?
PS:此表单用于将文本插入数据库。

实际上,我有一个 Index.php 文件作为控制器,还有 2 个文件(form.html.phpjoke.html.php 作为模板)。在本教程中,我首先单击“添加笑话”链接以包含 form.html.php 文件,在此表单中有 &lt;form action="?"&gt; &lt;/form&gt; 和提交 &lt;input&gt;。当我点击提交时,控制器索引测试并执行插入的 SQL 查询。

谢谢。

【问题讨论】:

  • "?"用于形成 GET 变量查询字符串。这会将表单(带有表单编码的 POST 数据)提交到它所在的同一页面,但不设置任何变量。
  • 但是除了发布到同一个 URL 之外,它还会使任何现有的查询字符串空白...
  • 当心&lt;base href="..."&gt;
  • 这与 PHP 或 MySQL 无关。这是一个 HTML 问题。

标签: html


【解决方案1】:

个人永远不要这样做......使用action="action.php" 或使用action="" 发布到当前网址。

不确定您要在 action 属性中使用 ? 来完成什么。

【讨论】:

  • 什么'?'将完成的是表单发布到的 URI 将只是显示表单的页面。
  • @Popnoodles 那么为什么不把它留空或取出呢?只是想知道。
  • 留空和取出是一回事,两者都不是一个好主意。看到这个stackoverflow.com/questions/1131781/…
  • 我不完全确定这样做是否正确。你为什么不把 action="#" 也保留任何 GET 变量? ...不是我混合它们。我总是指向一个文件。
  • @Popnoodles 同样,我将不得不调查一下 :) 哈哈
【解决方案2】:

“我们”不这样做,“你”也不应该这样做。

  • 如果要将数据 POST 到当前 URL,请将其留空,即 action=""
  • 如果你想发布到另一个 URL,把那个 URL 放在那里,例如action="save.php".

【讨论】:

  • 如果要发布到当前网址,action="" 也可以省略。
  • 那是有效的 HTML 吗?编辑:好的,在HTML5 it is
  • 这会使您的表单容易受到 iframe 点击劫持攻击。 W3C 也表示需要采取行动,但并不暗示。
  • @Popnoodles:关于点击劫持部分的任何信息?
  • @Popnoodles:显然我的意思是与此案有关。我知道一般的点击劫持是什么。我只是不明白它如何适用于这种情况。
猜你喜欢
  • 2010-12-18
  • 2019-05-10
  • 1970-01-01
  • 1970-01-01
  • 2014-06-18
  • 2017-02-26
  • 2011-04-03
  • 2017-07-27
  • 2020-09-21
相关资源
最近更新 更多