codeigniter重定向问题

时间:2012-10-01 11:52:38

标签: codeigniter

我尝试将搜索重定向到右侧控制器。如果我在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;
    }
}

2 个答案:

答案 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发布到控制器,如果它是必要的。