Проблема cookie PHP, работы в Firefox не в другом браузере

Магическое число является прямым использованием числа в коде.

, Например, если Вы имеете (в 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 обнаруживают использование магических чисел в Вашем коде и предлагают рефакторинг.

5
задан Kesty 31 July 2009 в 11:31
поделиться

5 ответов

Проверьте настройки файлов cookie в других браузерах и убедитесь, что они настроены на блокировку всех или пустых при выходе.

Если файлы cookie работают в одном браузере, но не работают в другом, вам необходимо убедиться, что другой браузер позволяет вам устанавливать файлы cookie.

Иногда может показаться, что вы можете создать файл cookie, но затем он будет исчезать или удаляться при каждой перезагрузке страницы.

Файлы cookie из окна iframe

Также возможно, что поскольку вы устанавливаете файлы 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"'); 
11
ответ дан 13 December 2019 в 19:32
поделиться

В прошлом у меня была аналогичная проблема, когда файлы cookie устанавливались Firefox, но не IE, если я работал с локальным сетевым сервером (192.168.0.102 или что-то в этом роде), но когда Я перенес все это на публичный сервер с доменным именем, все работало нормально.

IE может иметь какие-то странные правила относительно файлов cookie и доменных имен. Не уверен, поможет ли это в вашем случае.

0
ответ дан 13 December 2019 в 19:32
поделиться

IFRAME - это причина потери файлов cookie. Ваш файл cookie идентификатора сеанса PHP также теряется, и для каждого запроса создается новый сеанс, поэтому предыдущее состояние теряется.

Хотя заголовки P3P могут помочь, браузеры клиентов все еще могут быть настроены на запрет сторонних файлов cookie, а P3P может ' t переопределить это. Стив Гибсон из Безопасность сейчас! podcast fame неоднократно рекомендует включить блокировку сторонних файлов cookie, потому что это останавливает такие вещи, как отслеживание файлов cookie.

Что вам нужно сделать, так это переключиться на идентификатор сеанса на основе формы. PHP упрощает это, предоставляя переменной формы «PHPSESSID» либо в строке запроса, либо в скрытой переменной формы ввода значение session_id () . Или, если вы хотите быть переносимым, проверьте значение ini_get ('session.name'

0
ответ дан 13 December 2019 в 19:32
поделиться

Вы устанавливаете 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' в качестве домена.

Другие возможности:

  • $ name - единственный обязательный параметр в функции setcookie - попробуйте пропустить все после того, как $ expire, и посмотрите, работает ли это.
  • Попробуйте установить значение $ expire на долгое время. Может быть, что-то на вашем компьютере или сервере вызывает проблемы со временем?
  • Проверяли ли вы в своем браузере, действительно ли устанавливается cookie? Должен быть способ перечислить каждый набор файлов cookie. Установите файл cookie и проверьте свой браузер.
0
ответ дан 13 December 2019 в 19:32
поделиться

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.

0
ответ дан 13 December 2019 в 19:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: