Список форумов UBForum.ru UserBars.ru
Огромный каталог юзербаров на любые темы!
 
Вход - Вход

Регистрация - Регистрация


На главную сайта UserBars.ru Правила форума Поиск Пользователи FAQ Группы
Создание динамического юзербара на php
На страницу 1, 2, 3, 4, 5  След.
 
Начать новую тему   Ответить на тему    Список форумов UBForum.ru -> Как это сделать…?
 
Автор Сообщение
artemhp
Гость



Зарегистрирован: 07.10.2008
Сообщения: 22
Юбаксов : 0

СообщениеДобавлено: Пт Окт 17, 2008 10:05 am    Заголовок сообщения: Создание динамического юзербара на php Ответить с цитатой

Урок. Создание Динамического юзербара на php

Динамические свойства юзербара, создание которого сейчас будет рассматриваться, заключается не в анимации, а в изменении его внешнего вида в зависимости от программного кода. Таким образом, юзербар приобретает кроме внешней красоты, над которой вы пошаманите в Photoshop, свой собственный интеллект (конечно относительно).
Это может быть как обычный отсчет времени от или до какого-то события, определение ip, операционной системы или браузера пользователя, прогноз погоды, да и все, что угодно! Ограничениями будут являться только ваша фантазия и знания программирования.
Вашему вниманию предлагается самого простого динамического юзербара, в которой может разобраться любой человек. Даже умение программировать на php не потребуется. Я специально приведу кроме основной схемы еще и простейшие шаблоны программного кода, вы можете совсем просто настроить его под себя.
Урок разрабатывался специально для userbars.ru, где значительная часть посетителей - дизайнеры, поэтому на всех технических моментах буду останавливаться очень подробно, и пусть меня простят программисты, для которых всё это может показаться скучным и примитивным.

У вас нет навыков работы в php и от веб-технологий вы далеки?
Тогда этот урок рассчитан и на вас. У вас всё получится, если будете строго следовать уроку, а мои подробные объяснения нацелены на то, чтобы вы осознавали свои действия и, в случае чего, могли переделать всё под себя. Что ж, приступим.

Ход работы

1. Подготовка.
2. Создание юзербара в графическом редакторе.
3. Подготовка инструментария.
4. Создаем скрипт-файл.
4.1. Комментарии относительно шрифтов.
5. Сохранение и размещение.
6. Первый результат.
7. .htaccess.
8. Конечный результат.

1. Подготовка

Нам понадобятся:

* Хостинг - www.ho.ua
* FTP client - Total Commander
* Editor - Notepad++

Теперь остановимся на каждом подробнее.

Веб-сервер

Для начала, нам потребуется хостинг. Т.е. дисковое пространство с поддержкой php.
Файлообменники или бесплатные галереи в данном случае не подойдут, т.к. на них мы можем закачать только статическое изображение. Наша же картинка будет каждый раз меняться, т.е. создаваться заново индивидуально для каждого пользователя серверным приложением.
Что делать, если своего веб-сервера у вас нет, а оплачивать хостинг совсем не хочется? Есть множество бесплатных хостингов, но я остановился на выборе www.ho.ua

Заполняем форму:


На e-mail приходит активация.
Активируем и получаем логин с паролем.


FTP-client (FTP клиент)

Для того, что бы управлять файлами на хостинге, воспользуемся Total Commander’ом: http://www.ghisler.com
Заходим в утилиту управления FTP-соединением. Ctrl+F.
Жмем кнопку «Добавить». И заполняем все поля значениями, которые выслали нам на е-мейл



Добавилось новое FTP соединение. Выбираем его из списка, жмем кнопку «Соединиться» и получаем доступ к файлам.

Editor (Текстовый редактор кода)
Мы будем работать с программным кодом и вручную, поэтому воспользуемся программой Notepad++( http://notepad-plus.sourceforge.net/ru/site.htm) которая красиво подсвечивает код php.
Скачиваем, устанавливаем и запускаем программу. В меню Синтаксис активируем поле - PHP.

2. Создание юзербара в графическом редакторе

Создаем растровое изображение размером 350 x 19. Всё зависит от ваших мастерских умений в Photoshop. По созданию юзербаров любой сложности можно найти очень много уроков, в этом уроке не буду подробно останавливаться на данном вопросе.
Единственное, что вам нужно рассчитать, это место для графического элемента, желательно с каким-то однотонным фоном. Таким элементом в моем уроке будет выступать обычный текст.

У меня получилось:


Я оставил место между машиной и логотипом “007” специально для текста, который будет оповещать о долгожданной премьере фильма.

3. Подготовка инструментария
Речь идет об инструментарии нашей серверной оболочке.
Рассмотрим все элементы, с которыми нам предстоит работать.

Файл шрифта
Скачиваем шрифт Visitor
http://www.dafont.com/visitor.font

Файл со скриптом
Это файл, который будет содержать программный код для генерации графического изображения. Находиться он должен, только на сервере.
В моем конкретном случае, место этом файлу в директории htdocs.

.htaccess -файл дополнительной конфигурации веб-сервера Apache. На хостинге который я выбрал, такой файл уже существует в директории htdocs . Если ваша цель – хранить на том хостинге только юзербары, то можете созданный файл почистить.
Копируем себе с FTP на жесткий диск файл .htaccess и открываем его блокнотом, или же другим специализированным редактором. У меня для таких целей служит – Notepad++. Если вы хотите заняться динамическими юзербарами всерьез и надолго, то не поленитесь, скачайте и установите.

Уже составленный список программного обеспечения:
Photoshop, Total Commander, Notepad ++.

4. Создаем скрипт
Открываем блокнот: Файл - Создать. Копируем код:

Код:

<?php
header("Content-type: image/jpeg");
 $im = @ImageCreateFromJPEG ("userbar.jpg") ;
 $color = imagecolorallocate($im, 255, 255, 255);
$element = " Since 31.10.2008";
 imagettftext($im, 10, 0, 45, 13, $color, "Visitor TT2 -BRK-.ttf",  $element);
 imagejpeg($im, NULL, 100);
 imagedestroy($im);
 ?>


Как видим со скриншота, я вас не обманываю, все действительно просто:


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

$im = @ImageCreateFromJPEG ("userbar.jpg") ;
Это переменная с адресом изображения, на который будем накладывать свой эффект. У меня это userbar.jpg, который находится в одной папке со скриптом. Если у вас скрипт в корневой директории, а картинка в папке images, то путь будет таким:

$im = @ImageCreateFromJPEG ("images/userbar.jpg") ;

$color = imagecolorallocate($im, 255, 255, 255);
Переменная с цветом. Если вы немного разбираетесь в RGB, то понимаете, что это белый.
Подробней об RGB.
Сгенерировать код нужного цвета.

К примеру, вам нужен черный цвет. Тогда наша строчка будет иметь такой вид:
$color = imagecolorallocate($im, 0, 0, 0);
Зеленый: $color = imagecolorallocate($im, 0, 255, 0);
Синий: $color = imagecolorallocate($im, 0, 0, 255);
Красный: $color = imagecolorallocate($im, 255, 0, 0);

$element = " Since 31.10.2008";
Это строковая переменная (в рамках урока рассматриваем только строковые), в которой должно содержаться то, что мы собираемся выводить на экран.

imagettftext($im, 10, 0, 45, 13, $color, "Visitor TT2 -BRK-.ttf", $element);
Накладываем текст, который содержится в переменной $element.
Где 10 – размер шрифта, 0 – угол поворота картинки, 45 – смещение от левого края, 13 – смещение от верхнего края картинки, Visitor TT2 -BRK-.ttf – шрифт.

imagejpeg($im, NULL, 100);
Вывод картинки на монитор. 100 – максимальное качество изображения. Так как мы создаем небольшой юзербар, то мелочиться с качеством не стоит.

4.1. Шрифт

Программный код php обрабатывается на сервере специальным модулем php в Apache2, и на выходе мы получаем готовый продукт. В основном генерируется html-код, но в нашем случае - картинка.
Поэтому не нужно беспокоится о том, что у пользователя нет такого шрифта, вся процедура выполняется сервером, но как раз о наличии этого шрифта на сервере нам и нужно позаботиться.
Закачать шрифт нужно в нашем случае нужно в папку htdocs и указать к нему путь.
Путь указывается в программном коде в этой строке:
imagettftext($im, 10, 0, 160, 13, $color, "Visitor TT2 -BRK-.ttf", $ element);
В двойных скобках указываем точное местоположение шрифта. Если шрифт вы закачали в ту же папку, где и главный скрипт, то достаточно в точности скопировать имя файла шрифта. Если у вас много шрифтов, и для них вы выделили отдельную папку fonts, то адрес будет такой: "fonts/Visitor TT2 -BRK-.ttf"

Таким образом, настройка шрифта сводится к процедуре в два действия:
1. Закачиваем шрифт через Total Commander на сервер
2. Указываем точный путь файла

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

5. Сохранение и размещение
Если вы строго следовали уроку, то не занимались, ни сохранением, ни размещением php-скрипта, сейчас этим и займемся.

Сохраняем
В Блокноте: Файл – Сохранить как – Имя файла: userbarscript.php
У нас получился файл с расширением *.php
Если будете просматривать файл в Total Commander, обратите внимание, чтобы файл именовался чётко - userbarscript.php, а не userbarscript.php.txt к примру, в случае чего – переименуйте.

Размещаем
Просто скопируйте через Total Commander файл userbarscript.php в директорию вашего хостинга. Если необходимо будет сделать в скрипте изменение, копируйте обратно, изменяйте и заново заливайте – т.к. не всегда получится отредактировать файл непосредственно на сервере.

6. Первый результат
Если вы все сделали правильно, то уже сможете посмотреть свое творение по адресу вашего скрипта, в моем случае: http://artemhp.ho.ua/userbarscript.php

Мой результат:

Всё есть, и картинка, и текст. А вот расположение этого самого текста придётся поправить.

Изменяем
Код:
imagettftext($im, 10, 0, 45, 13, $color, "Visitor TT2 -BRK-.ttf", $element);

на
Код:
imagettftext($im, 10, 0, 160, 13, $color, "Visitor TT2 -BRK-.ttf", $ element);

И всё ровненько:


Это наш первый результат. Но не конечный, так как картинка имеет расширение “php”, а большинство движков форумов не поддерживают формат такой формат картинки . В тэгах [img][/img] мы её не увидим картинки.
Для того, чтобы обмануть браузеры, мы воспользуемся ещё одним файлом из нашего инструментария: .htaccess

7. .htaccess
Открываем .htaccess (желательно в Notepad++). Дописываем такие строки:

Код:
RewriteEngine On
RewriteRule userbar1.jpg userbarscript.php


Записью RewriteEngine On активируем модуль mod_rewrite
И делаем подмену. Как обычный ярлык во всех операционных системах userbar1.jpg – есть ярлыком на userbarscript.php.
Теперь все форумы и движки, видят нормально нашу картинку по адресу – http://artemhp.ho.ua/userbarscript.php

8. Конечный результат
В результате у нас получилось методами программирования создать кусочек графики, а здесь уж понятно, что можно творить всё что угодно. Были бы знания или друзья, которые помогут.
В созданном на этом уроке юзербаре динамику уловить сложно, текст статичен, поэтому в завершение, что бы совесть не мучила, приведу пример интересной возможности - определение ip-адреса.

Вместо:
Код:
$element = " Since 31.10.2008";

пишем
Код:
$element = "007 Agent IP: ".$_SERVER["REMOTE_ADDR"];

Получаем:
[img]hhttp://deykun.com/images/userbar/7.jpg[/img]

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

К примеру:

Вместо записи:
Код:
$element = " Since 31.10.2008";

Вставляем нужный код алгоритма.

Отсчет времени с определенной даты
Дату - 2008-10-10. заменям на свою

Код:
$last = "2008-10-10";
$now = time();
$res = $now - strtotime($last);
$days = 0;
while ( $res >= 86400 ) {
    $days++;
    $res -= 86400;
}
$element = "Прошло - ".$days." дней";


Сколько дней осталось до определенной даты
2009-03-13 - заменям на свое.

Код:

$f = "2009-03-13";
$now = time();
$res = strtotime($f)-$now;
$days = 0;
while ( $res >= 86400 ) {
    $days++;
    $res -= 86400;
}
$element = " Осталось - ".$days." дней";


Замечания. Недостатки.
По ходу тестирования данного метода были замечены следующие недостатки:

Кэширование
Даже если на сервере картинка поменялась, то в браузере Opera вы этого не заметите, пока картинка находится в КЭШе (т.е. картинка запоминается браузером и не выкачивается второй раз с сервера для экономии трафика). Стандартно в Opera под КЭШ выделяется 24 мб, это значит, что при нормальном серфинге уже через день картинка должна обновиться.
Данный недостаток вышеописаного метода замечен только в Opera. Остальные браузеры картинку обновляют с сервера нормально.
Буду весьма признателен, если вы подскажете, как решить данную проблему.

На заметку администраторам
Если у вас свой собственный сервер, то вам нужно проверить наличие:
- Установленного и настроенного в Apache2 mod_rewrite. http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
- Наличие графической библиотеки GD2 для php
http://guzei.com/www/php/gd.php

Выбор хостинга
У вас все получилось. Полигон для испытаний ho.ua уже в прошлом. Вам рано или позно понадобится изменить хостинг или создали свой собственный сервер. Есть быстрый способ проверить, настроен ли он под наши потребности (создание динамических юзербаров).
(от Arrest)

Залейте в корень сайта файлы .htaccess и imgen.php со следующим содержанием:

Код:
RewriteEngine on
RewriteRule ipr.gif imgen.php


imgen.php

Код:
<?php
error_reporting(7);
$i = imagecreate(200, 100);
$c = imagecolorallocate($i, 0, 0, 0);
imagestring($i, 3, 0, 0, "Works!", $c);
imagegif($i);
?>


Всем спасибо.
Выношу огромную благодарность форуму forum.oszone.ru, forum.woweb.ru и ubforum.ru

Автор: Артем Дейкун
Редактор: Coutty, Igor_I
Координаты: http://deykun.com, artem@meta.ua


Последний раз редактировалось: artemhp (Чт Дек 29, 2011 12:03 pm), всего редактировалось 23 раз(а)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
admin
Аццкий Юзербар

Зарегистрирован: 30.05.2004
Сообщения: 258
Юбаксов : 0

СообщениеДобавлено: вчера    Заголовок сообщения: Ответить с цитатой

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Roler
U-Bot

<b>U-Bot</b>


Зарегистрирован: 03.07.2007
Сообщения: 1874
Юбаксов : 10000

СообщениеДобавлено: Пт Окт 17, 2008 10:30 am    Заголовок сообщения: Ответить с цитатой

Хорошо написал)
Но, имхо, для обычного человека это бесмысленно.
Так же, как и качать Notepad++ - можно спокойно юзать блокнот, если всё равно пхп не знаешь.
_________________

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ATHLON
Юзербар
Предупреждений: 3Предупреждений: 3Предупреждений: 3


Зарегистрирован: 29.02.2008
Сообщения: 323
Юбаксов : 3

СообщениеДобавлено: Пт Окт 17, 2008 10:34 am    Заголовок сообщения: Ответить с цитатой

Хотелось бы увидеть у кого что получилось Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора AIM Address
artemhp
Гость



Зарегистрирован: 07.10.2008
Сообщения: 22
Юбаксов : 0

СообщениеДобавлено: Пт Окт 17, 2008 10:38 am    Заголовок сообщения: Ответить с цитатой

Roler
Спасибо, я тоже про обычного человека задумался image020
Делать ли проще и целенаправлено для начинающих php-программистов или для вооще людей, которые близко не подходили к этому делу.

Выбрал второй вариант, и таки думаю, что на этом форуме (а на каком же еще) необычно любят создавать юзербары, а переделав со всякими эфектами и анимациями однотипными, могли бы рискнуть и попробовать сделать для себя что-то совсем неординарное, расширив горизонты своих возможностей.

Меня вот лично мучала мысль о том, как делают всякие юзербары, где айпи показывается, или к какому то событию отсчет времени, уровни в он-лайн играх показываются. Вот взял и разобрался сам, написав урок закрепил у себя это и может кому то тоже полезно будет.

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

Добавлено спустя 1 минуту 53 секунды:

ATHLON
Ага image020 Не стесняйтесь только. Если что не получается, пишите, будем попрвлять)) Главное только терпение. Да и внимательно прочитать урок.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
admin
Аццкий Юзербар

Зарегистрирован: 30.05.2004
Сообщения: 258
Юбаксов : 0

СообщениеДобавлено: вчера    Заголовок сообщения: Ответить с цитатой

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Roler
U-Bot

<b>U-Bot</b>


Зарегистрирован: 03.07.2007
Сообщения: 1874
Юбаксов : 10000

СообщениеДобавлено: Пт Окт 17, 2008 12:00 pm    Заголовок сообщения: Ответить с цитатой

Кстати, htacess может на приведённом хостинге и пашут, но вообще, на бесплатниках, это редкость.
_________________

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
ATHLON
Юзербар
Предупреждений: 3Предупреждений: 3Предупреждений: 3


Зарегистрирован: 29.02.2008
Сообщения: 323
Юбаксов : 3

СообщениеДобавлено: Пт Окт 17, 2008 12:13 pm    Заголовок сообщения: Ответить с цитатой

А можно все это проделать с помощью "Денвера" ?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора AIM Address
Roler
U-Bot

<b>U-Bot</b>


Зарегистрирован: 03.07.2007
Сообщения: 1874
Юбаксов : 10000

СообщениеДобавлено: Пт Окт 17, 2008 12:43 pm    Заголовок сообщения: Ответить с цитатой

ATHLON
У тебя постоянный айпи, постоянно в сети, и много лишних ресурсов? Тогда да! Smile
_________________

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
admin
Аццкий Юзербар

Зарегистрирован: 30.05.2004
Сообщения: 258
Юбаксов : 0

СообщениеДобавлено: вчера    Заголовок сообщения: Ответить с цитатой

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
artemhp
Гость



Зарегистрирован: 07.10.2008
Сообщения: 22
Юбаксов : 0

СообщениеДобавлено: Пт Окт 17, 2008 1:03 pm    Заголовок сообщения: Ответить с цитатой

Денвер я использовал очень давно, как полигон для первых скриптов.
Если уже поднимать сервер, то Linux/Apache2
Но давайте не запугивать учеников, если следовать уроку, то этого не понадобится

Тестировать можно и на бесплатном хостинге.
Все работает image020
http://artemhp.ho.ua/userbarscript.php
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
MOOF
Администратор



Зарегистрирован: 09.02.2007
Сообщения: 1649
Юбаксов : 0

СообщениеДобавлено: Пт Окт 17, 2008 1:16 pm    Заголовок сообщения: Ответить с цитатой

клево, закрепил тему
_________________
Бесплатные графические подписи для форумов
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
FlexZERO
Супер Модератор

<b>Супер Модератор</b>


Зарегистрирован: 17.03.2007
Сообщения: 2717
Юбаксов : 10001

СообщениеДобавлено: Пт Окт 17, 2008 3:11 pm    Заголовок сообщения: Ответить с цитатой

Цитата:
* FTP client - Total Commander
* Editor - Notepad++

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


Вопрос: Что если у пользователя (тот кто смотрит на юб) нет шрифта Visitor TT2 -BRK-.ttf ??

Спасибо за урок. Надо будет попробовать.
_________________



Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора AIM Address
admin
Аццкий Юзербар

Зарегистрирован: 30.05.2004
Сообщения: 258
Юбаксов : 0

СообщениеДобавлено: вчера    Заголовок сообщения: Ответить с цитатой

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Roler
U-Bot

<b>U-Bot</b>


Зарегистрирован: 03.07.2007
Сообщения: 1874
Юбаксов : 10000

СообщениеДобавлено: Пт Окт 17, 2008 3:18 pm    Заголовок сообщения: Ответить с цитатой

FlexZERO
Ты что, это же генерация изображения, на выходе обычный юб Smile
_________________

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FlexZERO
Супер Модератор

<b>Супер Модератор</b>


Зарегистрирован: 17.03.2007
Сообщения: 2717
Юбаксов : 10001

СообщениеДобавлено: Пт Окт 17, 2008 3:21 pm    Заголовок сообщения: Ответить с цитатой

Roler
Хорошо, тогда другой вопрос : откуда на сервере этот шрифт возьмется?? Его туда заливать надо или как??
_________________



Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора AIM Address
ATHLON
Юзербар
Предупреждений: 3Предупреждений: 3Предупреждений: 3


Зарегистрирован: 29.02.2008
Сообщения: 323
Юбаксов : 3

СообщениеДобавлено: Пт Окт 17, 2008 3:32 pm    Заголовок сообщения: Ответить с цитатой

Тоже самое хотел узнать Sad И можно ли генерировать не только надписи но и картинки.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора AIM Address
admin
Аццкий Юзербар

Зарегистрирован: 30.05.2004
Сообщения: 258
Юбаксов : 0

СообщениеДобавлено: вчера    Заголовок сообщения: Ответить с цитатой

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Roler
U-Bot

<b>U-Bot</b>


Зарегистрирован: 03.07.2007
Сообщения: 1874
Юбаксов : 10000

СообщениеДобавлено: Пт Окт 17, 2008 3:33 pm    Заголовок сообщения: Ответить с цитатой

FlexZERO
В скрипте же, при написании текста видишь шрифт?
Вот, заливаешь тупо на сервер... Кстати, в уроке это типа нету?
_________________

Вернуться к началу
Посмотреть профиль Отправить личное сообщение
FlexZERO
Супер Модератор

<b>Супер Модератор</b>


Зарегистрирован: 17.03.2007
Сообщения: 2717
Юбаксов : 10001

СообщениеДобавлено: Пт Окт 17, 2008 3:45 pm    Заголовок сообщения: Ответить с цитатой

Roler писал(а):
FlexZERO
В скрипте же, при написании текста видишь шрифт?

В самом скрипте только название скрипта. Мне интересно как надпись появится, откуда сервер шрифт возьмет этот? Простите, но я в программировании ноль полный, хочу чтобы вы объяснили мне
_________________



Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора AIM Address
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов UBForum.ru -> Как это сделать…? Часовой пояс: GMT + 3
На страницу 1, 2, 3, 4, 5  След.
Страница 1 из 5

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах

phpBB "skin" by DewChugr
Powered by phpBB © 2001, 2005 phpBB Group
y2006-2012 - by MOOF....

Error. Page cannot be displayed. Please contact your service provider for more details. (26)