diafan: Ух ты! Да, действительно, не только некоторые хостинги являются причиной проблемы, но и только мозилла... Может, какой-то параметр передается с хостинга, на который только мозилла реагирует? Хм...
Уважаемый diafan. После ОЧЕНЬ ДОЛГИХ мытарств я понял, что добиться помощи сложно и, уж извините, я взялся за проверку кода. Мне было понятно, что вся проблема в кешировании страниц, но где? Тут еще и Mozilla масла в огонь подлила.
Я взял за основу тот факт, что на других серверах CMS работала без проблем, в частности на McHost. Поскольку я использую площадку AVAhost я решил пойти от простого, т.е. запретить кеширование в домашнем каталоге сайта:
Все заработало великолепно. НО..... Во-первых, резко снизилась скорость загрузки страницы, во-вторых, возросла нагрузка на BD, что меня в корне не устраивает. Конечно, если сервер ультрамощный, то можно было бы так и оставить, но мне, как-то показалось, что это не так. И я решил, все же, проверить код. Более всего меня заинтересовал файл init.php, а особенно та его часть, отвечающая за заголовки:
Вроде все симпатично, однако согласно спецификации http://www.ietf.org/rfc/rfc2616.txt, а последние версии браузеров требуют ее строгого соблюдения, он все же должен выглядеть так:
Все заработало. УРА!!!! Но меня не покидал вопрос - почему не меняя кодинга на других хостах движок все же работает. Ответ оказался простым - при регистрации хостинга, изначально на некоторых хостах создается файл .htaccess с параметрами исключающими кеш родительского каталога.
Не смотря на все выше изложенное хочу сказать ДВИЖОК ОТЛИЧНЫЙ, а модификация кода - та рутина с которой web-разработчик будет сталкиваться постоянно. И это прекрасно - мозг не будет ржаветь🍻
Уважаемый diafan файл .htaccess я дописал. К моему сожалению результат не изменился. Но, что меня действительно удивляет, так это то, что все прекрасно работает в IE7. Неплохо (с небольшими багами) в Opera. Но чтобы в Mozilla была такая лажа?(!) Я понимаю так, во всех браузерах проблема должна вырисовываться одинаково, но этого не происходит. Поэтому вывод - проблема не в движке.🙅
Дело не в регистрации, дело в любых данных, использующих сессии, а это прежде всего корзина. Разбив registration.php проблему не решите однозначно.
Плюс ко всему, размышляя логически: если один и тот же скрипт нормально работает на 15 хостингах, и на 3-х не нормально, какой смысл ломать скрипт и подгонять его под 3 хостинга? Очевидно, что проблема в каком-то параметре на этих 3-х хостингах...
Я с Вами не спорю, проблема, по всей видимости, не в движке. Просто я пытаюсь докопаться до сути. Тут ведь вот какой фокус - если заходим на сайт через Mozilla то при попытке залогиниться, введенные данные "съедаются", но при переходе на другую страницу система выдает приветственное сообщение, ну а потом все, что писал выше.
diafan: nostromo, вы на каком хостинге наблюдали проблему?
Уважаемый diafan я постоянно использую хостинг http://www.avahost.ru/. Признаться очень им доволен. К слову С админом данного хостинга бились над данной проблемой почти сутки. Приведу лишь часть переписки, чтобы не посчитали за флуд:
После этого попытались воспользоваться директивой session.save_path, с
помощью которой решили задать собственный каталог для сохранения файлов
сессий. Результат не изменился.
Есть идея, на текущий момент, разбить registration.php на отдельные сегменты кода с целью обеспечения жесткого logout, но это пока в теории. Сам движок - прекрасный, спору нет, очень гибок, а редактирование содержимого выше любых похвал. Но это "суперкеширование" достало.
Уважаемые Господа. Возник вопрос, который я не могу разрулить. Я не знаю, имею ли я право задавать здесь технические вопросы и все же. У меня не происходит окончание сессии по кнопке \Выйти\. Не могли бы вы прояснить данную причину?
Смысл в том, что при разрыве сессии визуально вроде бы все происходит нормально, но если вернуться на посещенную страницу, появляется сообщение в форме регистрации, что пользователь вошел в систему с таким-то логином и паролем, т.е., как будто сессия и не прерывалась вовсе.
Ух ты! Да, действительно, не только некоторые хостинги являются причиной проблемы, но и только мозилла... Может, какой-то параметр передается с хостинга, на который только мозилла реагирует? Хм...
Уважаемый diafan. После ОЧЕНЬ ДОЛГИХ мытарств я понял, что добиться помощи сложно и, уж извините, я взялся за проверку кода. Мне было понятно, что вся проблема в кешировании страниц, но где? Тут еще и Mozilla масла в огонь подлила.
Я взял за основу тот факт, что на других серверах CMS работала без проблем, в частности на McHost. Поскольку я использую площадку AVAhost я решил пойти от простого, т.е. запретить кеширование в домашнем каталоге сайта:
.htaccess
***************************************
Options -Indexes
Options +FollowSymLinks
ErrorDocument 404 /404.php
DirectoryIndex index.php index.html
AddDefaultCharset utf-8
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^(.*)404.php$ index.php?rewrite=404.php [QSA]
RewriteRule ^(.*)sitemap.xml$ index.php?rewrite=sitemap.xml [QSA]
RewriteRule ^(.*)/$ index.php?rewrite=$1 [QSA]
RewriteRule ^(.*)code/(.*)$ index.php?rewrite=code/$2 [QSA]
RewriteRule ^(.*)file/(.*)$ index.php?rewrite=file/$2 [QSA]
</IfModule>
<IfModule mod_headers.c>
Header append Cache-Control "no-store, no-cache, must-revalidate"
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "now"
</IfModule>
***********************************************************
Все заработало великолепно. НО..... Во-первых, резко снизилась скорость загрузки страницы, во-вторых, возросла нагрузка на BD, что меня в корне не устраивает. Конечно, если сервер ультрамощный, то можно было бы так и оставить, но мне, как-то показалось, что это не так. И я решил, все же, проверить код. Более всего меня заинтересовал файл init.php, а особенно та его часть, отвечающая за заголовки:
********************************************************************
...
/* получаем заголовки станицы */
function getHeaders(){
header("Expires: Sun, 19 Nov 1978 05:00:00 GMT");
header("Last-Modified: " .(!$this->timeedit? gmdate("D, d M Y H:i:s"): gmdate("D, d M Y H:i:s",$this->timeedit)) . " GMT");
header("Cache-Control: store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", FALSE);
header('Content-Type: text/html; charset=utf-8');
}
/*
...
********************************************************************
Вроде все симпатично, однако согласно спецификации http://www.ietf.org/rfc/rfc2616.txt, а последние версии браузеров требуют ее строгого соблюдения, он все же должен выглядеть так:
********************************************************************
...
/* получаем заголовки станицы */
function getHeaders(){
header("Expires: " . date("r"));
header("Last-Modified: " .(!$this->timeedit? gmdate("D, d M Y H:i:s"): gmdate("D, d M Y H:i:s",$this->timeedit)) . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
header("Cache-Control: post-check=0, pre-check=0", FALSE);
header('Content-Type: text/html; charset=utf-8');
}
/*
...
********************************************************************
Все заработало. УРА!!!! Но меня не покидал вопрос - почему не меняя кодинга на других хостах движок все же работает. Ответ оказался простым - при регистрации хостинга, изначально на некоторых хостах создается файл .htaccess с параметрами исключающими кеш родительского каталога.
Не смотря на все выше изложенное хочу сказать ДВИЖОК ОТЛИЧНЫЙ, а модификация кода - та рутина с которой web-разработчик будет сталкиваться постоянно. И это прекрасно - мозг не будет ржаветь🍻
Уважаемый diafan файл .htaccess я дописал. К моему сожалению результат не изменился. Но, что меня действительно удивляет, так это то, что все прекрасно работает в IE7. Неплохо (с небольшими багами) в Opera. Но чтобы в Mozilla была такая лажа?(!) Я понимаю так, во всех браузерах проблема должна вырисовываться одинаково, но этого не происходит. Поэтому вывод - проблема не в движке.🙅
Status: HTTP/1.1 200 OK
Date: Sun, 24 Jan 2010 10:25:23 GMT
Server: Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635
X-powered-by: PHP/5.2.12
Pragma: no-cache
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Cache-control: store, no-cache, must-revalidate, post-check=0, pre-check=0
Set-cookie: SESS928edfe774d8a40b667a9580fb19b3c4=213a4e593949e4916debd833e1f1b5bf; path=/
Last-modified: Sat, 23 Jan 2010 13:39:40 GMT
Transfer-encoding: chunked
Content-type: text/html; charset=utf-8
На diafan мой домен http://sv-istochnik.com
Вот такие заголовки.
Плюс ко всему, размышляя логически: если один и тот же скрипт нормально работает на 15 хостингах, и на 3-х не нормально, какой смысл ломать скрипт и подгонять его под 3 хостинга? Очевидно, что проблема в каком-то параметре на этих 3-х хостингах...
Я с Вами не спорю, проблема, по всей видимости, не в движке. Просто я пытаюсь докопаться до сути. Тут ведь вот какой фокус - если заходим на сайт через Mozilla то при попытке залогиниться, введенные данные "съедаются", но при переходе на другую страницу система выдает приветственное сообщение, ну а потом все, что писал выше.
nostromo, вы на каком хостинге наблюдали проблему?
Уважаемый diafan я постоянно использую хостинг http://www.avahost.ru/. Признаться очень им доволен. К слову С админом данного хостинга бились над данной проблемой почти сутки. Приведу лишь часть переписки, чтобы не посчитали за флуд:
************************************************************
Здравствуйте,
Какой кэш? кэш сессий?
На этом сервере нет кэширования, только кэш сессий, который включен у 99% серверов.
Все же Вы можете попробовать след. функцию для отключения кэширования:
<?php
function avahost_nocache()
{
header("Expires: Tue, 01 Jan 2001 06:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
}
?>
Если не помогает, дайте "кусок" кода для отладки
Спасибо
******************************************************************
После этого попытались воспользоваться директивой session.save_path, с
помощью которой решили задать собственный каталог для сохранения файлов
сессий. Результат не изменился.
Есть идея, на текущий момент, разбить registration.php на отдельные сегменты кода с целью обеспечения жесткого logout, но это пока в теории. Сам движок - прекрасный, спору нет, очень гибок, а редактирование содержимого выше любых похвал. Но это "суперкеширование" достало.
Уважаемые Господа. Возник вопрос, который я не могу разрулить. Я не знаю, имею ли я право задавать здесь технические вопросы и все же. У меня не происходит окончание сессии по кнопке \Выйти\. Не могли бы вы прояснить данную причину?
Смысл в том, что при разрыве сессии визуально вроде бы все происходит нормально, но если вернуться на посещенную страницу, появляется сообщение в форме регистрации, что пользователь вошел в систему с таким-то логином и паролем, т.е., как будто сессия и не прерывалась вовсе.