2010-11-01 77 views
0

我想在Codeigniter中建立一個分頁搜索,並且會喜歡它的一些幫助。Codeigniter和查詢字符串分頁

到目前爲止,我已經意識到我不能同時使用兩個url段和查詢字符串。只使用查詢字符串會產生非常難看的URL。

我知道Codeigniter銷燬了GET,我試圖將其放回去。Ergo ...如果我將它放在搜索控制器的構造函數中,我的問題是否會解決?

 parse_str(substr(strrchr($_SERVER['REQUEST_URI'], "?"), 1), $_GET); 

因爲如果它適用於我,是否有任何我需要注意安全明智?

回答

3

到目前爲止,我已經意識到我不能同時使用兩個url段和查詢字符串。

當然可以。試試這個在你的配置:

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

這應該讓事情開始。現在,由於CI放棄並清空$ _GET變量,則需要重新填充像這樣:

parse_str($_SERVER['QUERY_STRING'],$_GET); 

現在,這裏唯一真正擔心的是,如果你有全局XSS過濾的,你應該知道,你只是手動將查詢字符串解析爲全局$ _GET變量。這意味着你沒有通過任何XSS過濾器。在CI 1.x中,你可以通過輸入庫訪問過濾器是這樣的:

$myvar = $this->input->xss_clean($_GET['myvar']); 

在CI 2.X你做它通過安全庫這樣的:

$myvar = $this->security->xss_clean($_GET['myvar']); 

當然,不用說,你可以擴展Controller類有一個get()方法這一切都是自動,這樣你可以這樣做:

$myvar = $this->get('myvar'); 
+0

這就是我一直在尋找!感謝您的幫助 – Booski 2010-11-02 14:43:31

+1

您也可以通過設置'$ config ['enable_query_strings'] = true'來在您的config.php文件中啓用查詢字符串;'這將允許您使用輸入類並在需要時自動清理內容。 '$ this-> input-> get('myvar')' – WeeJames 2010-11-02 22:07:54

+0

@WeeJames令人驚訝的是,我從來沒有試過這個!感謝您的建議。 – treeface 2010-11-02 22:37:07