CodeIgniter informa el error 500 cuando se publican los datos

Tengo el siguiente controlador llamado admin

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');
    }
}

Y tengo el siguiente modelo llamado 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;
    }
}

Y mi formulario es como el siguiente:

<?php  if (!$run) 
{
?>
<form method="post" action="/es/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";
}
?>

Obtuve una página en blanco cuando envié, y cuando inspeccioné la red en Chrome, veo que la publicación ha causado un error de servidor interno 500.

Cuando cambio la consulta directa a get_where como en la línea comentada anteriormente, obtuve una gravedad 8192 con un mensaje de error mysql_escape_string(): This function is deprecated; use mysql_real_escape_string() instead.

Estoy usando el formulario manual aquí, pero mi CSRF está configurado como falso. he intentado usar form_open('admin/login') pero luego, ridículamente, se convirtió en localhost/?admin/login con un extra ?.

Me he estado encontrando con todos estos problemas aquí y simplemente no sé qué debo hacer. Agradezco cualquier ayuda brindada.

preguntado el 03 de enero de 13 a las 19:01

¿Cuál es su configuración de informe de errores? 500 probablemente signifique un error fatal, pero puede ver E_DEPRECATED. error_reporting(E_ALL); ini_set('display_errors', 1); -

Y debes tener un .htaccess expediente. Verifique el error_log de su servidor para ver si hay errores relacionados con eso. -

1 Respuestas

Tal vez su formulario no apunta a una URL correcta, por lo que le sugiero que cambie esto:

<form action="/es/admin/login">

a

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

entonces intente reemplazar todos los headers() methods :

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

con

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

sinceramente, nunca usado header(); con Codeigniter

Respondido el 06 de enero de 13 a las 20:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.