我正在使用4个codeigniter。第一次进入页面时,需要将代码写入会话中,然后在用户提交表单时,将此代码与会话中的代码进行比较。为了检查,我在其中显示会话view
并且它与代码匹配,但是,用于比较的会话中的值结果被写入了另一个值,并且不清楚它来自哪里。我清理了会话,并Flashdata
使用了它,然后停止了它并再次启动了会话,仍然写入了一个随机值。但是,如果您使用var_dump
-th 强制会话退出控制器,或者只是重新启动页面以覆盖该值,则比较两个必要的代码并且一切正常。可能是什么问题呢?会话在构造函数中连接。
控制器特点:
public function __construct()
{
$this->session = \Config\Services::session();
}
public function index()
{
$userCode = $this->request->getPost("userCode");
$codeSession = $this->session->get("code");
if(!empty($userCode))
{
if($userCode == $codeSession)
{
return redirect()->to('/Home');
}else{
// Для проверки значений. При первом посте - мусор, при последующих нужный код
var_dump($codeSession);
}
}else{
// Тут даже при первом заходе на страницу уже есть код почему-то
$this->session->has("code") ? $this->session->remove("code") : '';
}
$this->generateCode();
$data['codeSession'] = $this->session->get("code");
// var_dump($this->session->get()); -> Так сработает и при первом запуске.
// Без вывода надо перезапустить страницу чтобы код опять переприсвоился.
return view("/pageWithCode", $data['codeSession']);
}
private function generateCode()
{
$code = "Some random code";
$this->session->set("code", $code);
}