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

Форум PHP

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Вывод динамической графики (PHP) совместно с текстом

Сообщения:  [1-10]   [11-12] 

 
 автор: alex123434   (08.02.2008 в 21:31)   письмо автору
 
   для: Staglu   (08.02.2008 в 21:23)
 

Все, спасибо! Толко <img src=\"captcha.php\" border=\"1\"> этоже не PHP косые черты не надо. Но это принимаю как опечатку. Еще обошолся без ссесий на основе приведенного мною выше скрипта. Огромное спасибо все работает.

   
 
 автор: Staglu   (08.02.2008 в 21:24)   письмо автору
 
   для: alex123434   (08.02.2008 в 21:19)
 

Пардон я тут написал не подумав, текста и не будет!

   
 
 автор: Staglu   (08.02.2008 в 21:23)   письмо автору
 
   для: alex123434   (08.02.2008 в 21:15)
 

Просто можно отдельно PHP-скрипт создать, который генерирует картинку к примеру capcha.php значение которое наноситься на картинку сохранить в сессию, затем просто в форму с регистрацией добавить тег <img src=\"captcha.php\">. Вот пример:

captcha.php

session_start();

$image_x = \"100\";
$image_y = \"30\";
$shum = \"4\";
$min_fon_size = \"20\";
$ugol_max = \"30\";
$text_len = \"4\";
$line_len = \"20\";
$pat_font = \"../font/verdana.ttf\";

//Создаем изоброжение
$img = imagecreatetruecolor($image_x , $image_y);
//Установливаем цвет фона
$fon = imagecolorallocate($img, 255,255,255);
//Заливаем картинку цветом
imagefill($img, 0, 0, $fon);

for($i=0; $i < $text_len; $i++)
{
  srand((float) microtime()*1000000);
  $text = rand(0,9);
  $num = $num.$text;

  $ugol = rand(360 - $ugol_max,360 + $ugol_max);
  $size = rand($min_fon_size, $image_y/2);
  $color_rand[$i] = imagecolorallocate($img, rand(0,250),rand(0,250),rand(0,250));

  $y = rand(($image_y-$size)/4+$size, ($image_y-$size)/2+$size);
  $x = rand(($image_x/$text_len-$size)/2, $image_x/$text_len-$size)+$i*$image_x/$text_len;

  imagettftext($img, $size, $ugol, $x, $y, $color_rand[$i], $pat_font, $text);

}


for($i = 0; $i < round($image_x*$image_y*$shum/100)/2; $i++)
{
  srand((float) microtime()*1000000);
  $color = rand(0,count($color_rand));
  imagesetpixel($img,rand(0, $image_x), rand(0, $image_y), $color_rand[$color]);
  imagesetpixel($img,rand(0, $image_x), rand(0, $image_y), $fon);
}


for($i = 0; $i < round($line_len/2); $i++)
{
  srand((float) microtime()*1000000);
  $color = rand(0,count($color_rand));

  if(rand(0,1) == 1)
  {
   imageline($img,rand(0,$image_x),rand(0,$image_y),rand(0,$image_x),rand(0,$image_y),$color_rand[$color]);
   imagedashedline($img,rand(0,$image_x),rand(0,$image_y),rand(0,$image_x),rand(0,$image_y), $fon);
  }
  else
  {
   imageline($img,rand(0,$image_x),rand(0,$image_y),rand(0,$image_x),rand(0,$image_y),$fon);
   imagedashedline($img,rand(0,$image_x),rand(0,$image_y),rand(0,$image_x),rand(0,$image_y), $color_rand[$color]);
  }

}
$_SESSION[\"captcha\"] = $num;

if($img)
{
 header(\"Content-type: \".image_type_to_mime_type(IMAGETYPE_PNG));
 imagepng($img);
}


и вот форма:


<table width=100% border=0>
   <tr>
    <td colspan=2><font size=5 color=66666><b>Авторизация</b></font></td>
   </tr>

   <tr>
     <td colspan=2><hr></td>
   </tr>

   <tr>
     <td><font size=2 color=66666><b>Логин</b></font></td>
     <td><input size=\"25\" name=\"login\" type=\"text\" value=\"\"></td>
   </tr>

   <tr>
     <td><font size=2 color=66666><b>Пароль</b></font></td>
     <td><input size=\"25\" name=\"pasword\" type=\"text\" value=\"\"></td>
   </tr>

   <tr>
     <td colspan=2><br /></td>
   </tr>

   <tr>
     <td>
      <font size=2 color=66666><b>Введите число:</b></font><br />
     <img src=\"captcha.php\" border=\"1\">
     </td>
     <td><br /><input size=5 name=\"captcha\" type=\"text\" value=\"\"></td>
   </tr>

   <tr>
     <td colspan=2 align=right><input type=\"submit\" value=\"Войти\"></td>
   </tr>
 </table>


Выше я представил код авторизации (не регистрации), но я думаю Вы поняли.

Надеюся в этот раз Я бред не написал!!

   
 
 автор: alex123434   (08.02.2008 в 21:19)   письмо автору
 
   для: Staglu   (08.02.2008 в 21:08)
 

Да рисунок стал выводиться не ввиде кряков, но текста нет?

   
 
 автор: alex123434   (08.02.2008 в 21:15)   письмо автору
 
   для: Staglu   (08.02.2008 в 20:54)
 

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

   
 
 автор: Staglu   (08.02.2008 в 21:11)   письмо автору
 
   для: Unkind   (08.02.2008 в 21:10)
 

Пардон...

   
 
 автор: Unkind   (08.02.2008 в 21:10)   письмо автору
 
   для: Staglu   (08.02.2008 в 21:08)
 

Staglu, сначала документ image/png, а затем text/html? Ну-ну.

   
 
 автор: Staglu   (08.02.2008 в 21:08)   письмо автору
 
   для: alex123434   (08.02.2008 в 21:04)
 

Попробуйте так:
// Получаем строку, которую нам передали в параметрах
$string="Привет";
// Загружаем рисунок фона с диска
$im = imageCreateFromPng ("1.png") ;
// Создаем в палитре новый цвет — оранжевый
$orange = imageColorAllocate ($im, 10, 200, 40);
// Вычисляем размеры текста, который будет выведен
$рх = (imageSx($im)-8.7*strlen($string) ) /2;
// Выводим строку поверх того, что было в загруженном изображении
imageString ($im, 11, $рх, 2, $string, $orange) ;
// Сообщаем о том, что далее следует рисунок PNG
Header ( "Content-type : image/png" ) ;
// Теперь — самое главное: отправляем данные картинки в
// стандартный выходной поток, т. е. в браузер
imagePng ($im) ;

// В конце освобождаем память , занятую картинкой
imageDestroy ($im) ;
Header ( "Content-type : text/html" ) ;
echo "Привет";

   
 
 автор: alex123434   (08.02.2008 в 21:04)   письмо автору
 
   для: dimonich2004   (08.02.2008 в 20:34)
 

// Получаем строку, которую нам передали в параметрах
$string="Привет";
// Загружаем рисунок фона с диска
$im = imageCreateFromPng ("1.png") ;
// Создаем в палитре новый цвет — оранжевый
$orange = imageColorAllocate ($im, 10, 200, 40);
// Вычисляем размеры текста, который будет выведен
$рх = (imageSx($im)-8.7*strlen($string) ) /2;
// Выводим строку поверх того, что было в загруженном изображении
imageString ($im, 11, $рх, 2, $string, $orange) ;
// Сообщаем о том, что далее следует рисунок PNG
Header ( "Content-type : image/png" ) ;
// Теперь — самое главное: отправляем данные картинки в
// стандартный выходной поток, т. е. в браузер
imagePng ($im) ;

// В конце освобождаем память , занятую картинкой
imageDestroy ($im) ;
echo "Привет";

   
 
 автор: Staglu   (08.02.2008 в 20:54)   письмо автору
 
   для: alex123434   (08.02.2008 в 20:32)
 

Скорей всего перед отправкой рисунка вы отпровляете заголовок наверное типо такого:

<?php
header
(\"Content-type: \".image_type_to_mime_type(IMAGETYPE_PNG));
 imagepng(
$img);
?>

Если вы до отправки заголовка выведети текст (пример):

<?php
echo 'Привет МИР!!!';
header(\"Content-type: \".image_type_to_mime_type(IMAGETYPE_PNG));
 imagepng(
$img);
?>

То у вас получиться кракозябры.

Вообще опишите поточнее, какая у Вас картинка выводиться, создоется у вас она средствами PHP и.т.д, а то не очень понятно!

   

Сообщения:  [1-10]   [11-12] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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