【问题标题】:Simple Search: Passing Form Variable to URI Using CodeIgniter简单搜索:使用 CodeIgniter 将表单变量传递给 URI
【发布时间】:2010-09-18 15:41:45
【问题描述】:

我的每个页面都有一个搜索表单。如果我使用表单助手,它默认为$_POST。我希望搜索词显示在 URI 中:

http://example.com/search/KEYWORD

我已经在 Google 上使用了大约一个小时,但无济于事。由于本机 URI 约定,我只找到了关于基本如何禁用 $_GET 的文章。我不可能是第一个想要这种功能的人,不是吗?提前致谢!

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    这是最好的解决方案:

    $uri = $_SERVER['REQUEST_URI'];
    
    $pieces = explode("/", $uri);
    
    $uri_3 = $pieces[3];
    

    谢谢erunways

    【讨论】:

      【解决方案2】:

      如果你与没有启用 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;
          }
      ?>
      

      我以前用过很多次。

      【讨论】:

      • Thorpe - 你如何处理撇号的?
      • 你应该在配置文件中修改这个: $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; to $config['permitted_uri_chars'] = '\'a-z 0-9~%.:_\-';
      • 我知道这是一个非常古老的问题,但只是让我头疼不已 - 干杯!
      【解决方案3】:

      查看这篇文章,了解如何启用 GET 查询字符串和分段网址。

      http://codeigniter.com/forums/viewthread/56389/#277621

      启用后,您可以使用以下方法检索附加变量。

      // url = http://example.com/search/?q=text
      $this->input->get('q');
      

      这样更好,因为您不需要更改 allowed_uri_chars 配置设置。如果您只是将用户输入的任何内容放入 URI 中,您可能会收到“您提交的 URI 包含不允许的字符”错误。

      【讨论】:

        【解决方案4】:

        据我所知,没有任何方法可以通过简单的 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>
        

        【讨论】:

        • 这里的 Codeigniter 问题 - CI URI 库不接受搜索字符串中的撇号:“您提交的 URI 包含不允许的字符。”
        【解决方案5】:

        我对 CodeIgniter 了解不多,但它是 PHP,所以 $_GET 不应该仍然可供您使用吗?您可以像 Google 一样格式化您的 URL:mysite.com/search?q=KEYWORD 并使用 $_GET['q'] 提取数据。

        此外,搜索表单似乎不适合使用 POST; GET 是可收藏的,并不意味着服务器端正在发生变化。

        【讨论】:

        • 没有。 “GET”在 Codeigniter 中被禁用
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-15
        • 1970-01-01
        • 1970-01-01
        • 2014-12-06
        • 1970-01-01
        • 2014-12-29
        • 1970-01-01
        相关资源
        最近更新 更多