2013-01-03 16 views
1

我有以下控制器名爲admin笨報告錯誤500當數據公佈

class Admin extends CI_Controller { 

    public function __construct() { 
     parent::__construct(); 
     $this->load->model('admin_model'); 
    } 

    public function index() 
    { 
     $this->load->library('session'); 
     $this->load->database(); 
     if (!$this->session->userdata('user_id') || !$this->session->userdata('user_name')) 
     { 
      header("Location: /admin/login"); 
     } 
     else 
     { 
      $user_id = $this->session->userdata('user_id'); 
      $user_name = $this->session->userdata('user_name'); 
      if (!$this->admin_model->verify($user_id, $user_name)) 
       header("Location: /admin/login"); 
     } 
     $this->load->view('templates/header'); 
     $this->load->view('admin/index'); 
     $this->load->view('templates/footer'); 
    } 
    public function login() 
    { 
     $this->load->view('templates/header'); 
     $this->load->helper('form'); 
     $this->load->library('form_validation'); 
     $this->form_validation->set_rules('username', 'Username', 'required'); 
     $this->form_validation->set_rules('password', 'Password', 'required'); 
     if ($this->form_validation->run() == FALSE) 
     { 
      $data['run'] = false; 
     } 
     else if (!$this->admin_model->loginverify($this->input->post('username'), 
       $this->input->post('password'))) 
     { 
      $data['run'] = false; 
     } 
     else 
     { 
      $data['run'] = true; 
     } 
     $this->load->view('admin/login', $data); 
     $this->load->view('templates/footer'); 
    } 
} 

而且我有以下的模型稱爲Admin_model

class Admin_model extends CI_Model 
{ 
    public function __construct() { 
     parent::__construct(); 
     $this->load->database(); 
    } 
    public function verify($id, $name) 
    { 
     if (!is_numeric($id)) 
      return false; 
     else 
     { 
      $query = $this->db->get_where('users', array('id'=>$id, 'username'=>$name), 1); 
      if ($query->result()->num_rows() === 0) 
       return false; 
      else 
       return true; 
     } 
    } 
    public function loginverify($name, $pass) 
    { 
     $pass = md5($pass); 
     //$query = $this->db->get_where('users', array('username'=>$name, 'passwd'=>$pass), 1); 
     $query = $this->db->query("SELECT * FROM users WHERE username='$name' AND passwd='$pass' LIMIT 1"); 
     if ($query->result()->num_rows() === 0) 
      return false; 
     else 
      return true; 
    } 
} 

我的形式是這樣的:

<?php if (!$run) 
{ 
?> 
<form method="post" action="/admin/login"> 

<h5>Username</h5> 
<input type="text" id="username" name="username" value="" size="50" /> 

<h5>Password</h5> 
<input type="password" id="password" name="password" value="" size="50" /> 

<div><input type="submit" id="submit" name ="submit" value="Login" /></div> 

</form> 
<?php 

}else{ 
    echo "successfully login"; 
} 
?> 

當我提交時,我收到了一個空白頁面,當我在Chrome中檢查網絡時,我看到帖子已導致500內部服務器錯誤。

當我改變直接查詢get_where如上面的註釋行,我得到了一個嚴重8192錯誤消息mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

我在這裏使用手冊的形式,但我的CSRF設置爲false。我試過使用form_open('admin/login'),但後來可笑地把它變成了localhost/?admin/login,還有一個額外的?

我一直在遇到這些問題,我只是不知道該怎麼做。我感謝任何幫助。

+1

什麼是你的error_reporting設置使用header();? 500可能意味着致命錯誤,但您可以看到E_DEPRECATED。 '的error_reporting(E_ALL); ini_set('display_errors',1);' –

+0

而且你必須有一個'.htaccess'文件。檢查你的服務器的error_log是否有與之相關的錯誤。 –

回答

0

您的窗體沒有指向正確的URL可能,所以我sugget你可以改變:

<form action="/admin/login"> 

<form action="<?php echo site_url('admin/login'); ?>"> 

然後嘗試更換所有的headers() methods

header("Location: /admin/login"); 

redirect(site_url('admin/login'),'',302); 

sincerily,從未與笨