Re[6]: Проверить установлена ли программа
От: jekazz  
Дата: 19.09.08 11:28
Оценка:
Сделал. Только вот прикол. FireFox коней мочит. Opera и IE правильно работают.

В начале страницы:
if (isset($_GET['MyProgramInstalled'])) {
setcookie('MyProgramInstalled', $_GET['MyProgramInstalled'], 0xFFFFFFFF, '/', 'myhost.com');
}

По-глубже в коде...

Проверка — установлена ли программа:
var MyProgramInstalled = getCookie('MyProgramInstalled');
if (MyProgramInstalled == null || MyProgramInstalled == 'false') {
showDownloadMessage(); // выводит предложение скачать программу

При выборе "У меня уже установлена эта программа" и нажатии ОК:
setCookie('MyProgramInstalled', 'true', '/', 'myhost.com');

Где getCookie, setCookie:
function getCookie(name)
{
var prefix = name + "="
var cookieStartIndex = document.cookie.indexOf(prefix)
if (cookieStartIndex == -1)
return null;

var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
if (cookieEndIndex == -1)
cookieEndIndex = document.cookie.length

return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}

function setCookie(name, value, path, domain) {
var curCookie = name + '=' + escape(value) + '; expires=Fri, 18-Sep-2020 00:00:00 GMT';
document.cookie = curCookie;
}

Так вот FireFox не изменяет значение MyProgramInstalled с true на false и наоборот, а добавляет второе! То есть если в cookie было MyProgramInstalled=true а скрипту передается false ($_GET['MyProgramInstalled']==false), то FireFox добавляет новое значение, и в cookie становится: MyProgramInstalled=true; MyProgramInstalled=false;
Предварительное удаление MyProgramInstalled из cookie через присвоение пустого значения и времени expires=Thu, 01-Jan-1970 00:00:01 GMT ничего не дает.
Как это обойти?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.