从<form> action </form>将GET参数附加到URL

时间:2011-12-12 15:25:01

标签: php forms search parameters get

所以说我目前在我当前的网站构建中使用index.php或index.php?p =。

我正在尝试构建一个将在大多数页面上显示的搜索表单,但我希望表单操作转到http://mywebsiteurl.com/?p=search&q=GETDATA,因为我的网站的分页取决于传递给'p'属性的数据。

在提交后,如何以静态方式将搜索参数附加到URL?

3 个答案:

答案 0 :(得分:1)

您应该将参数p的值放在搜索表单内的隐藏表单字段中;类似的东西:

<input type="hidden"
    name="p"
    value="<?php echo(htmlspecialchars($_REQUEST["p"])); ?>" />

将参数放入表单操作参数不是一个好主意; post请求的处理方式与GET请求不同,POST请求中的值不会附加到URL中?和&amp;与GET一样;这意味着您实际上不会将p参数放入处理来自表单的POST请求的脚本中...

另外注意不要显示未反映的请求参数(因此htmlspecialchars,感谢提示!),因为恶意客户端可能会尝试将代码注入您的页面(HTML injection / XSS)。

答案 1 :(得分:1)

您可以在表单中使用隐藏字段来维护p参数的值:

<input type="hidden" 
       name="p" 
       value="<?= htmlentities($_GET['p'], ENT_QUOTES) ?>" />

答案 2 :(得分:1)

也许是这样的:

  <form method="get" action="index.php">
     <input type="hidden" name="p" value="search" />
     <input type="text" name="search" value="" />
     <input type="submit" value="search" />
  </form>