我使用 XAMPP 在本地使用 Code Igniter 开发了一个简单的 CMS 系统。它正在运行和工作,但是当我将它部署到我的服务器时,脚本在我调用时停止
$this->form_validation->run();
在以下代码中:
public function check_login(){
echo $this->load->library('form_validation');
$this->form_validation->set_rules('username', 'Benutzername', 'required|trim|xss_clean|callback_validate_credentials');
$this->form_validation->set_rules('password', 'Passwort', 'required|xss_clean');
echo 'check';
if($this->form_validation->run()){
echo 'check:run';
$this->load->model('user_model');
$username = $this->input->post('username');
$userid = $this->user_model->get_userid_by_name($username);
$admin = $this->user_model->is_user_admin($username);
$userdata = array(
'username' => $username,
'is_admin' => $admin,
'is_logged_in' => true,
'user_id' => $userid
);
$this->session->set_userdata($userdata);
redirect(base_url() . 'blog');
} else {
echo 'check:else';
$this->do_login();
}
echo 'check:end';
}
回调函数是这个:
public function validate_credentials(){
echo 'test';
echo '<pre>';
print_r($_POST);
echo '</pre>';
$this->load->model('user_model'); // the script stops here
$this->load->model('security/pass_hasher');
$username = $this->input->post('username');
$password = $this->input->post('password');
$hashed_password = $this->pass_hasher->hash($password);
echo $username . '<br />';
echo $password . '<br />';
echo $hashed_password . '<br />';
print_r($this->input->post());
if($this->user_model->can_login($username, $hashed_password)){
if($this->user_model->is_user_active($username)){
return true;
}
else {
$this->form_validation->set_message("validate_credentials", "Benutzeraccount wurde deaktviert!");
return false;
}
}
else {
$this->form_validation->set_message("validate_credentials", "Benutzername und/oder Passwort ist falsch.");
return false;
}
}
出于调试原因,我做了一些回声。输出如下:
查看
所以脚本停止在我上面提到的方法上运行。为什么?我正在自动加载form
并url
在配置中。Code Igniter 环境设置为开发。我本地机器上的 PHP 版本是 5.4.4,而 Web 服务器上的 PHP 版本是 5.3.8,两者都比所需的 5.1.6 更新
当我手动将数据发布到我的validate_credentials()
函数时,我得到以下输出:
test
大批 ( [用户名] => 管理员 [密码] => 测试 )
所以 $this->input->post() 不起作用。但我还没弄清楚为什么。