我想使用类为用户创建一个持久会话,但似乎我无法使其工作。目前,我有这个:
<?php
class Session {
private $sessionId = NULL;
public function __construct() {
session_start();
if($this->sessionId === NULL)
$this->sessionId = session_id();
return $this->sessionId;
}
public function getSessionValue($field) {
return $_SESSION[$field];
}
public function setSessionValue($field, $data) {
$_SESSION[$field] = $data;
}
public function removeSessionValue($field) {
unset($_SESSION[$field]);
}
public function destroySession() {
$this->sessionId = NULL;
session_destroy();
}
public function __toString() {
return $this->sessionId;
}
}
?>
但实际上,当我将用户重定向到另一个domanin以便他可以付款时,他会在他回到我的网站时失去会话。目前,我使用此类中的setSessionValue('paymentid', 1)
方法保存了一些数据,使用javascript重定向,当它返回时,我有这段代码来检查他是否有会话值:
$session = new Session();
if($session->getSessionValue('paymentid') !== null) {
// Do something here
}
这给了我一个空虚的工资。奇怪的是,它有时会起作用,但它并不是一直都有,所以...这有什么不妥?
答案 0 :(得分:0)
仔细检查在页面之间移动用户的代码。您可能无意中重置了会话变量中的id值。我觉得在我的网页上做var_dump $ _SESSION很有帮助,看看我的vars发生了什么。至于为什么它在某个时候有效,可能是例如从取消的交易中返回用户的代码与成功的交易不同。查看保留id var完整的代码,因为那是你要在其他地方应用的代码。