Почему мои значения cookie не меняются в PHP 5? - PullRequest
0 голосов
/ 13 июля 2009

У меня есть веб-сайт, на котором информация для входа по желанию сохраняется в файле cookie (помните флажок при входе в систему), и когда пользователь выходит из системы, значение файла cookie для проверки подлинности не изменится, если срок действия файла cookie истечет, что позволяет выйти из системы. *

Система работает правильно как на сервере разработки, так и на промежуточных серверах, но по некоторым причинам не будет работать на нашем производственном сервере. Мы запускаем PHP 5 и Apache на всех серверах.

Спасибо.

Функция для установки cookie (незначительные правки для безопасности):

function setCookieInfo($data,$expiry=0)
{
   if($data === false)
   {
       //remove cookie!
       $cookie = false;
       $expiry = 100; //should be in the past enough!
   }
   else
   {
       $serial = base64_encode(serialize($data));
       $hash = md5($XXX);
       $cookie = $hash."---".$serial;
   }

   if($_SERVER['SERVER_NAME']=='localhost')
   {
       $domain = null;
   }
   else
   {
       $domain = '.'.$_SERVER['SERVER_NAME'];
   }

   return setcookie('Auth', $cookie, $expiry, $this->controller->base, $domain);
}

Ответы [ 3 ]

1 голос
/ 13 июля 2009

Размещение некоторого реального кода может помочь, но я рискну предположить, что это как-то связано с используемым доменом cookie.

0 голосов
/ 13 июля 2009

Захватите захват трафика (например, www.fiddler2.com) вызова SetCookie, который предназначен для удаления куки, и убедитесь, что Домен действителен, а время / значение срока действия соответствует ожидаемому.

0 голосов
/ 13 июля 2009

Предполагая, что вы используете функцию PHP setcookie (), убедитесь, что домен и путь для cookie заданы правильно. Проверьте PHP документацию для функции для получения дополнительной информации.

Я мог бы точно сказать вам, если бы у меня было немного больше информации. Можете ли вы предоставить больше информации, не ставя под угрозу слишком много о проекте? Как насчет URL-адресов серверов разработки, промежуточных и рабочих серверов или хотя бы примеров того, на что они могут быть похожи?

Редактировать

Исходя из информации, предоставленной вами в вашем комментарии, я бы рекомендовал вам использовать HTTP_HOST вместо SERVER_NAME. SERVER_NAME может показывать вам странное значение в зависимости от настроек вашего виртуального сервера. Ваш путь может быть не совсем правильным - попробуйте '/', и он должен быть доступен независимо от того, в каком подкаталоге находится пользователь.

Также

$this->controller->base

заставляет меня думать, что вы можете использовать CodeIgniter или Kohana. Если это так, вы можете рассмотреть возможность использования их помощников cookie.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...