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

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


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

<b>U-Bot</b>


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

СообщениеДобавлено: Сб Июн 06, 2009 9:29 am    Заголовок сообщения: Ответить с цитатой

Mixer_3300
По-другому возможно, но я предложил более лёгкий вариант)
Обвести попиксельно в цикле никто не запрещает.
_________________

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



Зарегистрирован: 23.10.2008
Сообщения: 14
Юбаксов : 2

СообщениеДобавлено: Ср Июн 24, 2009 5:33 pm    Заголовок сообщения: Ответить с цитатой

А кто подскажет, как сделать все тоже самое, но только чтобы пользователь пройдя по ссылке мог сам ввести текст, который выведется на ББ. ББ один и тот же, но текстов надо много разных. Очень буду благодарен...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
artemhp
Гость



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

СообщениеДобавлено: Ср Июл 08, 2009 12:31 am    Заголовок сообщения: Ответить с цитатой

Spaz писал(а):
А кто подскажет, как сделать все тоже самое, но только чтобы пользователь пройдя по ссылке мог сам ввести текст, который выведется на ББ. ББ один и тот же, но текстов надо много разных. Очень буду благодарен...


Немножко неясно изложено.
Попробую предположить...

- Вам нужно много юзербаров, которые используют один и тот же фон, но с разными текстами. Тексты сами под себя генерируют люди.

Значит здесь нужно припаять Базу Данных и в .htaccess RewriteRule.
Задача несложная, но требует времени и правильности изложения.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
xxxCOOPERxxx
Мимо проходил



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

СообщениеДобавлено: Сб Июл 18, 2009 2:11 am    Заголовок сообщения: Ответить с цитатой

Здравствуйте. А как сделать русский шрифт? Сохранял в кодировках ANSI , UTF-8, UTF-8 без BOM, ничего не получается image027
http://cooper.moy.bz/userbar/userbarscript.php

З.Ы. В htaccess не разобрался чтобы получилось .jpg картинка
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
artemhp
Гость



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

СообщениеДобавлено: Пт Июл 24, 2009 5:59 pm    Заголовок сообщения: Ответить с цитатой

Личным сообщением написали вопрос о создании юзербара, который определял бы статус icq номера.
Есть индикаторы стандартные, типа
http://status.icq.com/online.gif?web=336844&img=5

Но опять же, как сделать свой?
Программное решение достаточно простое.

Код:
include ("CICQStatus.php");
    $icqstatus = new CICQStatus ();
    $status = $icqstatus->execute ($_GET['icq'], $errno, $errstr);
    if ($status)
    {
        switch ($status) {
            case ICQ_ONLINE:
                print ("ICQ " . $_GET["icq"] . " is online!");
                break;
            case ICQ_OFFLINE:
                print ("ICQ " . $_GET["icq"] . " is offline!");
                break;
            case ICQ_WEBAWARE:
                print ("ICQ " . $_GET["icq"] . " has the WebAware option disabled!");
                break;
        }         
}


Подключаем библиотеку CICQStatus.php. Это файлик, код которого:

Код:
<?php
define ("ICQ_ONLINE", 1);
define ("ICQ_OFFLINE", 2);
define ("ICQ_WEBAWARE", 3);

class CICQStatus
{
    var $timeout = 20;
   
    function execute ($icq = "", &$errno, &$errstr)
    {
        $errno = "";
        $errstr = "";
        $raw_headers = "";

        $icq = trim ($icq);
        $host = "status.icq.com";
        $path = "/online.gif?icq=" . $icq;
       
        if (!function_exists ("fsockopen"))
        {
            $errno = "-1";
            $errstr = "Function fsockopen not founded!";
            return false;
        }
        else
        {
            $fp = fsockopen ($host, 80, $errno, $errstr, $this->timeout);
            if (!$fp)
            { return false; }
            else
            {
                fputs ($fp,"GET " . $path . " HTTP/1.1\r\n");
                fputs ($fp,"HOST: " . $host . "\r\n");
                fputs ($fp,"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)\r\n");
                fputs ($fp,"Connection: close\r\n\r\n");
           
                while (!feof ($fp))
                { $raw_headers .= fgets ($fp, 128);  }
            }
            fclose ($fp);
   
            $headers = array ();
            $tmp_headers = explode ("\n", $raw_headers);
            foreach ($tmp_headers as $header)
            {
                $tokens = explode (":", $header, 2);
                if (isset ($tokens[0]) && (trim($tokens[0]) != ""))
                {
                    if (!isset ($tokens[1])) { $tokens[1] = ""; }
                    $headers[] = array ($tokens[0] => trim($tokens[1]));
                }
            }
           
            $location = "";
            foreach ($headers as $header)
            {
                if (isset ($header["Location"]))
                {
                    $location = $header["Location"];
                    break;
                }
            }
           
            $filename = basename ($location);
            switch ($filename) {
                case "online0.gif":
                    return ICQ_OFFLINE;       
                    break;
                case "online1.gif":
                    return ICQ_ONLINE;
                    break;
                default:
                    return ICQ_WEBAWARE;
                    break;
            }     
        }
    }
}
?>


Автором скрипта является Setec Astronomy - setec@freemail.it.
Исходник является open source.


На выходных сделаю подробный мануал для юзербаров.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
imos
Мимо проходил



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

СообщениеДобавлено: Сб Авг 01, 2009 3:55 pm    Заголовок сообщения: Ответить с цитатой

Для использования возможности писать надпись на русском исходный скрипт нужно немного модифицировать. Вот так, например:
Код:
<?php
header("Content-type: image/jpeg");

function win_uni ($in) {
  $in = convert_cyr_string($in ,"w","i");
  $out = "";
  for ($i=0; $i < strlen($in); $i++) {
    $char = ord($in[$i]);
    $out .= ($char > 175)?"&#".(1040+($char-176)).";":$in[$i];
  }
  return $out;
}
 
 $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",  win_uni($element));
 imagejpeg($im, NULL, 100);
 imagedestroy($im);
 ?>
Т.е. добавляем функцию win_uni для перевода текста из Windows-1251 в Unicode и сам текст, выводимый в переменной $element отправляем в эту функцию image020
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
krow7
Мимо проходил



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

СообщениеДобавлено: Сб Авг 15, 2009 8:59 pm    Заголовок сообщения: Ответить с цитатой

Тут уже поднимался вопрос о введении данных пользователем и выдаче ему готовенького юзербара. Как можно это осуществить хотя бы в общих чертах?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
imos
Мимо проходил



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

СообщениеДобавлено: Ср Авг 19, 2009 12:05 pm    Заголовок сообщения: Ответить с цитатой

krow7, создаешь форму (которая через post передаст значение переменной в скрипт с юзербаром) с полем ввода, присваиваешь ему имя element. Пользователь вводит в поле текст, жмет отправить, текст посылается в скрипт, тот генерирует юзербар с пользовательским текстом.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KH9I3b
Мимо проходил



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

СообщениеДобавлено: Чт Окт 29, 2009 12:43 am    Заголовок сообщения: Ответить с цитатой

Roler писал(а):
Никак, только подложить под текст больший текст чёрного цвета.

Это невозможно, так как при увеличении шрифта расстояния между символами также увеличивается и, соответственно, это уже не будет похожу на обводку... т.е. при увеличении шрифта происходит деформация относительно центра буквы, а не относительно её краёв.
единственное можно сделать букву "О" - поставить на фон одну букву большего формата а другую меньшего... а в остальном получается подобный бред:

_________________

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



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

СообщениеДобавлено: Пт Ноя 27, 2009 9:35 pm    Заголовок сообщения: Ответить с цитатой

Попробовал у себя на сервере, до Rewrite работает хорошо, после - все любые попытки зайти на сервер браузером отзываются ошибкой 500. Подскажите что можно сделать
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
KuNG
Мимо проходил



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

СообщениеДобавлено: Вт Янв 26, 2010 11:55 pm    Заголовок сообщения: Ответить с цитатой

KH9I3b писал(а):
Roler писал(а):
Никак, только подложить под текст больший текст чёрного цвета.

Это невозможно, так как при увеличении шрифта расстояния между символами также увеличивается и, соответственно, это уже не будет похожу на обводку... т.е. при увеличении шрифта происходит деформация относительно центра буквы, а не относительно её краёв.
единственное можно сделать букву "О" - поставить на фон одну букву большего формата а другую меньшего... а в остальном получается подобный бред:


Тоже задался этим вопросом "как сделать обводку?". И у меня это получилось.


Хитрость в том, что нужно не увеличивать шрифт и изменять межсимвольное растояние, а сделать слепок силуетов строки, смещённых относительно основных координат на количество пикселей равных ширине обводки (надеюсь понятно выразил мысль). Т.е. мы берём слой с текстом, красим его в цвет обводки и смещаем например вниз на один пиксель. Затем берём полученную картинку, на неё накладываем ещё одну строку того же цвета но смещённую уже вправо, потом ещё одну, но смещённую вверх. И так далее. для обводки таких смещений надо сделать 8. А потом поверх полученной "жирной" надписи накладывается основной текст.

Вот цикл который делает эту работу:
Код:

$cicle = 8; //кол-во циклов смещения
...
$_x = array(0,  0, -1, 1, 1,  1, -1, -1); //матрица смещения по осям x и y
$_y = array(1, -1,  0, 0, 1, -1,  1, -1); //первый проход - смещение вниз

for($n=0;$n<$cicle;$n++)
{
    ImageTTFText($img, $size, $angle, $x_cord+$_x[$n], $y_cord+$_y[$n], $color2, $fontname, $text); //вывод в цикле фразы, которая послужит основой для обводки
}
ImageTTFText($bg, $size, $angle, $x_cord, $y_cord, $color, $fontname, $text); //вывод основной фразы другого цвета.


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

А вот пример простого сдвига, без всяких циклов. Тень. По моему тоже неплохо.


Добавлено спустя 8 минут 58 секунд:

А вот с кирилицей чего-то пока не получилось, но буду пробовать

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

Всё. Победил проблему с русскими буквами (оказалось что шрифт их вообще не содержит), и добавил автоматическое выравнивание по правому краю.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
mishel_nnov
Юзербарчик
Пользователь забанен


Зарегистрирован: 27.03.2010
Сообщения: 89
Юбаксов : 11

СообщениеДобавлено: Пт Апр 23, 2010 6:51 pm    Заголовок сообщения: Ответить с цитатой

ура!) у меня получилось) только вот что то текста нет((
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Wester
Гость
Предупреждений: 1


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

СообщениеДобавлено: Пт Апр 23, 2010 7:14 pm    Заголовок сообщения: Ответить с цитатой

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



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

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

Подскажите как сделать правильные окончания слов?
Например: 1 день, 2 дня, 5 дней. И так для года, месяца, дня.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
QickME
Гость
Предупреждений: 1


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

СообщениеДобавлено: Вс Май 06, 2012 6:04 pm    Заголовок сообщения: Ответить с цитатой

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

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

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