我的每个页面都有一个搜索表单。如果我使用表单助手,它默认为$_POST
. 我希望搜索词显示在 URI 中:
http://example.com/search/KEYWORD
我已经在谷歌上呆了大约一个小时,但无济于事。由于本机 URI 约定,我只找到了关于如何$_GET
基本上禁用的文章。我不可能是第一个想要这种功能的人,不是吗?提前致谢!
我的每个页面都有一个搜索表单。如果我使用表单助手,它默认为$_POST
. 我希望搜索词显示在 URI 中:
http://example.com/search/KEYWORD
我已经在谷歌上呆了大约一个小时,但无济于事。由于本机 URI 约定,我只找到了关于如何$_GET
基本上禁用的文章。我不可能是第一个想要这种功能的人,不是吗?提前致谢!
如果您与未启用 JS 的人打交道,则有更好的解决方法。
看法:
<?php echo form_open('ad/pre_search');?>
<input type="text" name="keyword" />
</form>
控制器
<?php
function pre_search()
{
redirect('ad/search/.'$this->input->post('keyword'));
}
function search()
{
// do stuff;
}
?>
我以前用过很多次。
据我所知,没有任何方法可以通过简单的 POST 完成此操作。但是,您可以通过 Javascript 访问表单并更新目的地。例如:
<form id="myform" onsubmit="return changeurl();" method="POST">
<input id="keyword">
</form>
<script>
function changeurl()
{
var form = document.getElementById("myform");
var keyword = document.getElementById("keyword");
form.action = "http://mysite.com/search/"+escape(keyword.value);
return true;
}
</script>
查看这篇文章,了解如何启用 GET 查询字符串和分段 url。
http://codeigniter.com/forums/viewthread/56389/#277621
启用后,您可以使用以下方法检索其他变量。
// url = http://example.com/search/?q=text
$this->input->get('q');
这更好,因为您不需要更改 allowed_uri_chars 配置设置。如果您只是将用户输入的任何内容放在 URI 中,您可能会收到“您提交的 URI 包含不允许的字符”错误。
这是最好的解决方案:
$uri = $_SERVER['REQUEST_URI'];
$pieces = explode("/", $uri);
$uri_3 = $pieces[3];
谢谢erunways!
我对 CodeIgniter 了解不多,但它是 PHP,所以你不应该$_GET
仍然可以使用它吗?您可以像 Google 一样格式化您的 URL:mysite.com/search?q=KEYWORD
并使用$_GET['q']
.
此外,搜索表单似乎不适合使用 POST;GET 是可收藏的,并不意味着服务器端正在发生变化。