Php 无法将用户名从$\u会话回显到页面

Php 无法将用户名从$\u会话回显到页面,php,codeigniter,session,Php,Codeigniter,Session,这是我的控制器,我在这里检查用户是否可以登录,用户是否存在。如果他们存在,我获取所有数据并设置会话。由于某些原因,当我回显会话用户名时,它不会显示。有什么不对劲吗 以下是我对本次会议的回应: public function user_login() { $email = $_POST['email']; $password = $_POST['password']; $userdata = $this->em->user_login($email, $pass

这是我的控制器,我在这里检查用户是否可以登录,用户是否存在。如果他们存在,我获取所有数据并设置会话。由于某些原因,当我回显会话用户名时,它不会显示。有什么不对劲吗

以下是我对本次会议的回应:

public function user_login()
{
    $email = $_POST['email'];
    $password = $_POST['password'];
    $userdata = $this->em->user_login($email, $password);
    $user_info = $this->em->does_user_exist($email, $password);
    if ($user_info->num_rows() == 1) {
        foreach ($user_info->result() as $row) {
            $data = array(    
                'id' => $row->id,      
                'username' => $row->username,
                'email' => $row->email,    
                'user_type' => $row->user_type,    
                'logged_in' => TRUE
            );
            $this->session->set_userdata($data);
        }
        if($userdata) {
            echo 1;
        } else {
            echo 'error';
        }
    }
}

你好


有没有其他方法来回应会话?

1st:根据您的评论,您可以返回usename作为对ajax的响应

<div>
  hello<p><?php echo $this->session->userdata('username'); ?></p>
</div>

<div>
  <p><?php echo $data['username']; ?></p>
</div>
2nd:并像这样成功地在ajax中更新DOM

        if($userdata) {
           echo json_encode(array('success'=>1,'username'=>$this->session->u‌​serdata('username'))‌​);
        } else {
           echo json_encode(array('success'=>0)‌​);
        }
3rd:在ajax中,数据类型应该是json

  success:function(response){

            if(response.success==1){
             $('#div_id').html(response.username);
           }else{
              $('#div_id').html('error');
           }
    }

尝试如下设置会话:

dataType:'json'

我将变量转储
$this->session
$this->session->userdata
输出是什么?它是空的吗?或者你有错误吗?您是否
$this->load->library('session')?我这样做是为了检查会话是否设置为数组echo“”;打印($this->session->all_userdata());回声“;输出只是数组([\uu ci\u last\u regenate]=>1502943577)我在config@but我需要echo 1知道用户已成功登录。您可以返回类似以下内容的json数据
echo json_encode(数组('success'=>1,'username'=>$this->session->userdata('username'))
并在success函数中访问如下值
console.log(response.success);console.log(response.username)
@Lestahi-see所以我需要在我的ajax上添加数据类型:json,然后在我的控制台上查看它,我需要做console.log(response.success)console.log(response.username)我试试这个你也可以看看我的更新答案@Lestahi在我的控制台上尝试代码内部服务器错误时得到了这个让我仔细检查一下
if ($qa->num_rows() > 0) {
            $resData = $qa->row();
            $userdata = array(
                'user_id' => $resData->user_id,
                'user_name' => ($resData->username),
                'parent_user_id' => ($resData->parent_user_id),
                'email_id' => ($resData->email_id),
                'per_page' => '20'
            );
            $this->session->set_userdata($userdata);
            return true;
        }