Читали ли вы значение из файла cookie в начале следующего сеанса? Настройка cookie выглядит хорошо, но я думаю, что последние параметры могут быть опущены.
setcookie("colorcode", $_SESSION['colorcode'], time()+3600*24*30, '/');
Возможно, даже путь ('/'
) является необязательным. Но это только устанавливает печенье. Вы должны прочитать данные обратно, когда пользователь вернется на ваш сайт в следующий раз.
if ( !isset($_SESSION['colorcode']) and isset($_COOKIE['colorcode']) ) {
if ( preg_match('/^#?[0-9a-fA-F]{6}$/', $_COOKIE['colorcode']) ) {
$_SESSION['colorcode'] = $_COOKIE['colorcode'];
} else {
// bad value... delete cookie if you like
}
}
Если в сеансе нет colorcode
, но значение cookie существует, данные проверяются, и если это действительный шестизначный шестнадцатеричный цветовой код, то значение вставляется в сеанс. Проверка необходима, потому что cookie - это данные, которые приходят от пользователя и поэтому потенциально злонамеренные.