1

  1. CodeIgniter 问题:服务器 500 错误。每当我调用 set_userdata() 函数时,它都会触发服务器 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.
        }
    }
    

    ?>

4

2 回答 2

2

你确定调用set_userdata时会抛出500错误吗?

您可以做的第一件事是启用 error_reporting。一种方法是在主 index.php 文件中将环境设置为“开发”,前提是您已在 php.ini 中启用错误报告。执行此操作后,您可能会看到更详细的错误消息,可帮助您识别问题。

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

于 2014-01-16T10:14:56.023 回答
0

您应该将参数传递给您的模型,并且不要在其中调用“$this->input->post('username')”

参数:

public function validate($user, $pass){

还要验证您是否已加载安全和数据库库。

于 2014-01-17T06:51:20.597 回答