Перейти к публикации

Обновление изображения


Рекомендованные сообщения

Помогите решить такую проблему проблему.

Я поставил на сайт индикатор статуса аси, но картика статуса записывается в кеш браузера и при изменении не меняется

Как сделать так чтобы именно эта картинка обновлялась а все остальные жили нормальной жизнью

P.S. Громко не смейтесь я только учусь

Ссылка на сообщение
Поделиться на других сайтах

pdvz, оно и видно, что только учитесь. Вообще откажитесь от этой бесполезной затеи и не тратье драгоценное время

Ссылка на сообщение
Поделиться на других сайтах

Re-buz

Выруби кэш у браузера...

Дурное дело не хитрое.

pdvz, оно и видно, что только учитесь. Вообще откажитесь от этой бесполезной затеи и не тратье драгоценное время

Я не считаю эту затею бесполезной.

Дело даже не в статусе аси

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

Ссылка на сообщение
Поделиться на других сайтах

pdvz, я вижу два варианта.

Первый вариант. Вместо ссылки вида

http://web.icq.com/whitepages/online?icq=YOURUIN&img=1'>http://web.icq.com/whitepages/online?icq=YOURUIN&img=1

вставить ссылку на самописный скрипт, который будет отдавать http-заголовок типа

header("Pragma: no-cache");

header("Cache-Control: no-cache, must-revalidate");

header("Expires: Sun, 1 Jan 1995 01:00:00 GMT"); // Это какая-нибудь давно прошедшая дата

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // это строчка говорит, что наш скрипт всегда изменен

а потом выдаёт полученную по той же самой ссылке картинку.

Второй вариант: вместо ссылки вида

http://web.icq.com/whitepages/online?icq=YOURUIN&img=1'>http://web.icq.com/whitepages/online?icq=YOURUIN&img=1

вставлять ссылку вида

http://web.icq.com/whitepages/online?icq=YOURUIN&img=1'>http://web.icq.com/whitepages/online?icq=YOURUIN&img=1&superpupercode=<?php echo time();?>

Таким образом ваша картинка всегда будет казаться браузеру абсолютно новой.

Ссылка на сообщение
Поделиться на других сайтах

pdvz, я вижу два варианта.

Первый вариант. Вместо ссылки вида

http://web.icq.com/whitepages/online?icq=YOURUIN&img=1'>http://web.icq.com/whitepages/online?icq=YOURUIN&img=1

вставить ссылку на самописный скрипт, который будет отдавать http-заголовок типа

header("Pragma: no-cache");

header("Cache-Control: no-cache, must-revalidate");

header("Expires: Sun, 1 Jan 1995 01:00:00 GMT"); // Это какая-нибудь давно прошедшая дата

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // это строчка говорит, что наш скрипт всегда изменен

а потом выдаёт полученную по той же самой ссылке картинку.

Второй вариант: вместо ссылки вида

http://web.icq.com/whitepages/online?icq=YOURUIN&img=1'>http://web.icq.com/whitepages/online?icq=YOURUIN&img=1

вставлять ссылку вида

http://web.icq.com/whitepages/online?icq=YOURUIN&img=1'>http://web.icq.com/whitepages/online?icq=YOURUIN&img=1&superpupercode=<?php echo time();?>

Таким образом ваша картинка всегда будет казаться браузеру абсолютно новой.

Первый вариант, как я я понял обновляет всю страницу

попробывал 2 но всё осталось без изменений

Ссылка на сообщение
Поделиться на других сайтах

pdvz, первый вариант как раз предназначен только для картинки, а не для страницы.

И выглядеть будет примерно так...

<img src="http://site.ru/img.php?icq=777777">

где 777777 чейто блатной номер, который приведён исключительно в качестве примера B)

Ссылка на сообщение
Поделиться на других сайтах

чёто я не могу понять где прописывать

header("Pragma: no-cache");

header("Cache-Control: no-cache, must-revalidate");

header("Expires: Sun, 1 Jan 1995 01:00:00 GMT"); // Это какая-нибудь давно прошедшая дата

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // это строчка говорит, что наш скрипт всегда изменен

в стдельном файле чтоли

Изменено пользователем pdvz
Ссылка на сообщение
Поделиться на других сайтах

pdvz, ну а где ещё.

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

Ссылка на сообщение
Поделиться на других сайтах

Пример php-файла, который будет выдавать статус:

<?php

$uin = $_GET['uin'];

$link = fopen("http://web.icq.com/whitepages/online?icq=".$uin."&img=5", "rb");

$contents = "";

while (!feof($link)) {

  $contents .= fread($link, 8192);

}

fclose($link);


header("Pragma: no-cache");

header("Cache-Control: no-cache, must-revalidate");

header("Expires: Sun, 1 Jan 1995 01:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header ("Content-type: image/gif");

echo $contents;

?>

Обращаться к файлу придётся по адресу http://www.yorsite.ru/filename.php?uin=777777

где http://www.yorsite.ru - адрес вашего сайта

filename.php - имя файла скрипта

777777 - чейто блатной номер, который приведён исключительно в качестве примера ©

Ссылка на сообщение
Поделиться на других сайтах

pdvz, я не знаю php, просто кодить - ума много не надо © :lol:

На самом деле, это самый простой вариант. Грамотнее было бы, например, сделать еще проверку на то, что попытаются подсунуть вместо uin'a:

<?php

$uin = $_GET['uin'];

if (preg_match("/^\d+$/", $uin))

{

   $link = fopen("http://web.icq.com/whitepages/online?icq=".$uin."&img=5", "rb");

}

else

{

   $link = fopen("http://forum.dle-news.ru/style_emoticons/default/ph34r.gif", "rb");

}

$contents = "";

while (!feof($link)) {

  $contents .= fread($link, 8192);

}

fclose($link);


header("Pragma: no-cache");

header("Cache-Control: no-cache, must-revalidate");

header("Expires: Sun, 1 Jan 1995 01:00:00 GMT");

header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

header ("Content-type: image/gif");

echo $contents;

?>

Вместо "http://forum.dle-news.ru/style_emoticons/default/ph34r.gif" вставляете ссылку на любую gif-картинку, которой вы хотите тактично послать кулхацкера куда-нибудь в лес. Можно и не gif, но тогда должен будет меняться и Content-type.

Изменено пользователем Torquemada
Ссылка на сообщение
Поделиться на других сайтах

Блин на локалке тестил всё работало

как перенёс в папку с двигом всём картинки не отображаются

:blink:

а нельзя никак без внешнего файла обойтись

Изменено пользователем pdvz
Ссылка на сообщение
Поделиться на других сайтах

Ну тогда стоит добавить проверку вида (6 < uin < 9) :)

Я видел пятизнак. Два раза в своей жизни, один из них меньше недели назад) Да и не исключено, что когда-нибудь дойдём до десятизнаков. Так что пусть уж будет просто проверка на численность аргумента.

Блин на локалке тестил всё работало

как перенёс в папку с двигом всём картинки не отображаются

:blink:

а нельзя никак без внешнего файла обойтись

В каком смысле не отображаются? Что говорят?

Без внешнего файла - упомянутый способ номер два. Вместо ссылки вида

<?php echo "http://web.icq.com/whitepages/online?icq=". $uin . "&img=5"; ?>
ваш шаблон должен генерировать ссылку вида
<?php echo "http://web.icq.com/whitepages/online?icq=". $uin . "&img=5&superarg=" . time(); ?>

Ссылка на сообщение
Поделиться на других сайтах

Вместо картинок пустые места

будто PHP файла не существует или неправильно к нему путь указан

но я проверял всё нормально ссылка на файл правильная

да и на локальном сервере всё работает, а на хостинге нет

пишет

Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration in /home/pcwarez/domains/pc-warez.kzet.ru/public_html/templates/pc-warez/icq.php on line 3


Warning: fopen(http://icq.scatter.cz/status/icq_image.php?img=1301&icq=375474004) [function.fopen]: failed to open stream: no suitable wrapper could be found in /home/pcwarez/domains/pc-warez.kzet.ru/public_html/templates/pc-warez/icq.php on line 3


Warning: feof(): supplied argument is not a valid stream resource in /home/pcwarez/domains/pc-warez.kzet.ru/public_html/templates/pc-warez/icq.php on line 5

Изменено пользователем pdvz
Ссылка на сообщение
Поделиться на других сайтах

Ну, собственно, вот вам и ответ. Открытие внешних url у вас просто запрещено настройками сервера. Просите хостера включить в php.ini опцию allow_url_fopen.

Ссылка на сообщение
Поделиться на других сайтах

pdvz, собственно, либо действительно съезжайте, либо смотрите способ №2 и правьте вашу строку генерации ссылки на уин, либо переходите, например, на скайп :lol: у них это грамотнее реализовано и можно получать статус, например, через DNS-запрос.

Ссылка на сообщение
Поделиться на других сайтах

Сделал так:

<img src=<?php echo"http://icq.scatter.cz/status/icq_image.php?img=1301&icq=375474004&superarg=" . time(); ?>  border="0">
но перед этим надо в файле index.php найдите строчку
echo $tpl->result['main'];
и замените ее на
eval (' ?' . '>' . $tpl->result['main'] . '<' . '?php ');

как написано здесь http://forum.dle-news.ru/index.php?showtopic=22518

и работает при отключенном Fopen

Изменено пользователем pdvz
Ссылка на сообщение
Поделиться на других сайтах

Тогда как вариант надо править profile.php, заменяя

$tpl->set('{icq}', stripslashes($row['icq']));
на
$tpl->set('{icq}', '<img src="http://icq.scatter.cz/status/icq_image.php?img=' . stripslashes($row['icq']) . '&superarg=' . time() . '" /> '. stripslashes($row['icq']));

Как-нибудь так. Будет выводиться и текущий icq-статус, и номер.

Изменено пользователем Torquemada
Ссылка на сообщение
Поделиться на других сайтах

*аплодирует стоя :)*

Не забудьте только 375585004 заменить на {icq} ;)

Ну это если в профиле делать

Я же делаю в main.tpl

да прикольно в профиле, но есть желание замутить иконку статуса и сам номер в коментариях (comments.tpl)

Всё сам догнал

Изменено пользователем pdvz
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...