Нездоровый глюк. Как бороться? @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 17 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
Lieto Муж.
участник
13
Сообщения: 1501
Зарегистрирован: 28.05.05
Откуда: Киев
Заголовок сообщения: Нездоровый глюк. Как бороться?
Сообщение Добавлено: 21 Сентябрь 2005, 12:05:15 
Глюк заключается в следующем.
ХТМЛ ссылка на пхп странице ведёт на обновляемый по фтп файл.
Типа "скачать наш прайс-лист", а на фтп файл с именем "прайслист", постоянно обновляется. Беда вот в чём — нажимая на "скачать", пользователь получает НЕ последнюю версию файла, а ту, которую он скачивал раньше.
Короче говоря страница и скачиваемый файл как-то хитро кэшируется. Такая проблема абсолютно у всех пользоватателей. Даже если файл физически удалить с фтп, пользователь будет загружать тоже, что и всегда.
Ф5 -- не помогает.

Возможно есть какой-то мини скриптик или ещё какая-то возможность решить этот трабл?

_________________
На вкус и цвет все фломастеры разные. Проверено.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 21 Сентябрь 2005, 12:14:48 
Lieto, возможно прокси?

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

_________________
:: metal kick ass ::
POLL Муж.
соучастник
17
Сообщения: 632
Зарегистрирован: 30.10.03
Откуда: Ростов-на-Дону
Сообщение Добавлено: 21 Сентябрь 2005, 12:18:44 
Ну, а самый простой вариант - просто поменять название файла и ссылку на него. Т.е. если раньше было price.zip ---->>> price_21.09.2005.zip

Это самое простое решение.

_________________
Мастер.
Lieto Муж.
участник
13
Сообщения: 1501
Зарегистрирован: 28.05.05
Откуда: Киев
Сообщение Добавлено: 21 Сентябрь 2005, 12:26:09 
Да, но тогде прийдётся обновлять пхп страницу, а это впринципи не очень удобно, учитывая то, что эту процедуру нужно делать каждый день.

Если посоветуете бесплатный автоматический скриптик -- буду благодарен )


Цитата:
Попробовать передавать файл на скачьку скриптом, передавая заголовки не кешировать, если прокси нормальный должен понять



А как это сделать?

_________________
На вкус и цвет все фломастеры разные. Проверено.
fStrange Муж.
соучастник
10
Сообщения: 900
Зарегистрирован: 25.07.05
Откуда: Ростов-на-Дону
Сообщение Добавлено: 21 Сентябрь 2005, 12:47:59 

Цитата:
Да, но тогде прийдётся обновлять пхп страницу, а это впринципи не очень удобно, учитывая то, что эту процедуру нужно делать каждый день.


зачем каждый день...

называешь файл одинаково... но пользователю отдаешь только его копию с уникальным именем... генеришь через md5(rand()) случайный id, создаешь ссылку используя сгенеренный id... копируешь исходный файл в файл с сгенеренным именем...

3 строчки кода на php или на perle


Последний раз редактировалось fStrange 21 Сентябрь 2005, 12:49:34, всего редактировалось 1 раз.
POLL Муж.
соучастник
17
Сообщения: 632
Зарегистрирован: 30.10.03
Откуда: Ростов-на-Дону
Сообщение Добавлено: 21 Сентябрь 2005, 12:49:30 
Для этой страницы в PHP определи, что

Код:
Header("Cache-Control: no-cache, must-revalidate");
Header("Pragma: no-cache");


Ну или для html
Код:
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="expires" content="0">

_________________
Мастер.
fStrange Муж.
соучастник
10
Сообщения: 900
Зарегистрирован: 25.07.05
Откуда: Ростов-на-Дону
Сообщение Добавлено: 21 Сентябрь 2005, 12:50:32 
POLL, не всегда работает :(, сталкивался
POLL Муж.
соучастник
17
Сообщения: 632
Зарегистрирован: 30.10.03
Откуда: Ростов-на-Дону
Сообщение Добавлено: 21 Сентябрь 2005, 13:00:10 
fStrange,
ага, если через пхп - еще может и сработает
А вот с html - врядли, сохраниться на прокси-сервере и все тут.

Конечно, самый надежный способ, как ты предложил - это для каждой сессии уникальный урл.

_________________
Мастер.
karamba Муж.
старожил
209
Сообщения: 6498
Зарегистрирован: 17.08.05
Откуда: Киев. А шо?
Сообщение Добавлено: 21 Сентябрь 2005, 13:13:41 
добавляйте гет-ом (какбы гет-ом) к названию файла любое рандомное число, сгенеренное хоть пхп, хоть джаваскриптом, типа:
<a href="price.zip?bla_bla=рандомное_число">price</a>

_________________
клетчатый!
Lieto Муж.
участник
13
Сообщения: 1501
Зарегистрирован: 28.05.05
Откуда: Киев
Сообщение Добавлено: 21 Сентябрь 2005, 14:30:41 
2 карамба.

что-то я не понял.
Вот у меня есть ссылка
<a href="price.zip">price</a>
Вот у меня есть сайт
http://www.price.com/price.zip

Что и куда мне надо бы дописать?

_________________
На вкус и цвет все фломастеры разные. Проверено.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 21 Сентябрь 2005, 14:54:30 
из кода

Код:
<?
$filename = $_GET['file'];

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$filename\";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));

readfile("$filename");
exit();
?>


обращаться script.php?file=price.zip

_________________
:: metal kick ass ::
Lieto Муж.
участник
13
Сообщения: 1501
Зарегистрирован: 28.05.05
Откуда: Киев
Сообщение Добавлено: 21 Сентябрь 2005, 15:18:46 
сейчас попробую )

_________________
На вкус и цвет все фломастеры разные. Проверено.
Lieto Муж.
участник
13
Сообщения: 1501
Зарегистрирован: 28.05.05
Откуда: Киев
Сообщение Добавлено: 21 Сентябрь 2005, 15:50:24 
о, гуд! заработало!

Вот только не смог разобраться что делать если файл прайс.зип находить во вложенной папке
ну да неважно

_________________
На вкус и цвет все фломастеры разные. Проверено.
VolkaR
новый человек
0
Сообщения: 33
Зарегистрирован: 16.09.05
Откуда: Обнинск
Сообщение Добавлено: 21 Сентябрь 2005, 22:59:27 
MpaK999
Вот тут то вас и поимеют как хотят и кто хотят =) Кто так пишет?
Передача в параметр '../../../../../etc/passwd' и досвиданья сервер :))
Хотя бы сделать так:
$filename = basename($_GET['file']);
Это если не говорить о проверки на существование файла и на его тип (на всякий случай) =))

Lieto
Вложенная папка меняется тут:
readfile("folder/" . $filename);
Где folder - имя папки. Или "folder/sub/" как угодно.

_________________
cre - At - OR
VolkaR
новый человек
0
Сообщения: 33
Зарегистрирован: 16.09.05
Откуда: Обнинск
Сообщение Добавлено: 21 Сентябрь 2005, 23:02:14 
А ещё не стоит напрягать парсер парсить текстовые строки, даже если там много переменных.
Вместо
"$var text $var2";
стоит таки писать
$var . " text " . $var2;
но это больше имхо, стиль написания у всех свой :) Хотя читаться будет гораздо удобнее тому, кто будет ваш код потом перекапывать.

_________________
cre - At - OR
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 22 Сентябрь 2005, 10:49:08 
VolkaR, ужОс какой, так всем ваш passwd и нужен :laugh: не забыть про теневой!
парсер прямо таки напрягся от 10 строчек кода, ужОс, пАмагите!!!

_________________
:: metal kick ass ::
jettero
новый человек
0
Сообщения: 230
Зарегистрирован: 14.09.03
Сообщение Добавлено: 22 Сентябрь 2005, 20:54:15 

VolkaR писал(а):
А ещё не стоит напрягать парсер парсить текстовые строки, даже если там много переменных.
Вместо
"$var text $var2";
стоит таки писать
$var . " text " . $var2;
но это больше имхо, стиль написания у всех свой :) Хотя читаться будет гораздо удобнее тому, кто будет ваш код потом перекапывать.


как раз $var . " text " . $var2; тебя не спасет от того, чтобы строка парсилась, надо писать $var . ' text ' . $var2;
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 17 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100