CodeIgniter通过uri段编码字符串?

时间:2011-06-18 03:36:31

标签: php url codeigniter

我是codeigniter的新手,我正在为网站添加搜索功能,并有两个问题。

  1. 我如何提交表单以便将其作为uri段(如查询字符串)发送?我之前通过提交帖子,并在uri段中重定向到带有它的URL来完成它。但有更好的方法吗?
  2. 如何通过uri段发送字符串(例如搜索查询,完全由用户生成)?我试过urlencode,但仍然有不允许的字符。我想保留查询的大部分内容(因此很容易在历史记录中找到,所以没有base64_encode)。思考?是否有内置功能?
  3. 感谢您的帮助, 最大

3 个答案:

答案 0 :(得分:3)

您可以使用JavaScript来构建网址,如下所示:

<form onsubmit="window.location.href='/search/'+encodeURIComponent(document.getElementById('search_query').value);return false">
    <input id="search_query" type="text" />
    <input type="submit" />
</form>

编辑:由于CodeIgniter的URI过滤器,上述答案无效。但是,根据我对1.7版的使用经验,如果传递多个GET参数,则可以使用$ _REQUEST数组检索它们。这将完全绕过URI过滤器。所以这样做:

<form action="/search">
    <input name="x" type="hidden" />
    <input name="q" type="text" />
    <input type="submit" />
</form>

然后使用$ _REQUEST ['q']来获取搜索查询。希望这对你有用。

答案 1 :(得分:0)

  1. 是。使用method="get"创建表单。
  2. 如果按上述方式设置表单,则无需担心编码请求。
  3. 示例:

    <form action="example.php" method="get">
      <input type="text" name="search" />
      <input type="submit" value="Search" />
    </form>
    

    更新:要以“CodeIgniter”方式生成表单:

    echo form_open('email/send', array('method' => 'get'));
    

答案 2 :(得分:0)

如果你需要使用像

这样的东西
index.php?c=search&m=search&q=wow

而不是CI的默认URI细分

您必须启用查询字符串。 你可以通过改变

中的一些配置来做到这一点
 application/config.php

找到

$config['enable_query_strings'] = FALSE;

并将其更改为

$config['enable_query_strings'] = TRUE;

然后您就可以使用查询字符串了。

但是mot们不喜欢使用查询字符串,我不知道为什么。