Слияние кода завершено, страница обновится автоматически
<?php
namespace app\threadtask;
use yii\base\Component;
use yii\web\Cookie;
class Session extends Component implements \IteratorAggregate, \ArrayAccess, \Countable {
/**
* @var resource
*/
private $var, $flash;
public $expire = 7200;
/**
* @var string
*/
public $name = 'PHPSESSID';
public $flashParam = '__flash';
private $_id;
public function init() {
$cookie = \Yii::$app->request->cookies->get($this->name);
if(!$cookie || !$cookie->value) {
$this->regenerateID();
} else {
$this->setId($cookie->value);
}
}
public function open() {
}
public function getHasSessionId() {
return \Yii::$app->request->cookies->has($this->name);
}
public function regenerateID(bool $deleteOldSession=false) {
if($deleteOldSession) $this->destroy();
$this->setId(md5(random_bytes(16)));
}
public function getId() {
return $this->_id;
}
public function setId($id) {
if($this->_id && $id !== $this->_id) {
$this->destroy();
}
$this->_id = $id;
$cookie = new Cookie();
$cookie->name = $this->name;
$cookie->value = $id;
$cookie->expire = $this->expire + time();
\Yii::$app->response->cookies->add($cookie);
$this->var = ts_var_declare($cookie->value);
ts_var_expire($this->var, $cookie->expire);
$this->flash = ts_var_declare($this->flashParam, $this->var);
}
public function getIsActive() {
return true;
}
public function offsetGet($offset) {
return ts_var_get($this->var, $offset);
}
public function getIterator() {
return new \ArrayIterator(ts_var_get($this->var));
}
public function offsetExists($offset) {
return ts_var_exists($this->var, $offset);
}
public function offsetUnset($offset) {
return ts_var_del($this->var, $offset);
}
public function count() {
return ts_var_count($this->var);
}
public function getCount() {
return ts_var_count($this->var);
}
public function offsetSet($offset, $value) {
return ts_var_set($this->var, $offset, $value);
}
public function has($key) {
return ts_var_exists($this->var, $key);
}
public function get($key, $def = null) {
return ts_var_exists($this->var, $key) ? ts_var_get($this->var, $key) : $def;
}
public function set($key, $value) {
return ts_var_set($this->var, $key, $value);
}
public function remove($key) {
return ts_var_get($this->var, $key, true);
}
public function removeAll() {
ts_var_clean($this->var);
$this->flash = ts_var_declare($this->flashParam, $this->var);
}
public function getAllFlashes($delete = false) {
return ts_var_get($this->flash, null, $delete) ?: [];
}
public function hasFlash($key) {
return ts_var_exists($this->flash, $key);
}
public function getFlash($key, $defaultValue = null, $delete = true) {
return ts_var_exists($this->flash, $key) ? ts_var_get($this->flash, $key, $delete) : $defaultValue;
}
public function addFlash($key, $value = true, $removeAfterAccess = true) {
if(ts_var_exists($this->flash, $key)) {
return ts_var_inc($this->flash, $key, $value);
} else {
return ts_var_set($this->flash, $key, [$value]);
}
}
public function setFlash($key, $value = true, $removeAfterAccess = true) {
return ts_var_set($this->flash, $key, $value);
}
public function removeFlash($key) {
return ts_var_get($this->flash, $key, true);
}
public function destroy() {
\Yii::$app->response->cookies->remove($this->name);
$cookie = new Cookie();
$cookie->name = $this->name;
$cookie->value = null;
$cookie->expire = -1;
\Yii::$app->response->cookies->add($cookie);
$ret = ts_var_del(ts_var_declare(null), $this->_id);
$this->_id = null;
return $ret;
}
}
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарий ( 0 )