我尝试将搜索重定向到右侧控制器。如果我在searchkey中没有特殊的字符,这可以正常工作。如果我有特殊键,我会从codeigniter收到错误:
您提交的URI不允许使用字符。
这是我的代码:
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;
}
}
答案 0 :(得分:0)
这是因为你不能在你的网址中加入“特殊”字符
即。如果我搜索“测试”,我将被带到portal / projects / search / test
但如果我搜索测试@#$)*&& f - 你不能拥有一些包含这些字符的网址
解决此问题要么对帖子执行验证,要使搜索字词只有numbers and letters:
$this->form_validation->set_rules('searchtype', 'Search Type', 'required|alpha_numeric');
或者您必须“通过”搜索字词以另一种方式运行 - 可能使用flash data,以便搜索字词不会通过网址传递
编辑:默认网址字符供您参考(来自config.php的第129行(约))
$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';
答案 1 :(得分:0)
或者您可以使用jquery并将searchkey发布到控制器,如果它是必要的。