【发布时间】:2013-01-29 17:50:14
【问题描述】:
我正在使用 codeIgniter。我正在制作一个登录表单,用于检查数据库中的成员详细信息。
但是,当我点击登录时,我收到以下错误消息:
The requested URL /waitronmain/login.php/login/validate_credentials was not found on this server.
然而这是我的 login.php 文件,你可以看到 validate_credentials() 确实存在。
class Login extends CI_Controller{
function index()
{
$data['main_content'] = 'login_form';
$this->load->view('includes/template', $data);
}
function validate_credentials()
{
//load model to query db
$this->load->model('membership_model');
$query = $this->membership_model->validate();
if($query){ //if credentials validated
$data = array(
'username' => $this->input->post('username'),
'is_logged_in' => true
);
$this ->session->set_userdata($data);
redirect('site/members_area');
}
else{ //if not validated load login form again.
$this->index();
}
}
}
知道出了什么问题吗?我应该进入“members_area”页面,因为我知道我输入的详细信息是正确的。
任何帮助将不胜感激。
【问题讨论】:
-
网址的
/login.php/index.php部分是什么?那是你的实际网址吗?无论如何,问题可能是您在您的网址中使用了下划线_。您应该使用破折号validate-credentials。我认为控制器函数名称中不能包含破折号,因此您需要使用路由(routes.php)将 urlvalidate-credentials与方法validate_credentials连接起来。 -
抱歉,由于没有在 'config.php' 文件中设置正确的索引页面,导致 URL 混乱。我更新了问题中的 URL。我不确定如何使用“routes.php”文件连接 url。你能举个例子吗?
-
为什么叫
login.php?它应该被命名为index.php,因为它是你的主文件,它处理你的所有请求并将正确加载登录类。 -
我将默认索引页面更改为
login.php,而不是index.php。这就是为什么我这样命名它。 -
我一会儿就回来,我要出去了,不想让你以为我放弃了=o)。如果到我回来的时候还没有解决这个问题,我会看看我能做些什么。
标签: codeigniter http-status-code-404 php