2014-01-16 4 views
1

CodeIgniter set_userdata() триггер сервер 500 ошибка

  1. Ошибка CodeIgniter: ошибка сервера 500. Всякий раз, когда я вызываю функцию set_userdata(), он вызывает ошибку Server 500. Ниже приведен пример кода входа. Я размещаю его на SiteGround. если я удалю функцию set_userdata, код работает отлично, но логин не будет работать.

    <?php 
    if (! defined('BASEPATH')) exit('No direct script access allowed'); 
        // LOGIN MODEL 
        class Login_model extends CI_Model{ 
         function __construct(){ 
          parent::__construct(); 
         } // VALIDATE METHOD 
         public function validate(){  // grab user input 
        $username = $this->security->xss_clean($this->input->post('username')); 
        $password = $this->security->xss_clean($this->input->post('password')); 
         $this->db->where('username', $username); 
         $this->db->where('password', sha1($password)); 
         $this -> db -> where('activated', 'yes');// Run the query<br> 
         $query = $this->db->get('user_account');// Let's check if there are any results 
         if($query->num_rows == 1)// If there is a user, then create session data 
         { 
          $row = $query->row(); 
          $data = array(
            'id' => $row->serial, 
            'name' => $row->name, 
            'email' => $row->email, 
            'password' => $row->password, 
            'type' => $row->type, 
            'address' => $row -> address, 
            'phone' => $row -> phone, 
            'pic' => $row -> pic,<br> 
            'validated' => true 
            ); 
          $this->session->set_userdata($data); 
          return true; 
         }// If the previous process did not validate 
         return false;// then return false. 
        } 
    } 
    

    ?>

+1

Вы загружаете библиотеку сеансов –

+0

в application/config/autoload.php; автозагрузите библиотеку «сеанс», если это уже не сделано. – Arunu

+0

@Adarsh ​​Да, я уже загрузил сессионную библиотеку. – user3200990

ответ

2

Вы уверены, что ошибка 500 брошено при вызове set_userdata?

Первое, что вы можете сделать, это включить error_reporting. Один из способов сделать это - настроить среду на «разработку» в вашем основном файле index.php, при условии, что вы включили отчет об ошибках в своем php.ini. После этого вы, вероятно, увидите более подробное сообщение об ошибке, которое поможет вам определить проблему.

С другой стороны, глядя на свой код, я вижу линию 'pic' => $row -> pic,<br> и <br> определенно производит ошибку при инициализации вашего массива, может быть, это дело

+0

Спасибо! Ты спасатель! Удаление «pic» => $ row -> pic. решила проблему! На самом деле проблема заключалась в том, что BLOB был сохранен в БД вместо пути к изображению. ** Резюме: ** Сохранение большого количества данных в сеансе вызвало проблему. Согласно (http://ellislab.com/codeigniter%20/user-guide/libraries/sessions.html) ** Примечание: ** Cookies могут хранить только 4 Кбайта данных, поэтому будьте осторожны, чтобы не превышать вместимость. В частности, процесс шифрования создает более длинную строку данных, чем оригинал, поэтому следите за тем, сколько данных вы храните. – user3200990

0

Вы должны пройти PARAMS к вашей модели и не требуют "$ this-> вход-> пост ('имя пользователя')" в нем

Params:

public function validate($user, $pass){

проверить Также вы загрузили безопасности и дб LIB.