0

検索を正しいコントローラーにリダイレクトしようとしています。検索キーに特別な文字がない場合、これはうまく機能します。特別なキーがある場合、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;
    }
}
4

2 に答える 2

0

または、jquery を使用して、必要に応じて検索キーをコントローラにポストすることもできます。

于 2012-10-01T14:01:36.477 に答える
0

これは、URL に「特殊」文字を入れることができないためです。

つまり、「テスト」を検索すると、ポータル/プロジェクト/検索/テストに移動します

しかし、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 に答える