Php Codeigniter自定义url字符串

Php Codeigniter自定义url字符串,php,codeigniter,Php,Codeigniter,我是codeigniter的新手,我正在制作一个医生网站,需要允许用户使用简单的url来搜索医生,比如。所以这个url没有任何类,因为可能有很多州,并且不能每个州都有类。我应该更改路由脚本中的404覆盖吗?或者有更好的方法来实现它 $route['(:any)']='search/check_state'; 如果我使用上面的路由,那么像/login这样的其他页面就不起作用了。请帮助获得它,然后再试一次 $route['search/check_state/:any'] ='search/che

我是codeigniter的新手,我正在制作一个医生网站,需要允许用户使用简单的url来搜索医生,比如。所以这个url没有任何类,因为可能有很多州,并且不能每个州都有类。我应该更改路由脚本中的404覆盖吗?或者有更好的方法来实现它

$route['(:any)']='search/check_state';
如果我使用上面的路由,那么像/login这样的其他页面就不起作用了。请帮助获得它,然后再试一次

$route['search/check_state/:any'] ='search/check_state';

创建包含所有状态的数据库,并按此方式执行

内部搜索/检查状态

// Get state from URL
$state = $this->uri->segment(1, "");

// Make sure state is not null and its found in database
if($state <> "" && $this->validateState($state)){
    // Valid state, continue
}else{
    // Give error message / redirect to 404 page
}
更新

你也可以用POST表单来完成

将表单制作到用户提供输入详细信息的页面中

echo form_open(base_url().'path_to_post_validation');
// make form here that sends "state" into page that handles validation
echo form_close();
处理后验证

// Make sure user has send POST request
if($this->input->post()){

    // Set form validation rules
    $this->form_validation->set_rules('state', 'state', 'required|trim|xss_clean');

    // Run form validation
    if ($this->form_validation->run() == TRUE){

        // Store state into variable
        $state = $this->input->post('state');

        // Check database that it contains $state and then continue or give error message
    }
}

你真的应该花更多的时间阅读关于控制器如何工作以及错误页面和路由的文档虽然我同意上面的观点,但很明显你需要了解页面请求通常是如何工作的,我建议你阅读一些这方面的内容。例如,您发布的搜索可以使用名为“newyork”的类中的索引函数轻松完成,甚至不需要触及路由,这里不需要维护状态。搜索通常通过GET或POST参数进行,这些参数甚至可以发布到同一个索引函数。@Patrick:但如果搜索url包括任何其他州,如加利福尼亚州,那么根据您的说法,我应该在索引页中有另一个类“california”。我不认为这是一个明智的方法,如果有许多国家,但网址的形式将是[名称]。所以我不确定上面的路由在这里如何工作是的,我是这样做的,但是纽约的问题基本上是知道是否有其他方法,而不是在路由器页面中使用通配符条目。一种方法是使用GET或POST发送状态,如果我使用get或post,那么url不能是像website.com/newyork这样简单的url…是吗?嗯,基本上可以,但它毫无意义。Url看起来类似于website.com/search
// Make sure user has send POST request
if($this->input->post()){

    // Set form validation rules
    $this->form_validation->set_rules('state', 'state', 'required|trim|xss_clean');

    // Run form validation
    if ($this->form_validation->run() == TRUE){

        // Store state into variable
        $state = $this->input->post('state');

        // Check database that it contains $state and then continue or give error message
    }
}