gpt4 book ai didi

php - Codeigniter:在不使用 $_GET 的情况下实现搜索过滤器

转载 作者:行者123 更新时间:2023-12-04 06:36:41 24 4
gpt4 key购买 nike

我有一个应用程序,其中包含一个名为 projects 的表,我希望能够对其进行搜索。我更喜欢使用现有的方法来调用模型来获取查询结果。所以我刚才的 URL 格式是 example.com/projects/id/slug 并且对于所有项目只是 example.com/projects。我想要一个搜索表单,将关键字作为字符串传递给方法。

我知道 CI 默认不允许 $_GET :

来自 CodeIgniter 关于安全性的手册:

GET, POST, and COOKIE Data

GET data is simply disallowed by CodeIgniter since the system utilizes URI segments rather than traditional URL query strings (unless you have the query string option enabled in your config file). The global GET array is unset by the Input class during system initialization.



我的问题是如何以这种方式使用多个关键字的 URI 段?

我可以做类似搜索/关键字+第二个关键字+第三个关键字的操作吗?

无论如何,使用表单是否可以将文本框中的关键字转换为上述格式?

谢谢,

比利

最佳答案

如果你想这样做......

你可以做这样的事情,假设有多个帖子输入并且它们仅用于搜索,它可能看起来像这样

function search(){

$url = $this->uri->segment(2);

if(empty($url)){
if((isset($_POST) && (!empty($_POST))
{
$search_seg = '';

foreach($_POST as $k => $v){
// I always make sure to use the CI post w/
// TRUE set in the second param so as to XSS filter the user input
$var = $this->input->post($k, TRUE);
// Just incase the user input had a plus in it?
$var = str_replace('+', '%20', $var)
// Concatenate the search string
$search_seg .= $var . '+';
}

// Make the url, use substr() to strip the last + off the end
$search_seg = 'search/' . substr($search_seg, 0, -1);

/* Make sure CI's URL helper is enabled
$this->load->helper('url'); if it hasn't been loaded
This will give the illusion that the form post went to this URL,
thus doing what you're looking for... */
redirect($search_seg, 'location');

}else{
// There was no post, do whatever
}
}else{
$search_arr = explode('+', $url);
}

上面应该完全按照你的描述做,尽管有一些方法可以重新创建 $_GET 数组并仍然将它们与 CI 样式的 URL 一起使用,尽管这有点复杂

附加信息:

如果只有一个搜索输入字段,并且,例如,术语用空格分隔,那么您可能希望这样做(可能需要一些正则表达式过滤)...替换 foreach($_POST as $k => $v)...用这个循环:
$keywordinput = $this->input->post('keywords', TRUE);
$keywordinput = trim($keywordinput);

$keywords = explode(' ', $keywordinput);

foreach($keywords as $word){
if(!empty($word)){
$word = str_replace('+', '%20', $var)
$search_seg .= $word . '+';
}
}

关于php - Codeigniter:在不使用 $_GET 的情况下实现搜索过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4783110/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com