Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] "продвинутые" Юзербары (http://forum.oszone.net/showthread.php?t=119306)

Artem-Samsung 06-10-2008 22:03 917434

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

Поделитесь пожалуйста секретом.

GrayZOR 07-10-2008 01:35 917591

юзербар со своим ip можете получить на сайте 2ip.ru
Большой архив юзербаров можете найти на http://userbars.ru/ так же там имееются статьи по созданию и т.п.

Готовь фотошоп, paint.net и какойнибудь gif-aниматор...

Coutty 07-10-2008 03:57 917613

Если говорить про "каким-образом" они создаются - видимо, библиотекой GD2 для PHP.

Artem-Samsung 09-10-2008 20:35 919951

Coutty, спасибо, GD2 похоже то что надо )

GrayZOR, Спасибо, но на том сайте похожих уроков нету, да и на вопрос на форуме вразумительных ответов не получил

Artem-Samsung 12-10-2008 03:30 921590

Dynamic Userbar Text!
Может кому будет полезно, да и себе на заметку.
Часто просмотриваю свои же темы в поиске информации ))

Artem-Samsung 13-10-2008 00:36 922214

Получилось у меня вообщем сделать юзербар таким вот образом:

PHP код:

<?php 

  header
("Content-type: image/jpeg"); 
  
$im = @ImageCreateFromJPEG ("userbar.jpg") ; 
  
$white imagecolorallocate($im255255255); 
   
  
$text "Blog topics: 36 Since 07.07.2008";

  
imagettftext($im1004513$white"Visitor TT2 -BRK-.ttf",  $text); 
  
imagejpeg($imNULL100); 
  
imagedestroy($im);
?>

Очень увлекательно. Первое мое программирование графики со времен еще 10-го класа в Paskal ))
Результат: http://deykun.com/test.php

Используемые материалы:
http://softtime.ru/dic/id_dic=363&id_group=15
http://php.net/imagejpeg

Вот только вопрос один и самый главный решился нерешенным.
Как собсвенно замутить это все чудо на форум, на сайт и так далее.
Адресс картинки то с окончанием .php как то совсем не радует.
И получится ли сохранить динамичность кода.

Думаю да, так как такие юзербар встречаются на всех форумах, но вот как ? :))
Буду благодарен, если кто чего доброго посоветует.

Пробовал заменять imagejpeg($im, NULL, 100); на imagejpeg($im, 'upload/img.jpeg', 100); Картинка вооще перестала открываться.

Coutty 13-10-2008 08:56 922367

Цитата:

Цитата Artem-Samsung
Пробовал заменять imagejpeg($im, NULL, 100); на imagejpeg($im, 'upload/img.jpeg', 100); Картинка вооще перестала открываться. »

Так правильно - она же сохраняется в другом файле, который не запрашивается браузером. Можно, например, в .htaccess'е написать, чтобы файлы .jpeg рассматривались сервером как php-скрипты. Тогда .jpg будут обычные картинки, а .jpeg - скрипты. Вот и не php-расширение :)
Или же в самом html написать JS на событие body onload. Что-то вроде:
HTML код:

<body onload='document.getElementById("imgCounter").src = "upload/img.jpeg"'>
Не знаю, сработает ли это. Возможно приведёт к двойной загрузке. Если так, то лучше сделать невидимый динамический счётчик и статический видимый:
HTML код:

<img src='scriptCounter.php' width='1px' height='1px' />
<img src='upload/img.jpeg' width='88px' height='30px' />

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

А как насчёт того, чтобы изображение генерировалось в момент создания страницы и выдавалось потом как статичное?

А чтобы не кэшировалось у клиента, я бы добавил "динамический" запрос с рандомным числом:
HTML код:

<img src='upload/img.jpeg?0.12345678' />
Хотя что плохого в изображении, оканчивающемся на .php?)

Artem-Samsung 13-10-2008 14:39 922629

Спасибо, как то попробую разобраться во всем методах.
Но я вот вроде как то сделал своим методом, а именно:

RewriteEngine On
RewriteRule test.jpg test.php [L]

:)))

Получилось:


А что плохого в изображениях на php я тоже не пойму)))) но не любят почему то его форумы в подписях)

А по поводу кешировки? То как так сделать? Если я на форумах буду размещать картинку, то полюбому она будет статический адрес иметь О.о

Хм.. таки да. Кешируется плохо. Я только что поменял цифру на баннере, то только в другом браузере увидел разницу, или если открыть картинку отдельно страницы ((( С кешировкой можете поподробней?

Или это удел всех динамических юзербаров?

Coutty 13-10-2008 18:59 922875

Как сделать, чтобы на форумах не кэшировалось - даже и не знаю.

Artem-Samsung 13-10-2008 20:35 922977

Coutty, подем думать :) А пока тему можно считать решенной. Спасибо, Coutty

Arrest 13-10-2008 20:51 922995

PHP код:

<?php

$good_str 
"D, d M Y H:i:s T";
header("Content-type: image/jpeg");
header("Cache-Control: max-age=43200, must-revalidate");
header("Expires: ".date($good_strtime()+43200);
header("Last-Modified: ".date($good_strfilemtime("cache"));

if(
file_exists("cache") && (time() - filemtime("cache") > 3600*12)){ // 12 часов
 
fpassthru(cache);
 die();
}

// тут всякая генерация картинки и прочая мура
// [...]
// [...]
// [...]

ob_start();
imagejpeg($imNULL100); // image_jpeg оборачиваем в ob_start/ob_end
$image ob_get_contents();
ob_end_flush();

error_reporting(0); // вот тут нам главное не зас@ать сгенеренную картинку ошибками типа "Permission denied"
$fh fopen("cache""w");
fwrite($fh$image);
fclose($fh);
?>

Итого:
1. Браузер запрашивает картинку раз в 12 часов.
2. Сервер генерирует картинку раз в 12 часов.
3. Эти события не синхронизированы :)

P.S. Код как обычно грязный, за его работу я поручиться не могу.

Coutty 13-10-2008 21:19 923024

Arrest, разве для изображений можно указывать "Expires"? Это для меня новость)

Artem-Samsung 14-10-2008 01:06 923213

Тестим :)
Значит поправил скобочек в 5-й и 6-й строчке, скрипт запахал, только картинки нету. Как бы не отображается.
Закоментировав те же 5-е и 6-е строчки все заработало, но на глаз так не скажешь, кешируется или нет :) ну сейчас нет, а может в кеше оно удалиться через 12 часов? :)
Но факт в том, что что то не то со строчками:

PHP код:

header("Expires:".date($good_strtime()+43200));
header("Last-Modified: ".date($good_strfilemtime("cache"))); 


Вот полностью скрипт:

PHP код:

<?php 
$good_str 
"D, d M Y H:i:s T"
header("Content-type: image/jpeg"); 
header("Cache-Control: max-age=43200, must-revalidate"); 
header("Expires:".date($good_strtime()+43200));
header("Last-Modified: ".date($good_strfilemtime("cache"))); 

if(
file_exists("cache") && (time() - filemtime("cache") > 3600*12)){ // 12 часов 
 
fpassthru(cache); 
 die();


  
$im = @ImageCreateFromJPEG ("userbar.jpg"); 
  
$white imagecolorallocate($im255255255); 
  
$text "Blog topics: 38 Since 07.07.2008";

  
imagettftext($im1004513$white"Visitor TT2 -BRK-.ttf",  $text); 

ob_start(); 
imagejpeg($imNULL100);
$image ob_get_contents(); 
ob_end_flush(); 

error_reporting(0);$fh fopen("cache""w"); 
fwrite($fh$image); 
fclose($fh); 
?>

А можно сделать что бы из кеша удалялось не по истечению 12-ти часов, а сразу?
10 кб как бы не сильно и в напряг будет.
если заменить здесь:
PHP код:

if(file_exists("cache") && (time() - filemtime("cache") > 3600*12)){
 
fpassthru(cache); 
 die();


на
PHP код:

if(file_exists("cache") && (time() - filemtime("cache") > 3600*0)){
 
fpassthru(cache); 
 die();


хм... а вот в Фаерфоксе все работает, как запланировано. В Опере нет (

Значит так:
IE 7 - картинка обновляется
Firefox 3 - картинка обновляется
Opera 9 - картинка в кеше застряет

Но такая же ситуация с моим самым простым программны кодом

Arrest 15-10-2008 05:13 924230

Coutty
ммм... нельзя, да? :) по идее браузер должен кэшировать все, что прикажут

Artem-Samsung
Если откручивать кэширование на сервере - то делать так:

PHP код:

<?php  
$good_str 
"D, d M Y H:i:s T";  
header("Content-type: image/jpeg");  
header("Cache-Control: max-age=43200, must-revalidate");  
header("Expires:".date($good_strtime()+43200)); 
header("Last-Modified: ".date($good_strfilemtime("cache")));  


  
$im = @ImageCreateFromJPEG ("userbar.jpg");  
  
$white imagecolorallocate($im255255255);  
  
$text "Blog topics: 38 Since 07.07.2008"

  
imagettftext($im1004513$white"Visitor TT2 -BRK-.ttf",  $text);  

imagejpeg($imNULL100);
?>

тогда и волки сыты, и овцы целы и пастуху вечная память ;)


Время: 14:39.

Время: 14:39.
© OSzone.net 2001-