2014-01-16 61 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

你在application/config/autoload.php中加载会话库 –

+0

;自动加载“会话”库,如果还没有这样做。 – Arunu

+0

@Adarsh是啊我已经加载会话库.. – user3200990

回答

2

你确定调用set_userdata当500错误被抛出?

你可以做的第一件事是启用error_reporting。做到这一点的一种方法是在你的主要index.php文件中设置你的环境为'development',同时提供你已经在你的php.ini中启用了错误报告。完成此操作后,您可能会看到更详细的错误消息,可帮助您识别问题。

在另一方面看你的代码,我看到你的初始化数组时'pic' => $row -> pic,<br><br>肯定会产生错误的路线,也许是这种情况

+0

谢谢!你是一个救星!删除'pic'=> $ row - > pic。解决了问题!实际上问题是BLOB被保存在数据库中而不是图像路径中。 **摘要:**在会话中保存大量数据导致了问题。 根据(http://ellislab.com/codeigniter%20/user-guide/libraries/sessions.html) **注意:** Cookie只能容纳4KB的数据,所以要小心不要超过容量。特别是加密过程会产生比原始数据字符串更长的数据字符串,因此请仔细跟踪您要存储的数据量。 – user3200990

0

你应该通过PARAMS到模型不叫在它

PARAMS “这 - $>输入 - >后( '用户名')”:

public function validate($user, $pass){

此外,还应确保您已加载的安全性和DB库。