Server IP : 127.0.0.2 / Your IP : 3.144.112.72 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /var/www/html/vendor/laravel/framework/src/Illuminate/Session/ |
Upload File : |
<?php namespace Illuminate\Session; use Carbon\Carbon; use SessionHandlerInterface; use Illuminate\Contracts\Auth\Guard; use Illuminate\Database\QueryException; use Illuminate\Database\ConnectionInterface; use Illuminate\Contracts\Container\Container; class DatabaseSessionHandler implements SessionHandlerInterface, ExistenceAwareInterface { /** * The database connection instance. * * @var \Illuminate\Database\ConnectionInterface */ protected $connection; /** * The name of the session table. * * @var string */ protected $table; /** * The number of minutes the session should be valid. * * @var int */ protected $minutes; /** * The container instance. * * @var \Illuminate\Contracts\Container\Container */ protected $container; /** * The existence state of the session. * * @var bool */ protected $exists; /** * Create a new database session handler instance. * * @param \Illuminate\Database\ConnectionInterface $connection * @param string $table * @param int $minutes * @param \Illuminate\Contracts\Container\Container|null $container * @return void */ public function __construct(ConnectionInterface $connection, $table, $minutes, Container $container = null) { $this->table = $table; $this->minutes = $minutes; $this->container = $container; $this->connection = $connection; } /** * {@inheritdoc} */ public function open($savePath, $sessionName) { return true; } /** * {@inheritdoc} */ public function close() { return true; } /** * {@inheritdoc} */ public function read($sessionId) { $session = (object) $this->getQuery()->find($sessionId); if (isset($session->last_activity)) { if ($session->last_activity < Carbon::now()->subMinutes($this->minutes)->getTimestamp()) { $this->exists = true; return; } } if (isset($session->payload)) { $this->exists = true; return base64_decode($session->payload); } } /** * {@inheritdoc} */ public function write($sessionId, $data) { $payload = $this->getDefaultPayload($data); if (! $this->exists) { $this->read($sessionId); } if ($this->exists) { $this->performUpdate($sessionId, $payload); } else { $this->performInsert($sessionId, $payload); } $this->exists = true; return true; } /** * Perform an insert operation on the session ID. * * @param string $sessionId * @param string $payload * @return void */ protected function performInsert($sessionId, $payload) { try { $payload['id'] = $sessionId; return $this->getQuery()->insert($payload); } catch (QueryException $e) { $this->performUpdate($sessionId, $payload); } } /** * Perform an update operation on the session ID. * * @param string $sessionId * @param string $payload * @return int */ protected function performUpdate($sessionId, $payload) { return $this->getQuery()->where('id', $sessionId)->update($payload); } /** * Get the default payload for the session. * * @param string $data * @return array */ protected function getDefaultPayload($data) { $payload = ['payload' => base64_encode($data), 'last_activity' => Carbon::now()->getTimestamp()]; if (! $container = $this->container) { return $payload; } if ($container->bound(Guard::class)) { $payload['user_id'] = $container->make(Guard::class)->id(); } if ($container->bound('request')) { $payload['ip_address'] = $container->make('request')->ip(); $payload['user_agent'] = substr( (string) $container->make('request')->header('User-Agent'), 0, 500 ); } return $payload; } /** * {@inheritdoc} */ public function destroy($sessionId) { $this->getQuery()->where('id', $sessionId)->delete(); return true; } /** * {@inheritdoc} */ public function gc($lifetime) { $this->getQuery()->where('last_activity', '<=', Carbon::now()->getTimestamp() - $lifetime)->delete(); } /** * Get a fresh query builder instance for the table. * * @return \Illuminate\Database\Query\Builder */ protected function getQuery() { return $this->connection->table($this->table); } /** * Set the existence state for the session. * * @param bool $value * @return $this */ public function setExists($value) { $this->exists = $value; return $this; } }