Магическое число является прямым использованием числа в коде.
, Например, если Вы имеете (в Java):
public class Foo {
public void setPassword(String password) {
// don't do this
if (password.length() > 7) {
throw new InvalidArgumentException("password");
}
}
}
Это должно быть пересмотрено к:
public class Foo {
public static final int MAX_PASSWORD_SIZE = 7;
public void setPassword(String password) {
if (password.length() > MAX_PASSWORD_SIZE) {
throw new InvalidArgumentException("password");
}
}
}
Это улучшает удобочитаемость кода, и легче поддержать. Вообразите случай, где я установил размер поля пароля в GUI. Если я использую магическое число, каждый раз, когда макс. размер изменяется, я должен измениться в двух участках кода. Если я забуду один, это приведет к несоответствиям.
JDK полон примеров как в Integer
, Character
и Math
классы.
пз: инструменты Статического анализа как FindBugs и PMD обнаруживают использование магических чисел в Вашем коде и предлагают рефакторинг.
Проверьте настройки файлов cookie в других браузерах и убедитесь, что они настроены на блокировку всех или пустых при выходе.
Если файлы cookie работают в одном браузере, но не работают в другом, вам необходимо убедиться, что другой браузер позволяет вам устанавливать файлы cookie.
Иногда может показаться, что вы можете создать файл cookie, но затем он будет исчезать или удаляться при каждой перезагрузке страницы.
Также возможно, что поскольку вы устанавливаете файлы cookie в iframe, что браузеры могут рассматривать его как сторонний файл cookie и отклонять его, если в настройках браузера явно не указано разрешить сторонние файлы cookie .
В этом случае вам понадобится компактная политика конфиденциальности (или компактный заголовок P3P ) на страницах, с которых вы пытаетесь установить файлы cookie.
Для PHP вы можете добавить это в качестве заголовка страницы, устанавливающей cookie:
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"');
В прошлом у меня была аналогичная проблема, когда файлы cookie устанавливались Firefox, но не IE, если я работал с локальным сетевым сервером (192.168.0.102 или что-то в этом роде), но когда Я перенес все это на публичный сервер с доменным именем, все работало нормально.
IE может иметь какие-то странные правила относительно файлов cookie и доменных имен. Не уверен, поможет ли это в вашем случае.
IFRAME - это причина потери файлов cookie. Ваш файл cookie идентификатора сеанса PHP также теряется, и для каждого запроса создается новый сеанс, поэтому предыдущее состояние теряется.
Хотя заголовки P3P могут помочь, браузеры клиентов все еще могут быть настроены на запрет сторонних файлов cookie, а P3P может ' t переопределить это. Стив Гибсон из Безопасность сейчас! podcast fame неоднократно рекомендует включить блокировку сторонних файлов cookie, потому что это останавливает такие вещи, как отслеживание файлов cookie.
Что вам нужно сделать, так это переключиться на идентификатор сеанса на основе формы. PHP упрощает это, предоставляя переменной формы «PHPSESSID» либо в строке запроса, либо в скрытой переменной формы ввода значение session_id ()
. Или, если вы хотите быть переносимым, проверьте значение ini_get ('session.name'
Вы устанавливаете cookie на точно такой же URL? Если вы используете $ _ SERVER ['HTTP_HOST']
, тогда один браузер может установить его для http://example.com , а другой может установить его на http: / /www.example.com. Если вы посетите альтернативную версию, cookie не будет установлен.
Чтобы процитировать документы PHP :
Домен, в котором доступен cookie. Чтобы файл cookie был доступен на всех поддоменах example.com, вы должны установить для него значение «.example.com». Файл. не требуется, но делает его совместимым с большим количеством браузеров. Установив его на www.example. com сделает файл cookie доступным только в субдомене www.
Поэтому попробуйте установить '.yoursite.com' в качестве домена.
Другие возможности:
problema en cookies para ie SOLUCIONADO: problem at cookies for ie SOLVED:
Es SIMPLE, Cuando declaren la cookie y escriben en el EXPIRE: time()+60*60*24*30, cambien los 60's por 120 asi: time()+120*120*24*30. A m'i me funcion'o a la perfeccion.
Its simple, when you declare the cookie, at the expire time "time()+60*60*24*30", change los 60's by 120 so: time()+120*120*24*30. It worked for me.