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.SU

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


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

> Без описания
toropss
Отправлено: 09 Сентября, 2009 - 23:53:43
Post Id


Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Март 2009  


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




Здравствуйте. Скачал готовый скрипт капчи. Делаю так:
Фаил img.php:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. error_reporting(E_ALL & ~E_NOTICE);
  4.   $width = 150;
  5.   $height = 50;
  6.   $sign = 5;
  7.   $code = "";
  8.   $letters = array('a','b','c','d','e','f',
  9.                    'g','h','j','k','m','n',
  10.                    'p','q','r','s','t','u',
  11.                    'v','w','x','y','z','2',
  12.                    '3','4','5','6','7','8','9');
  13.   $figures = array('50','70','90','110',
  14.                    '130','150','170','190','210');
  15.   $img = imagecreatetruecolor($width, $height);
  16.   $fon = imagecolorallocate($img, 255, 255, 255);
  17.   imagefill($img, 0, 0, $fon);
  18.   for($j=0; $j<$width; $j++)
  19.   {
  20.     for($i=0; $i<($height*$width)/1000; $i++)
  21.     {
  22.           $color = imagecolorallocatealpha(
  23.                         $img,
  24.                         $figures[rand(0,count($figures)-1)],
  25.                         $figures[rand(0,count($figures)-1)],
  26.                         $figures[rand(0,count($figures)-1)],
  27.                     rand(10,30));
  28.       imagesetpixel($img,
  29.                     rand(0,$width),
  30.                     rand(0,$height),
  31.                     $color);
  32.     }
  33.   }
  34.  
  35.   for($i=0; $i<$sign; $i++)
  36.   {
  37.     $h = 1;
  38.     $color = imagecolorallocatealpha(
  39.                     $img,
  40.                     $figures[rand(0,count($figures)-1)],
  41.                     $figures[rand(0,count($figures)-1)],
  42.                     $figures[rand(0,count($figures)-1)],
  43.                     rand(10,30));
  44.     $letter = $letters[rand(0,sizeof($letters)-1)];
  45.     if(empty($x)) $x = $width*0.08;
  46.     else $x = $x + ($width*0.8)/$sign+rand(0,$width*0.01);
  47.     if($h == rand(1,2)) $y = (($height*1)/4) + rand(0,$height*0.1);
  48.     else $y = (($height*1)/4) - rand(0,$height*0.1);
  49.     $code .= $letter;
  50.     if($h == rand(0,1)) $letter = strtoupper($letter);
  51.     imagestring($img, 6 ,$x, $y, $letter, $color);
  52.   }
  53.   $_SESSION['code'] = $code;
  54.   header ("Content-type: image/jpeg");
  55.   imagejpeg($img);
  56. ?>
  57.  


Фаил с формой:

PHP:
скопировать код в буфер обмена
  1.  
  2. echo "</br><form name='comens' method='post' action='comens.php'>
  3. <p><input name='name_com' type='text' value='Ваше имя'></p>
  4. <p><textarea name='text_com' cols='70' rows='5'>Комментарий</textarea></p>";
  5.  echo "<center><p><img src='img.php' alt='Введите защитный код'></p>
  6. <p><input type='text' name='code' value ='Введите код'></p>";
  7.  echo "<p><input type='image' name='Submit' src='themes/img/cnop.jpg' alt='Отправить'></center></p>
  8. </form>";
  9.  


Обработчик:

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. error_reporting(E_ALL & ~E_NOTICE);
  4.  
  5. if(isset($_POST['code']) && isset($_SESSION['code'])){
  6. if(strtolower($_POST['code']) == $_SESSION['code']){
  7.           echo '<p>Защитный код верен!</p>';}
  8.  
  9. else {
  10.           echo '<p>Неверный защитный код!<p>';}
  11. } else {echo "<p>Код не веден!</p>";}
  12. ?>
  13.  


Вожу код с картинки пишет Неверный защитный код. Если я правильно понимаю то что та сессиям не то. Не подскажете?
 
 Top
Champion Супермодератор
Отправлено: 10 Сентября, 2009 - 08:58:19
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




echo '<p>Неверный защитный код!<p>'; и там же var_dump($_SESSION)
 
 Top
Nikola
Отправлено: 10 Сентября, 2009 - 09:10:37
Post Id



Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Авг. 2009  
Откуда: Одесса, Украина


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




Посмотрите файл from_example.php , там введенные данные сравниваются с $_SESSION['captcha_keystring'] т.е. в этом параметре хранится переменная, если конечно Вы не изменяли код в самом капча.

(Отредактировано автором: 10 Сентября, 2009 - 09:14:31)

 
 Top
toropss
Отправлено: 10 Сентября, 2009 - 09:45:54
Post Id


Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Март 2009  


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




Извините, но я не совсем пойму. Хранится переменная а не само значение переменой что ли?
 
 Top
Champion Супермодератор
Отправлено: 10 Сентября, 2009 - 09:57:48
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Nikola пишет:
там введенные данные сравниваются с $_SESSION['captcha_keystring']
Где ты это увидел?

toropss, хранится занчение. Сделй var_dump сесси, скажи что увидел.
А еще http://phpfaq[dot]ru/debug
 
 Top
toropss
Отправлено: 10 Сентября, 2009 - 14:58:08
Post Id


Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Март 2009  


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




Выводит такое string(5) "b5u3n" в кавычках эта код с картинки
 
 Top
Champion Супермодератор
Отправлено: 10 Сентября, 2009 - 15:07:56
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




а var_dump($_POST['code']) ?
(Добавление)
точнее даже var_dump(strtolower($_POST['code'])).
и var_dump(strtolower($_POST['code']) == $_SESSION['code'])
 
 Top
toropss
Отправлено: 10 Сентября, 2009 - 15:19:44
Post Id


Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Март 2009  


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




var_dump(strtolower($_POST['code'])) Выводит string(5) "zzk5j" тобиш по идеи все правильно
А вот var_dump(strtolower($_POST['code']) == $_SESSION['code']) выводит такое bool(false)
Мда интересно
 
 Top
Champion Супермодератор
Отправлено: 10 Сентября, 2009 - 15:23:34
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




trim ?
 
 Top
toropss
Отправлено: 10 Сентября, 2009 - 15:34:40
Post Id


Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Март 2009  


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




Не все так же. Блин может кто подскажет где можно взять рабочий скрипт капчи? Хотя очень интересна почему этот не работает
 
 Top
JustUserR
Отправлено: 10 Сентября, 2009 - 15:40:20
Post Id



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


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


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




toropss Да куча сайтов с готовыми PHP-скриптами - http://www[dot]vanta[dot]ru/ http://www[dot]hotscripts[dot]com/ да и наконец http://www.phpclasses[dot]org/ хоть и не готовые PHP-скрипты но готовые классы для многих задач


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Nikola
Отправлено: 10 Сентября, 2009 - 16:13:32
Post Id



Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Авг. 2009  
Откуда: Одесса, Украина


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




Champion пишет:
Где ты это увидел?

Файл form_example.php в пакете kcaptcha
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. ?>
  3. <form action="" method="post">
  4. <p>Enter text shown below:</p>
  5. <p><img src="./?<?PHP echo session_name()?>=<?PHP echo session_id()?>"></p>
  6. <p><input type="text" name="keystring"></p>
  7. <p><input type="submit" value="Check"></p>
  8. </form>
  9. <?PHP
  10. if(count($_POST)>0){
  11.         if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] == $_POST['keystring']){
  12.                 echo "Correct";
  13.         }else{
  14.                 echo "Wrong";
  15.         }
  16. }
  17. unset($_SESSION['captcha_keystring']);
  18. ?>

Выкладываю весь пакет.
Скачать файл: kcaptcha.rar
Скачан раз: 128
 
 Top
toropss
Отправлено: 10 Сентября, 2009 - 16:19:00
Post Id


Гость


Покинул форум
Сообщений всего: 85
Дата рег-ции: Март 2009  


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




JustUserR пишет:
JustUserR
За ссылки спасибо. Посмотрел прям очень хорошие сайты. Да и всем спасибо. Ну работать она чета не хочет.
 
 Top
Nikola
Отправлено: 10 Сентября, 2009 - 16:22:14
Post Id



Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Авг. 2009  
Откуда: Одесса, Украина


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




toropss пишет:
Извините, но я не совсем пойму. Хранится переменная а не само значение переменой что ли?
Прошу прощения, я еще полностью не проснулся на тот момент, поэтому так криво изъяснялся Улыбка Наверное разница в версиях и в разных версиях и переменные иначе обзываются: $_SESSION['captcha_keystring'] - в моем случаи и $_SESSION['code'] -в Вашем. Скачайте мой архив, он точно рабочий.
 
 Top
Champion Супермодератор
Отправлено: 10 Сентября, 2009 - 16:23:01
Post Id



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


Покинул форум
Сообщений всего: 4350
Дата рег-ции: Авг. 2008  
Откуда: Москва


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




Nikola пишет:
Файл form_example.php в пакете kcaptcha
А у автора где?
Кстати, toropss, попробуй тогда kcaptcha попробовать, раз её тут даже выложили.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB