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

Форум PHP

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

 

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

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

тема: GD обработка изображений
 
 автор: nikita2206   (01.11.2008 в 11:12)   письмо автору
694.5 Кб
 
 

народ, проблема такова:
мне с помощью gd естественно, надо сделать капчу на сайте, все получилос, капча появляется в нужном месте, но в самом начале страницы появляется много случайных символов.

З.Ы. в прикреплении скрин

<?


$img = imagecreatefrompng("img/img.png");
$text1 = rand(0, 9);
$text2 = rand(0, 9);
$text3 = rand(0, 9);
$text4 = rand(0, 9);
$text5 = rand(0, 9);
$text = $text1.$text2.$text3.$text4.$text5;
$md5capture = md5($text);
setcookie("captcha", $md5capture);

define ("YDEST", 1);
define ("YSRC", 0);
define ("WIDTH", 20);
define ("HEIGHT", 33);
define ("IMAGE_TXT", "img/captch.png");
$img_txt = imagecreatefrompng(IMAGE_TXT);
$c = 1;
$xdest = 0;
while($c < 6){

if($c == 1){
$xsrc = $text1*20;
}elseif($c == 2){
$xsrc = $text2*20;
}elseif($c == 3){
$xsrc = $text3*20;
}elseif($c == 4){
$xsrc = $text4*20;
}elseif($c == 5){
$xsrc = $text5*20;
}

imagecopy($img, $img_txt, $xdest, YDEST, $xsrc, YSRC, WIDTH, HEIGHT);
$c++;
$xdest = $xdest + 20;
}
imagepng($img);
imagedestroy($img);

?>

  Ответить  
 
 автор: sim5   (01.11.2008 в 11:28)   письмо автору
 
   для: nikita2206   (01.11.2008 в 11:12)
 

У вас передается заголовок перед выводом ихображения (то есть уже был вывод в браузер) вот поэтому и текст вместо картинки.

  Ответить  
 
 автор: nikita2206   (01.11.2008 в 11:34)   письмо автору
 
   для: sim5   (01.11.2008 в 11:28)
 

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

  Ответить  
 
 автор: sim5   (01.11.2008 в 12:05)   письмо автору
 
   для: nikita2206   (01.11.2008 в 11:34)
 

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

  Ответить  
 
 автор: nikita2206   (01.11.2008 в 12:39)   письмо автору
 
   для: sim5   (01.11.2008 в 12:05)
 

как же тогда делают капчи? дело в том что если я в каптче обьявлю хедер картинкой, то в итоге на странице кроме картинки ничего невыведется

  Ответить  
 
 автор: sim5   (01.11.2008 в 12:55)   письмо автору
 
   для: nikita2206   (01.11.2008 в 12:39)
 

У вас должен быть запрос к отдельному скрипту, который и выводит каптчу в браузер и ничего кроме нее. Либо нужно воспользоваться буферизацией вывода.

  Ответить  
 
 автор: nikita2206   (01.11.2008 в 13:21)   письмо автору
 
   для: sim5   (01.11.2008 в 12:55)
 

Так и есть, captcha.php выводит только картинку, но индекс обращясь к каптчи должен и текст и картинку вывести. Что такое буферизация вывода? Кэширование чтоли?

  Ответить  
 
 автор: sim5   (01.11.2008 в 13:22)   письмо автору
 
   для: nikita2206   (01.11.2008 в 13:21)
 

Не понял. Какой индекс? А текст (код секретный) пишется прямо на изображении. Или вы о каком тексте?

PS. Кстати, приведенный вами код, отдельно выполненный, будет работать без проблем, правда на каптчу это совсем не похоже, если только только на изображении, которое у вас лежит в папке, не содержится самого "секретного" кода. Но это уже не каптча, а бог знает весть что. Зачем такие премудрости?

  Ответить  
 
 автор: nikita2206   (01.11.2008 в 13:36)   письмо автору
 
   для: sim5   (01.11.2008 в 13:22)
 

Индекс - index.php{
...
<img src="captcha.php">
...
}
Текст всмысле, хтмл код самой страницы, посмотри пожалста скрин, я обьяснять плохо умею.

  Ответить  
 
 автор: sim5   (01.11.2008 в 13:39)   письмо автору
 
   для: nikita2206   (01.11.2008 в 13:36)
 

Прочтите выше. Зайдите в раздел загрузок SoftTime, там есть готовый код каптчи. Скачайте его и изучите.

  Ответить  
 
 автор: Valick   (01.11.2008 в 13:38)   письмо автору
 
   для: sim5   (01.11.2008 в 13:22)
 

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

  Ответить  
 
 автор: sim5   (01.11.2008 в 13:39)   письмо автору
 
   для: Valick   (01.11.2008 в 13:38)
 

Это я знаю, для чего он. Вы посмотрите сам код автора.)

PS. Выести в файл... а пользователь закроет браузер, тогда?

  Ответить  
 
 автор: nikita2206   (01.11.2008 в 13:45)   письмо автору
 
   для: sim5   (01.11.2008 в 13:39)
 

мне пока неважно что он прост, сейчас главное отладка, а потом можно и волновые искажения

  Ответить  
 
 автор: sim5   (01.11.2008 в 13:47)   письмо автору
 
   для: nikita2206   (01.11.2008 в 13:45)
 

Да и без искажения не понять - где и как вы наносите текст на изображение?

  Ответить  
 
 автор: nikita2206   (01.11.2008 в 13:53)   письмо автору
 
   для: sim5   (01.11.2008 в 13:47)
 

в качастве текста используется картинка с набором символов.
не подскажеш, что делает
RewriteRule images/scode.gif /index.php
в .htaccess

  Ответить  
 
 автор: sim5   (01.11.2008 в 13:56)   письмо автору
 
   для: nikita2206   (01.11.2008 в 13:53)
 

Менять src вашего изображения на этот адрес, только уж больно он у вас вычурный, а другими словами глупый. В раздел Апач, смотреть там работу с примерами.
Что касается каптчи, то это геморрой что вы сделали. Есть функции которыми вы можете делать надписи на изображении, и проще, и код будет легче.

  Ответить  
Rambler's Top100
вверх

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