【问题标题】:Codeigniter, get variable from segment-based URL with querystringsCodeigniter,使用查询字符串从基于段的 URL 获取变量
【发布时间】:2011-02-27 18:55:54
【问题描述】:

我已经从我的 url 中删除了 index.php,但现在我需要从 url 中获取一些变量,CI 解决方案是更新 config.php

$config['uri_protocol'] = "PATH_INFO";
$config['enable_query_strings'] = TRUE;

当我在 url 中使用 index.php 时,这可以完美地工作,但我需要它而不需要 index.php

这是我的httacess

RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA

任何解决方案? ,谢谢

【问题讨论】:

  • 您尝试过$var = $this->uri->segment(3),其中 3 是您想要的分段吗?
  • 是的,但是 url 来自 facebook sdk 的问题,例如:mydomaine.com/fb/index/… 如果我删除“?”它与 uri->segment ... 一起使用。但是现在它显示404屏幕,我认为用CI创建一个fb APP是个坏主意:(

标签: .htaccess codeigniter url-rewriting codeigniter-url


【解决方案1】:

我在 CI 中遇到了同样的问题,所以我编写了这个函数来从 $_SERVER['REQUEST_URI'] 变量中获取查询字符串并提取它们。

function extract_querystrings() {
    $uri = $_SERVER['REQUEST_URI'];
    $uri = explode('?',$uri);
    if (count($uri)>1) {
        foreach($uri AS $ur) {
            $ur = explode('&',$ur);
            foreach($ur AS $u) {
                $u = explode('=',$u);
                if ($u[0]=='/') continue;
                $this->query_strings[$u[0]] = $this->input->xss_clean($u[1]);
            }
        }
    }
    //echo '<pre>',print_r($this->query_strings,true),'</pre>';
}

此函数在我的自定义主控制器的 __construct() 中调用。

您可以修改以下行

$this->query_strings[$u[0]] = $this->input->xss_clean($u[1]);

$_GET[$u[0]] = $this->input->xss_clean($u[1]);

看看它是否适合你。

【讨论】:

    【解决方案2】:

    您是否查看过 Elliot Haughin 的 CodeIgniter 的 Facebook 库?它可能会提供一些关于在 Facebook 中使用 CI 的见解。

    http://www.haughin.com/code/facebook/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-02
      • 2019-01-31
      • 1970-01-01
      • 1970-01-01
      • 2011-06-07
      相关资源
      最近更新 更多