Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Катринка не рисуется? Помогите.
 
 автор: ruler   (25.11.2007 в 15:05)   письмо автору
 
 

Вот скрипт который должен рисовать каритнку

<?php
Header
("Content-type: image/gif");
$rgb=0x1e81de;
$idest imagecreatetruecolor(3920);
$textcolor imagecolorallocate($idest255,255,255);
imagefill($idest00$rgb);
imagestring($idest394$text$textcolor);
imagegif($idest);
imagedestroy($idest);
?>

Может где то ошибка, он почему то не рисует картинку?
Подскажите где ошибка

   
 
 автор: Drago   (25.11.2007 в 15:12)   письмо автору
 
   для: ruler   (25.11.2007 в 15:05)
 

У меня все работает. Установлена ли у вас библиотека GD? И как вы вызываете скрипт?

   
 
 автор: Ruler   (25.11.2007 в 15:15)   письмо автору
 
   для: Drago   (25.11.2007 в 15:12)
 

Да установлена библиотека
Скрипт вызвывается следующим способом

<?
for ($x=0$x<3$x++) $x=$x.mt_rand(1,9);
echo 
"<img src=pic.php?code=".$x.">";
?>

где $x это код выводимый на данное изображение

   
 
 автор: Drago   (25.11.2007 в 15:25)   письмо автору
 
   для: Ruler   (25.11.2007 в 15:15)
 

Переменной $_GET['code'] у вас в скрипте нигде не видно. Вы его в таком же виде используете?

   
 
 автор: Ruler   (25.11.2007 в 15:25)   письмо автору
 
   для: Drago   (25.11.2007 в 15:25)
 

ага
Вот более полное код


<form action=add.php method=post>
Имя: <input type=text><br>
Текст: <input type=text><br>
Введите цифры на картинке: <input type=text size=3 name=intextimg> 

<?php
$ip 
$_SERVER['REMOTE_ADDR'];
for (
$x=0$x<3$x++) $x=$x.mt_rand(1,9);
echo 
"<img src=pic.php?text=".$x.">";
// тут подключается база данный
Затем вставляется запись
mysql_query
("INSERT INTO test VALUES('".$ip."', '".$x."')");
?>
<input type=submit>
</form>

   
 
 автор: Drago   (25.11.2007 в 15:32)   письмо автору
 
   для: Ruler   (25.11.2007 в 15:25)
 

Я имел ввиду этот скрипт

<?php 
Header
("Content-type: image/gif"); 
$rgb=0x1e81de
$idest imagecreatetruecolor(3920); 
$textcolor imagecolorallocate($idest255,255,255); 
imagefill($idest00$rgb); 
imagestring($idest394$text$textcolor); 
imagegif($idest); 
imagedestroy($idest); 
?>

попробуйте запустить его напрямую. Например: localhost/pic.php

И что у вас не рисуется? Сама картинка или только текст на ней?

   
 
 автор: ddhvvn   (25.11.2007 в 15:26)   письмо автору
 
   для: Ruler   (25.11.2007 в 15:15)
 

Ошибок вообще никаких не выдает?

   
 
 автор: ddhvvn   (25.11.2007 в 15:28)   письмо автору
 
   для: ddhvvn   (25.11.2007 в 15:26)
 

Если в таком же, то скрипт по-любому выдает предупреждение и от этого картинка не отображается!

   
 
 автор: Ruler   (25.11.2007 в 15:31)   письмо автору
 
   для: ddhvvn   (25.11.2007 в 15:28)
 

вот выше, я дал более полный код
Не много ошибся

echo "<img src=pic.php?text=".$x.">";

а не

echo "<img src=pic.php?code=".$x.">";

   
 
 автор: Ruler   (25.11.2007 в 15:36)   письмо автору
 
   для: Ruler   (25.11.2007 в 15:31)
 

Выдает ошибки следующие файл pic.php

Notice: Undefined variable: text in z:\home\phpgolovol\www\test\pic.php on line 7
Warning: imagegif(): Unable to open temporary file in z:\home\phpgolovol\www\test\pic.php on line 8

   
 
 автор: Drago   (25.11.2007 в 15:38)   письмо автору
 
   для: Ruler   (25.11.2007 в 15:36)
 

Добавьте в начало скрипта, следующую строку

<?
$text 
$_GET['text'] ? $_GET['text'] : '';
?>

   
 
 автор: Ruler   (25.11.2007 в 15:46)   письмо автору
 
   для: Drago   (25.11.2007 в 15:38)
 

Я так понимаю что этот скрипт нужно засунуть в index.php
Но почему то не че не работает

   
 
 автор: Drago   (25.11.2007 в 15:48)   письмо автору
 
   для: Ruler   (25.11.2007 в 15:46)
 

Нет, не в index.php, а в pic.php

<?php  
Header
("Content-type: image/gif");  
$text $_GET['text'] ? $_GET['text'] : '';
$rgb=0x1e81de;  
$idest imagecreatetruecolor(3920);  
$textcolor imagecolorallocate($idest255,255,255);  
imagefill($idest00$rgb);  
imagestring($idest394$text$textcolor);  
imagegif($idest);  
imagedestroy($idest);  
?>

   
 
 автор: Ruler   (25.11.2007 в 15:49)   письмо автору
 
   для: Drago   (25.11.2007 в 15:48)
 

Так я тоже уже попробывал, но не катит

   
 
 автор: Drago   (25.11.2007 в 15:52)   письмо автору
 
   для: Ruler   (25.11.2007 в 15:49)
 

Те же ошибки?

   
 
 автор: Ruler   (25.11.2007 в 15:55)   письмо автору
 
   для: Drago   (25.11.2007 в 15:52)
 

Да те же ошибки, но я что не совсем понимая зачем

$text = $_GET['text'] ? $_GET['text'] : ''

мы же выводим изображение не на pic.php
А на index.php с формай

   
 
 автор: Drago   (25.11.2007 в 16:02)   письмо автору
 
   для: Ruler   (25.11.2007 в 15:55)
 

Файлу pic.php вы передаете GET параметр text. При выключеной опции register_globals, PHP не создает локальные переменные глобальных массивов. Т.е. переменная $text у вас будет неопределена. Отсюда и замечание

Notice: Undefined variable: text in z:\home\phpgolovol\www\test\pic.php on line 7


А вот предупреждение

Warning: imagegif(): Unable to open temporary file in z:\home\phpgolovol\www\test\pic.php on line 8

говорит что-то о недоступности к временному файлу созданному функцией imagegif().

Попробуйте добавить ей второй параметр, чтобы сохранить файл на диск. И посмотрите, действительно ли он сохраняется.

<?
imagegif
($idest'./image.gif');  
?>

   
 
 автор: Ruler   (25.11.2007 в 16:06)   письмо автору
 
   для: Drago   (25.11.2007 в 16:02)
 

Да сохраняет но ошибку

Notice: Undefined index: text in z:\home\phpgolovol\www\test\pic.php on line 3

рода все равно выводит

   
 
 автор: Drago   (25.11.2007 в 16:13)   письмо автору
 
   для: Ruler   (25.11.2007 в 16:06)
 

Тогда, попробуйте добавить еще такую строку в начало pic.php для подавления замечаний.


<?
error_reporting
(E_ALL & ~E_NOTICE);
?>

   
 
 автор: Ruler   (25.11.2007 в 16:17)   письмо автору
 
   для: Drago   (25.11.2007 в 16:13)
 

Добавил

<? 
error_reporting
(E_ALL & ~E_NOTICE); 
?> 

После того как мы добавили

$text = $_GET['text'] ? $_GET['text'] : ''; 

В базу данных стало записыватся не 3 цифры а 1 цифра

   
 
 автор: Drago   (25.11.2007 в 16:21)   письмо автору
 
   для: Ruler   (25.11.2007 в 16:17)
 

Лучше, придерживаться примерно такой структуры

<?php
error_reporting
(E_ALL & ~E_NOTICE);

$text $_GET['text'] ? $_GET['text'] : '';
$rgb=0x1e81de;
$idest imagecreatetruecolor(3920);
$textcolor imagecolorallocate($idest255,255,255);
imagefill($idest00$rgb);
imagestring($idest394$text$textcolor);

Header("Content-type: image/gif");
imagegif($idest);
imagedestroy($idest);
?>


Сама картинка у вас выводится? Текст на ней правильный?

   
 
 автор: Ruler   (25.11.2007 в 16:31)   письмо автору
 
   для: Drago   (25.11.2007 в 16:21)
 

Нет изображение не выводится.
Может попробует вставить на сервер этот код и проверить на ошибки?
Будет ли он у вас работать?

   
 
 автор: Drago   (25.11.2007 в 16:39)   письмо автору
 
   для: Ruler   (25.11.2007 в 16:31)
 

Как я и говорил, у меня все работает.
http://files.d-world.org/pic.php?text=123

текст скрипта в моем предыдущем сообщении

   
 
 автор: Ruler   (25.11.2007 в 16:44)   письмо автору
 
   для: Drago   (25.11.2007 в 16:39)
 

Если передавать таким образом pic.php?text=123 то и у меня все работает
Но картинка на index.php с формой не выодится если передовать цифры следующим образом

for ($x=0; $x<3; $x++) $x=$x.mt_rand(1,9);
echo "<img src=pic.php?text=".$x.">";

   
 
 автор: Ruler   (25.11.2007 в 16:49)   письмо автору
 
   для: Ruler   (25.11.2007 в 16:44)
 

Вобщем вот, как я уже говорил имеем следующие файлы index.php с кодом

<form action=add.php method=post>
Имя: <input type=text><br>
Текст: <input type=text><br>
Введите цифры на картинке: <input type=text size=3 name=intextimg> 

<?php
$ip 
$_SERVER['REMOTE_ADDR'];
for (
$x=0$x<3$x++) $x=$x.mt_rand(1,9);
echo 
"<img src=pic.php?text=".$x.">";
@
mysql_connect('localhost''login''pass') or die;
@
mysql_select_db('dbname') or die("Не удалось соединится с базой данных");
mysql_query("INSERT INTO test VALUES('".$ip."', '".$x."')");
?>
<input type=submit>
</form>


И pic.php с вашими поправками рисующий каритинку

<?php 
error_reporting
(E_ALL & ~E_NOTICE); 

$text $_GET['text'] ? $_GET['text'] : ''
$rgb=0x1e81de
$idest imagecreatetruecolor(3920); 
$textcolor imagecolorallocate($idest255,255,255); 
imagefill($idest00$rgb); 
imagestring($idest394$text$textcolor); 

Header("Content-type: image/gif"); 
imagegif($idest'./image.gif'); 
imagedestroy($idest); 
?> 


Попробуйте сами будет ли работать?

   
 
 автор: Drago   (25.11.2007 в 16:52)   письмо автору
 
   для: Ruler   (25.11.2007 в 16:44)
 

Опять таки, все работает. http://files.d-world.org/index.php

текст скрипта index.php ваше две строки.

Может у вас картинки в браузере отключены?

Добавлено: добавил и форму туда же.

   
 
 автор: Ruler   (25.11.2007 в 16:56)   письмо автору
 
   для: Drago   (25.11.2007 в 16:52)
 

Картинки не отключены, проверял.
Тогда я не зднаю что делать?
Да нет же и у вас не все работает правельно
Он выводит не 3 цифры как задумано а 1

   
 
 автор: Drago   (25.11.2007 в 17:06)   письмо автору
 
   для: Ruler   (25.11.2007 в 16:56)
 

Так у вас в цикле ошибка.
Исправьте на такой

<?
for ($i=0$i<3$i++) $x=$x.mt_rand(1,9);
?>


И я не совсем понимаю. У вас картинка не выводится вообще, либо выводится с неправильным текстом?

   
 
 автор: Ruler   (25.11.2007 в 17:12)   письмо автору
 
   для: Drago   (25.11.2007 в 17:06)
 

Исправил, тогда он пишет следующее
Notice: Undefined variable: x in z:\home\phpgolovol\www\test\index.php on line 8

Блин может у меня еще где-то ошибки?
Не выложите полностью свой скрипт, проверю будет ли работать у меня так как у вас.
Работа вашего скрипта и есть желаемый результат

   
 
 автор: Drago   (25.11.2007 в 17:17)   письмо автору
 
   для: Ruler   (25.11.2007 в 17:12)
 

Ну здесь опять, замечание о том, что не определена переменная $x.
Решается, либо с помощью, собственно, ее определения

<?
$x 
'';
?>


либо, подавления
<?
error_reporting
(E_ALL & ~E_NOTICE);
?>


Вот весь скрипт

<?
error_reporting
(E_ALL & ~E_NOTICE);
?>
<form action=add.php method=post>
Имя: <input type=text><br>
Текст: <input type=text><br>
Введите цифры на картинке: <input type=text size=3 name=intextimg>

<?php
$ip 
$_SERVER['REMOTE_ADDR'];
$x '';
for (
$i=0$i<3$i++) $x=$x.mt_rand(1,9);
echo 
"<img src=pic.php?text=".$x.">";
@
mysql_connect('localhost''login''pass') or die;
@
mysql_select_db('dbname') or die("Не удалось соединится с базой данных");
mysql_query("INSERT INTO test VALUES('".$ip."', '".$x."')");
?>
<input type=submit>
</form>

   
 
 автор: Ruler   (25.11.2007 в 17:24)   письмо автору
 
   для: Drago   (25.11.2007 в 17:17)
 

Drago а не мог бы ты еще выкинуть скрипт картинки?

   
 
 автор: Drago   (25.11.2007 в 17:27)   письмо автору
 
   для: Ruler   (25.11.2007 в 17:24)
 

Там все по-прежнему

<?php
error_reporting
(E_ALL & ~E_NOTICE);

$text $_GET['text'] ? $_GET['text'] : '';
$rgb=0x1e81de;
$idest imagecreatetruecolor(3920);
$textcolor imagecolorallocate($idest255,255,255);
imagefill($idest00$rgb);
imagestring($idest394$text$textcolor);

Header("Content-type: image/gif");
imagegif($idest);
imagedestroy($idest);
?>

   
 
 автор: sim5   (25.11.2007 в 17:17)   письмо автору
 
   для: Ruler   (25.11.2007 в 16:56)
 


<?
$text 
'';
for (
$x=0$x<3$x++) $text .= mt_rand(1,9);
$rgb=0x1e81de;
$idest imagecreatetruecolor(3920);
$textcolor imagecolorallocate($idest255,255,255);  
imagefill($idest00$rgb); 
imagestring($idest394$text$textcolor);
Header("Content-type: image/gif"); 
imagegif($idest); 
imagedestroy($idest);
?>

   
 
 автор: Ruler   (25.11.2007 в 17:32)   письмо автору
 
   для: sim5   (25.11.2007 в 17:17)
 

Блин все равно не рисует, а pic.php выдает ошибку

Warning: imagegif(): Unable to open temporary file in z:\home\phpgolovol\www\test\pic.php on line 10

   
 
 автор: Drago   (25.11.2007 в 17:41)   письмо автору
 
   для: Ruler   (25.11.2007 в 17:32)
 

Вот, посмотрите тему по ссылке.
http://softtime.ru/forum/read.php?id_forum=1&id_theme=31507

   
 
 автор: Ruler   (25.11.2007 в 17:48)   письмо автору
 
   для: Drago   (25.11.2007 в 17:41)
 

Drago
Спасибо тебе огромное за помощь измени на ipeg и правду заработало.
Ну и нудный наверно я.

   
 
 автор: Ruler   (25.11.2007 в 18:01)   письмо автору
 
   для: Ruler   (25.11.2007 в 17:48)
 

А не в курсе как сделать чтобы и гифки рисовались, вот странно png и ipeg рисуются а gif не хочет.
Да впринципе это уже не столь важно, а все таки интересно.

   
 
 автор: Ruler   (25.11.2007 в 19:40)   письмо автору
 
   для: Ruler   (25.11.2007 в 18:01)
 

Проблема за проблемой, а как добится чтобы и число в базе данных обновлялось а не только на картинке.
При нажатии F5 (обновить) число на картинке меняется, а в базе данных остается прежним

   
 
 автор: Drago   (25.11.2007 в 20:09)   письмо автору
 
   для: Ruler   (25.11.2007 в 19:40)
 

>А не в курсе как сделать чтобы и гифки рисовались, вот странно png и ipeg рисуются а gif не хочет.
Для начала, хоть это и мало вероятно (но проверить не помешает), проследуйте указаюнию Хеопса, в выше указанной теме:

В разделе Environment отчёта phpinfo() посмотрите значение системной переменной TEMP и TMP - такая директория существует?

И там же, в смысле в phpinfo(), посмотрите версию вашей библиотеки GD. Поддержка формата GIF, была убрана из версии 1.6 и вновь добавлена в версии 2.


>Проблема за проблемой, а как добится чтобы и число в базе данных обновлялось а не только на картинке.
>При нажатии F5 (обновить) число на картинке меняется, а в базе данных остается прежним

Сейчас, у вас при обновлении страницы, в базу должна занаситься новая запись, в которой будут ip и число (исходя из приведенного вами кода).
Для того, чтобы обновить какую либо запись, следует использовать оператор UPDATE вместо INSERT.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования