Когда я создаю файл cookie, как получить время expire time
cookie?
Большое спасибо.
Этого трудно достичь, но дату истечения срока действия файла cookie можно установить в другом файле cookie. Затем этот файл cookie может быть прочитан для получения даты истечения срока действия. Возможно, есть лучший способ, но это один из способов решения вашей проблемы.
Вставка закодированного json внутри cookie – мой любимый метод, чтобы получить правильно сформированные данные из файла cookie. Попробуй это:
$expiry = time() + 12345; $data = (object) array( "value1" => "just for fun", "value2" => "i'll save whatever I want here" ); $cookieData = (object) array( "data" => $data, "expiry" => $expiry ); setcookie( "cookiename", json_encode( $cookieData ), $expiry );
затем, когда вы получите свой файл cookie в следующий раз:
$cookie = json_decode( $_COOKIE[ "cookiename" ] );
вы можете просто извлечь время истечения, которое было вставлено как данные внутри самого файла cookie.
$expiry = $cookie->expiry;
и, кроме того, данные, которые выйдут в качестве полезного объекта 🙂
$data = $cookie->data; $value1 = $cookie->data->value1;
и т. д. Я нахожу, что это очень простой способ использовать файлы cookie, потому что вы можете вложить столько маленьких объектов в другие объекты, сколько хотите!
Вы можете установить значение cookie с истечением срока действия и получить срок действия от значения cookie.
// set $expiry = time()+3600; setcookie("mycookie", "mycookievalue|$expiry", $expiry); // get if (isset($_COOKIE["mycookie"])) { list($value, $expiry) = explode("|", $_COOKIE["mycookie"]); }
// Помните, что в этом случае было бы более безопасным использование двухстороннего шифрования. См. https://github.com/qeremy/Cryptee
Когда вы создаете файл cookie через PHP die Значение по умолчанию равно 0, из руководства:
Если установлено значение 0 или опущено, файл cookie истекает в конце сеанса (когда браузер закрывается)
В противном случае вы можете установить время использования файлов cookie в секундах в качестве третьего параметра:
http://www.php.net/manual/en/function.setcookie.php
Но если вы хотите получить оставшееся время жизни уже существующего файла cookie, я боюсь, что это невозможно (по крайней мере, не прямо).
Чтобы получить время истечения срока действия cookie, используйте этот простой метод.
<?php //#############PART 1############# //expiration time (a*b*c*d) <- change D corresponding to number of days for cookie expiration $time = time()+(60*60*24*365); $timeMemo = (string)$time; //sets cookie with expiration time defined above setcookie("testCookie", "" . $timeMemo . "", $time); //#############PART 2############# //this function will convert seconds to days. function secToDays($sec){ return ($sec / 60 / 60 / 24); } //checks if cookie is set and prints out expiration time in days if(isset($_COOKIE['testCookie'])){ echo "Cookie is set<br />"; if(round(secToDays((intval($_COOKIE['testCookie']) - time())),1) < 1){ echo "Cookie will expire today."; }else{ echo "Cookie will expire in " . round(secToDays((intval($_COOKIE['testCookie']) - time())),1) . " day(s)"; } }else{ echo "not set..."; }
?>
Вам нужно сохранить часть 1 и часть 2 в разных файлах , иначе вы получите одинаковые даты истечения срока действия каждый раз.