2011-04-20 55 views
5

在表单操作中放置url get参数可以吗?将URL参数添加到表单PHP HTML

<form method='get' action='index.php?do=search'> 
    <input name='_search' type='text' value='What are you looking for?'> 
    <button type='submit'> Search </button> 
</form> 

当我提交表单的URL被改变:

​​

我宁愿网址阅读

index.php?do=search&_search=What are you looking for? 

难道是最好的隐藏字段添加到形式

<input type='hidden' name='do' value='search' /> 
+0

是这是你会怎么做(隐藏字段)。它的最佳做法是在查询时使用post并获取(使用哪个),当你确切地知道请求的内容是什么时,比如当使用变量进行导航时,那么evil do'ers会发现它更难以操纵查询的效果 – 2011-04-20 02:17:32

+0

@劳伦斯,绝对有从安全角度看,GET和POST没有区别。它们都是同样纯文本的。 GET通常用于请求(例如,获取本文档的ID为5),POST通常用于需要超过几百字节数据的任何内容(有时会截断GET),或者提交数据进行处理。 – Brad 2011-04-20 02:28:58

+0

是啊我不是说我发现任何区别,但我通常使用后jquery ajax方法。谢谢输入的人 – goingsideways 2011-04-20 02:34:19

回答

14

在我看来你sh应该将它们添加为隐藏字段。有没有点试图通过PARAMS如果你可以通过隐藏的表单字段做

使用的是:

<input type='hidden' name='do' value='search' /> 
3

一看不出有任何理由,你为什么不能或不应该这样做那样。我首选的但处理它的方法是:

<form method='get' action='index.php'> 
    <input name='_search' type='text' value='What are you looking for?' /> 
    <submit name='do' value='Search'> 
</form> 

名称/值对DO /搜索通过按下按钮过去了,如果你想在窗体上创建多个动作,你就可以有不同的价值观对于每个提交按钮,以多种方式处理表单。

if ($_GET['do'] == "Search") { 
... do Search ... 
} else if ($_GET['do'] == "Foo") { 
... do Foo ... 
} else if ($_GET['do'] == "Bar") { 
... do Bar ... 
} 

或者您可以使用的情况下,结构:

switch($_GET['do']) { 
    case "Search": 
     ... do Search ... 
    case "Foo": 
     ... do Foo ... 
     break; 
    case "Bar": 
     ... do Bar ... 
     break; 
} 

我通常使用post自己,但我肯定会get相同的方式工作。希望这能回答你的问题。

2

我想和Teodor一样,应该没有理由不把变量作为隐藏字段发送。但是,如果你有一个很好的理由这样做...您是否尝试过在URL的末尾添加一个&:

<form method='get' action='index.php?do=search&'> 
+1

FWIW,在acion URL的末尾添加&并不能帮助保持action URL中的参数。 – 2013-02-18 01:27:08