0

我尝试将搜索重定向到正确的控制器。如果我在搜索键中没有特殊字符,这可以正常工作。如果我有特殊键,我会从 codeigniter 收到错误:

所提交的网址带有不被接受的字符。

这是我的代码:

public function search()
{
    $searchkey = urlencode($this->input->post('searchkey'));
    switch ($this->input->post('searchtype')) {
        case 'request':     redirect('portal/requests/search/'.$searchkey, 'refresh');
                            break;
        case 'offers':      redirect('portal/offers/search/'.$searchkey, 'refresh');
                            break;
        case 'projects':    redirect('portal/projects/search/'.$searchkey, 'refresh');
                            break;
        default:            redirect('portal/requests/search/'.$searchkey, 'refresh');
                            break;
    }
}
4

2 回答 2

0

那是因为您不能在您的网址中放置“特殊”字符

即,如果我搜索“测试”,我将被带到门户/项目/搜索/测试

但是如果我搜索 test@#$)*&&f - 你不能有一个包含这些字符的 url

要解决此问题,请对帖子进行验证,并使搜索词只有数字和字母

$this->form_validation->set_rules('searchtype', 'Search Type', 'required|alpha_numeric');

或者您必须“传递”搜索词以以另一种方式运行 - 可能使用闪存数据,以便搜索词不会通过 url 传递

编辑:供您参考的默认 url 字符(来自 config.php 的第 129 行(大约))

 $config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
于 2012-10-01T12:00:24.467 回答
0

或者,如果需要,您可以使用 jquery 并将搜索键发布到控制器。

于 2012-10-01T14:01:36.477 回答