Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Юзербар на PHP

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Каким образом выполнять скрипт?
Heavenanvil
Отправлено: 03 Июля, 2013 - 08:03:52
Post Id


Частый гость


Покинул форум
Сообщений всего: 183
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Добрый день.

Делаю юзербар для пользователей сайта с динамической информацией, которая берется из базы MySQL.

В общем-то всё получается, юзербар создается следующим кодом:
PHP:
скопировать код в буфер обмена
  1. $im = imagecreatefrompng("template.png"); //Определяем фон
  2. $fontface = "Visitor_Rus.ttf"; //Шрифт
  3. $fontsize = 6; //Размер текста
  4. $textcolor = imagecolorallocate($im, 255, 255, 255); //Цвет текста
  5. $textbar = $char_name . ' - ' . $char_level; //Текст на юзербаре (для примера)
  6. imagettftext($im, $fontsize, 0, 10, 10, $textcolor, $fontface, $textbar); //Добавление текста на юзербар
  7. imagepng($im, $char_id . '.png', 0); //Сохранение png файла с именем $char_id
На странице вывожу изображение через "<img src="<?php echo $char_id; ?>.png" />"

На данной странице это всё работает, но если пользователь захочет вставить юзербар, допустим, в подпись форума, или вообще другого ресурса, а значения в базе MySQL изменятся (допустим $char_level увеличится), как обновить картинку?

(Добавление)
Подозреваю, что нужно сделать скрипт файлом png, в заголовке прописать header ("Content-type: image/png"); и при обращении на сервер по ссылке изображения обрабатывать и выводить нужный юзербар, но... не получается. Картинка не отображается.
.htaccess тоже мучал.

(Отредактировано автором: 03 Июля, 2013 - 08:09:52)

 
 Top
VenZell
Отправлено: 03 Июля, 2013 - 08:28:45
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




 
 Top
Heavenanvil
Отправлено: 03 Июля, 2013 - 08:39:17
Post Id


Частый гость


Покинул форум
Сообщений всего: 183
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Не совсем понятно. Как это использовать?
 
 Top
VenZell
Отправлено: 03 Июля, 2013 - 08:57:37
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




Вот так понятнее?
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. /* Предположим, что этот файл Вы назвали image.php */
  3. header ("Content-type: image/png");
  4. $filepath = 'тут локальный (на сервере) путь к пользовательскому юзербару';
  5. $filename = $char_id . '.png';
  6. $image = $filepath . $filename;
  7. echo file_get_contents($image);
  8. ?>

Тогда картинку выводить пользователю можно будет вот так:
CODE (html):
скопировать код в буфер обмена
  1. <img src="http://site.ru/image.php" alt="" />


Но это я развил вашу мысль с заголовками. Если я Вас неправильно понял, пишите, попробуем разобраться.

(Отредактировано автором: 03 Июля, 2013 - 09:01:01)

 
 Top
Heavenanvil
Отправлено: 03 Июля, 2013 - 09:35:07
Post Id


Частый гость


Покинул форум
Сообщений всего: 183
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




VenZell вроде оно так, но проблема в том, что значение переменной $char_id не известно странице image.php, она известна только для конкретной страницы, где я это вывожу.

Ранее пользователь вводит логин и пароль, создается страница с запросами в бд. Получается, что переменная $char_id существует только для этой страницы.
(Добавление)
Может как-нибудь сделать так, чтобы $char_id бралось из имени файла и дальнейшие операции с изображением выполнять уже от него, снова соединяясь с бд.

(Отредактировано автором: 03 Июля, 2013 - 09:37:39)

 
 Top
VenZell
Отправлено: 03 Июля, 2013 - 09:59:18
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




Heavenanvil, если до обеда (до 13:00) никто не поможет, постараюсь на пальцах объяснить, как это лучше сделать. $char_id указывал только для того, чтобы вы поняли, что есть что.
 
 Top
Heavenanvil
Отправлено: 03 Июля, 2013 - 10:20:59
Post Id


Частый гость


Покинул форум
Сообщений всего: 183
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




VenZell, у меня время уже 15:20 ))

Действительно, я немного не понял. Где и как использовать код рисования юзербара?
 
 Top
DelphinPRO
Отправлено: 03 Июля, 2013 - 10:34:20
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




CODE (html):
скопировать код в буфер обмена
  1. <img src="http://site.ru/image.php?user=DelphinPRO" alt="" />


и вы уже знаете, чей бар отобразить

элементарно, Ватсон ©


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Heavenanvil
Отправлено: 03 Июля, 2013 - 10:40:14
Post Id


Частый гость


Покинул форум
Сообщений всего: 183
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




Получается, через get запрос. Тоже вариант, а подробнее код можно?
 
 Top
VenZell
Отправлено: 03 Июля, 2013 - 11:13:51
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




Псевдокод, чтобы ты понял идею:
PHP:
скопировать код в буфер обмена
  1. $db = new PDO('mysql:host=localhost;dbname=test', 'test', 'test');
  2. $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  3. $command = $db->prepare("SELECT char_id FROM `table` WHERE user = :username");
  4. $command->bindParam(':username', $_GET['user'], PDO::PARAM_STR);
  5. $command->execute();
  6. $result_row = $command->fetch();
  7. $char_id = $result_row['char_id'];

(Отредактировано автором: 03 Июля, 2013 - 11:14:48)

 
 Top
Heavenanvil
Отправлено: 03 Июля, 2013 - 11:25:47
Post Id


Частый гость


Покинул форум
Сообщений всего: 183
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




VenZell, я так понимаю, это мы получили $char_id.

Но что-то не могу сообразить как это будет работать.

Думаю, DelphinPRO прав, надо через GET. А как, например?
 
 Top
VenZell
Отправлено: 03 Июля, 2013 - 11:31:37
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




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

(Отредактировано автором: 03 Июля, 2013 - 11:32:12)

 
 Top
Heavenanvil
Отправлено: 03 Июля, 2013 - 12:44:29
Post Id


Частый гость


Покинул форум
Сообщений всего: 183
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




VenZell, да. Зная имя, либо char_id можно получить всю необходимую информацию
 
 Top
DelphinPRO
Отправлено: 03 Июля, 2013 - 13:49:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




VenZell пишет:
для начала давайте выясним,можете ли вы получить имя картинки (юзербара), зная только имя пользователя?

не нужно цепляться к имени пользователя Улыбка

можно ведь и так:
CODE (html):
скопировать код в буфер обмена
  1. <img src="http://site.ru/image.php?char_id=1254" alt="" />


не заморачиайтесь, и жизнь станет проще Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Heavenanvil
Отправлено: 04 Июля, 2013 - 06:17:26
Post Id


Частый гость


Покинул форум
Сообщений всего: 183
Дата рег-ции: Февр. 2013  


Помог: 0 раз(а)




DelphinPRO, да, так и сделал.
Спасибо большое за помощь тебе и VenZell.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB