首页 > 解决方案 > 关于在codeigniter 3中将会话用户数据设置为数据库的问题

问题描述

首先,你们有一些背景知识,我是一个初级开发者,主要使用 Laravel,但是对于这个项目,团队大多擅长 codeigniter 3,所以我必须适应,目前有点困惑。

所以问题是这样的:会话被保存到数据库中,我设置了一个用户数据会话,但是如果不先在第一页做一个 ajax 帖子就不能访问它。

自从我签署 NDA 以来,大多数变量和函数都将被修剪和/或更改。

在第一个控制器中,我们从 android webview 读取原始帖子输入,并像这样设置用户数据:

//this data_one is from android webview
$data_one = file_get_contents('php://input');
if($data_one){
  $obj = (array) json_decode($data_one);
  $this->phone = '';
  if(isset($obj['phone'])){
    $this->phone = $obj['phone'];
  }
}

if($this->phone != ''){
  $session_data = array('page_data' => array("pg" => array("phone" => $this->phone)));
  $this->session->set_userdata($session_data);
}

//there's some data thrown into the data array before loading view, but NDA, so trimmed.
$this->load->view('first_page', $data);

在视图中有一个选择,它将发布一个 ajax 请求,然后重定向到下一页。但是,我目前正在做另一个页面,可以在第一页的 ajax 请求之前访问。

“另一页”依靠第一页的电话号码用户数据来获取其他数据。但是,如果用户没有从第一页选择任何选项,则用户数据返回空,并且默认为“另一页”控制器中 $phone 变量的初始化。

你们知道这是为什么吗?我坚持了好几天,我的“穴居人解决方案”是将“另一页”的链接移动到“下一页”,但是这有点糟糕的用户体验,因为用户应该能够访问“另一页”任何地方。

标签: ajaxsessioncodeigniter-3user-data

解决方案


推荐阅读