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 :: Запара с captcha Помогите!)

 PHP.SU

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


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

> Описание: kcaptcha.php
fastattack
Отправлено: 12 Июня, 2011 - 18:38:57
Post Id


Новичок


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


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




Всем доброго время суток! Есть такая проблемма!

Решил прекрутить к своему сайтику капчу. Выбор пал на captcha.ru.
Пришлось повозится немного но вскоре весь код отладил и вроде всё без ошибок. Но после проверки выявилось что данные не попадают в БД.
Вот собственно и сам код. Где напортачил то подскажите люди добрые)

основной фаил:

PHP:
скопировать код в буфер обмена
  1. <?
  2. include ("block/config.php");
  3. if (isset($_GET['id'])) {$id = $_GET['id']; }
  4. if (!isset($id)) {$id = 1;}
  5.  
  6. if (!preg_match("|^[\d]+$|", $id)) {
  7. exit ("<p>Неверный формат запроса! Проверьте URL!");
  8. }
  9.  
  10. $result = mysql_query("SELECT * FROM data WHERE id='$id'",$d_base);
  11.  
  12. if (!$result)
  13. {
  14. echo "<p>Запрос не прошел. Напишите об этом администратору. <br> <strong>Код ошибки:</strong></p>";
  15. }
  16.  
  17. if (mysql_num_rows($result) > 0)
  18.  
  19. {
  20. $myrow = mysql_fetch_array($result);
  21. $new_view = $myrow["view"] + 1;
  22. $update = mysql_query("UPDATE data SET view='$new_view' WHERE id='$id'",$d_base);
  23.  
  24.  
  25. }
  26.  
  27. else
  28. {
  29. echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
  30. exit();
  31. }
  32.  
  33. ?>
  34. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  35. <html xmlns="http://www.w3.org/1999/xhtml">
  36. <head>
  37. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  38. <meta name="description" content="<? echo $myrow["meta_d"]; ?>" />
  39. <meta name="keywords" content="<? echo $myrow["meta_k"]; ?>" />
  40. <link rel="stylesheet" type="text/css" href="css/template.css"/>
  41. <title><? echo $myrow["title"]; ?></title>
  42.   <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
  43. </head>
  44. <body>
  45. <table width="980" border="0" align="center" cellpadding="0" cellspacing="0">
  46.   <tr>
  47.     <td height="300" align="left" valign="top" class="hedshot">&nbsp;</td>
  48.   </tr>
  49.   <tr>
  50.     <td align="left" valign="top"><table width="100%" border="0" cellspacing="0" cellpadding="0">
  51.       <tr>
  52.         <? include ("block/menu.php"); ?>
  53.         </table></td>
  54.         <td class="centre_more">
  55.         <?
  56. printf ("<p class='post_title2'>%s</p><p class='post_add'>Автор: %s<br>Дата: %s</p><div id='conteyner_my_top'>%s</div><p class='post_my_view'>Просмотров: %s</p>",$myrow["title"],$myrow["author"],$myrow["date"],$myrow["text"],$myrow["view"]);
  57.  
  58. echo "<p class='post_comments'><br>Коментарии к этой заметке:</p>";
  59.  
  60. $result3 = mysql_query ("SELECT * FROM comments WHERE post='$id'",$d_base);
  61. if (mysql_num_rows($result3) > 0)
  62. {
  63. $myrow3 = mysql_fetch_array($result3);
  64. do
  65. {
  66. printf ("<div class='ramka_comm'><p class='post_com_obza'>Коментарий добавил(а): <strong>%s</strong> <br> Дата: <strong>%s</strong></p><p class='my_com-fon'>%s</p></div>",$myrow3 ['author'],$myrow3 ['date'],$myrow3 ['text']);
  67. }
  68. while ($myrow3 = mysql_fetch_array($result3));
  69.  
  70. }
  71.  
  72.  
  73. ?>
  74. <br><br><br>
  75. <p class='post_comments2'>Добавить ваш коментарий:</p>
  76. <form action="com_ment.php" method="post">
  77. <p><label class="autor_name">Ваше имя:</label><p><input name="author" type="text" size="30" maxlength="30" /></p></p>
  78. <p><label class='post_comments2'>Текст комментария: <br> <textarea name="text" cols="35" rows="4"></textarea></label></p>
  79. <p>Введите текст с картинки:</p>
  80. <p><img src="./captcha?<?PHP echo session_name()?>=<?PHP echo session_id()?>"></p>
  81. <p><input name="keystring" type="text"></p>
  82. <input name="id" type="hidden" value="<? echo $id ?>" />
  83. <p><input name="sub_com" type="submit" value="Комментировать"></p>
  84. </form>
  85.  
  86.         </td>
  87.       </tr>
  88.     </table></td>
  89.   </tr>
  90.   <? include ("block/footer.php"); ?>
  91. </body>
  92. </html>
  93.  


А вот и файл обработки:

PHP:
скопировать код в буфер обмена
  1. <? session_start(); ?>
  2. <link rel="stylesheet" type="text/css" href="css/template.css"/>
  3. <?PHP
  4. include ("block/config.php");
  5.  
  6. if (isset($_POST['author']))
  7. {
  8. $author = $_POST['author'];
  9. }
  10.  
  11. if (isset($_POST['text']))
  12. {
  13. $text = $_POST['text'];
  14. }
  15.  
  16. if (isset($_POST['keystring']))
  17. {
  18. $keystring = $_POST['keystring'];
  19. }
  20.  
  21. if (isset($_POST['sub_com']))
  22. {
  23. $sub_com = $_POST['sub_com'];
  24. }
  25.  
  26. if (isset($_POST['id']))
  27. {
  28. $id = $_POST['id'];
  29. }
  30.  
  31. if (isset($sub_com))
  32. {
  33. if (isset($author)) {trim($author);   }
  34. else {$author = "";}
  35.  
  36. if (isset($text)) {trim($text);   }
  37. else {$text = "";}
  38.  
  39. if (empty($author) or empty($text))
  40. {
  41. exit ("<p class='contentheading_my'>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br><br><input name='back' type='button' value='Вернутся назад' onclick='javascript:history.back()' onMouseOver='window.status='Back';return true'>");
  42. }
  43.  
  44. $author = stripslashes($author);
  45. $text = stripslashes($text);
  46. $author = htmlspecialchars($author);
  47. $text = htmlspecialchars($text);
  48. }
  49.  
  50. if(count($_POST)>0){
  51.         if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] === $_POST['keystring']){
  52.                 echo "<html><head>
  53. <meta http-equiv='Refresh' content='0; URL=view_post.php?id=$id'>
  54. </head></html>";
  55.         }else{
  56.                 echo "<p class='contentheading_my'>Вы ввели неправельный код с картинки. <br><br><input name='back' type='button' value='Вернутся назад' onclick='javascript:history.back()' onMouseOver='window.status='Back';return true'>";
  57.         }
  58. }
  59. unset($_SESSION['captcha_keystring']);
  60. ?>


З.Ы
Вроде все проверки проходит а в бд не попадают данные. Что за ***** непонимаю( Не понял

(Отредактировано автором: 12 Июня, 2011 - 18:41:18)

 
 Top
PATCH
Отправлено: 12 Июня, 2011 - 21:50:52
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




не попадают потому что нету запроса на добавление в бд)) лично я видел запрос на выроботку данных и на обновление столбца просмотров в бд) Курсы попова?)) че та скрипт знакомы)



PHP:
скопировать код в буфер обмена
  1. $result = mysql_query ("INSERT INTO comments (author,text) VALUES ('$author,'$text') WHERE post=".$id."");
  2. if ($result == 'true') {echo "<p>Ваш  коментарий добавлен!</p>";}


+ не дочет в php коде , вывод коментариев идет с датой а добавление у тебя без даты.

вот мой вариант



PHP:
скопировать код в буфер обмена
  1. $date = date("Y-m-d H:i"); //- год - месяц - день  Часы:минуты
  2.  
  3. $result = mysql_query ("INSERT INTO comments (author,text,date) VALUES ('$author,'$text','$date') WHERE post=".$id."");
  4. if ($result == 'true') {echo "<p>Ваш  коментарий добавлен!</p>";}


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

+ на будущее обрабатывай каждое поле вводимое пользователем функцией mysql_escape_string()
во избежании SQL инъекции



п.с надеюсь помог Улыбка

(Отредактировано автором: 12 Июня, 2011 - 22:31:26)

 
 Top
fastattack
Отправлено: 13 Июня, 2011 - 09:31:45
Post Id


Новичок


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


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




Всё заработало! Радость Огромное спасибо. И как я просмотрел подключение хз)

сделал так:
PHP:
скопировать код в буфер обмена
  1. $author = mysql_escape_string($author);
  2. $text = mysql_escape_string($text);
  3. $author = htmlspecialchars($author);
  4. $text = htmlspecialchars($text);
  5. }
  6.  
  7.  
  8. if(count($_POST)>0){
  9.         if(isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] === $_POST['keystring'])
  10.        
  11. {
  12. $date = date("Y-m-d H:i");
  13. $result = mysql_query ("INSERT INTO comments (post,author,text,date) VALUES ('$id','$author','$text','$date')",$d_base);
  14.  
  15.  
  16. echo "<html><head> <meta http-equiv='Refresh' content='0; URL=view_post.php?id=$id'> </head></html>";
  17.         }else{
  18.                 echo "<p class='contentheading_my'>Вы ввели неправельный код с картинки. <br><br><input name='back' type='button' value='Вернутся назад' onclick='javascript:history.back()' onMouseOver='window.status='Back';return true'>";
  19.         }
  20. }
  21. unset($_SESSION['captcha_keystring']);


Нормально?) Ниндзя

(Отредактировано автором: 13 Июня, 2011 - 10:04:40)

 
 Top
PATCH
Отправлено: 13 Июня, 2011 - 14:10:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




-- а эт зачем? типо проверка передаем ли мы вообще что либо? помойму тут выдаст ошибку) если и не выдаст то как то много лишних проверок и вызовов if

не дочеты в скрипте могу еще отметить session_start(); неужели тебе в кайф в каждом файле писать это? что бы сессия работала тебе буквально в каждом файле надо так прописать, я б лучшеб прописал бы его в начале block/config.php.
зачем CSS добавляеш в файл со сценарием? если ты выводиш просто ошибки без графических изменений?)

лишний код - плохой код

еще вопрос как ты реализовал captchу судя по твоему коду ты ее занёс в сессию. а зачем ее в сессию?) по курсам попова создается таблица с 3 столбцами ID img ref , имг ссылка на картинку реф где число с которым надо сравнивать введеное число пользователя) т.е запрос к бд на выборку из таблицы 3 столбца и сравнивание введеное число пользователя и данные с 3 таблицы.


PHP:
скопировать код в буфер обмена
  1.  include ("block/config.php"); // старт сессии заносим в конфиг файл
  2. // проверка существования переменных
  3. if (isset($_POST['author']) && isset($_POST['text']) && isset($_POST['keystring']) && isset($_POST['sub_com']) && isset($_POST['id']) && $_SESSION['captcha_keystring'])
  4. {// проверка на правильно ли введена кампатча
  5.         if($_SESSION['captcha_keystring'] == $_POST['keystring'])
  6.         {
  7.                 $author = $_POST['author'];
  8.                 $text = $_POST['text'];
  9.                 $keystring = $_POST['keystring'];
  10.                 $sub_com = $_POST['sub_com'];
  11.                 $id = $_POST['id'];
  12.  
  13.                 if (empty($author) or empty($text))
  14.                 {
  15.                 exit("<p class='contentheading_my'>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br><br><input name='back' type='button'           value='Вернутся назад' onclick='javascript:history.back()' onMouseOver='window.status='Back';return true'>");
  16.                 }
  17.  
  18.                         //делаем все различные проверки на вводимые данные пользователем
  19.                 $author = trim($author);
  20.                 $text = trim($text);
  21.                 $author = stripslashes($author);
  22.                 $text = stripslashes($text);
  23.                 $author = htmlspecialchars($author);
  24.                 $text = htmlspecialchars($text);
  25.                 $author = mysql_escape_string($author);
  26.                 $text = mysql_escape_string($text);
  27.        
  28.                 $date = date("Y-m-d H:i");
  29.                 $result = mysql_query ("INSERT INTO comments (post,author,text,date) VALUES ('$id','$author','$text','$date')",$d_base);
  30.                 echo "<html><head> <meta http-equiv='Refresh' content='0; URL=view_post.php?id=$id'> </head></html>";
  31.        }
  32.            else
  33.            {
  34.                 echo "<p class='contentheading_my'>Вы ввели неправельный код с картинки. <br><br><input name='back' type='button' value='Вернутся назад' onclick='javascript:history.back()' onMouseOver='window.status='Back';return true'>";
  35.        }
  36. }
  37. unset($_SESSION['captcha_keystring']);
  38.  


вот мое предложение реализации если я прально понел код твой то должно работать , что я сделал
1. сделал код более читабельным сделав отступы после каждого вложеной проверки
2. упростил проверку (нафига строчить по 20 раз if?)
3.упорядочил проверки (не зачем сравнивать капатчу ровно перед запросом к бд проще это сделать раньше и бо если скрипт будет исполнятся все вроде нормально тока под конец облом лишняя нагрузка помне так.)

(Отредактировано автором: 13 Июня, 2011 - 14:45:37)

 
 Top
fastattack
Отправлено: 13 Июня, 2011 - 16:44:11
Post Id


Новичок


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


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




Кто такой попов? Какие курсы? Может это тот кто мне отдал этот сайт? Да вроде он не попов.
И у меня вообще небыло там никаких ref. Было только имя, комент и submit. Вот приделал капчу! Скачал её с сайта captcha.ru помоему так назывался.Я конечно только начал изучать php но про курсы попова ничего не слышал. А что хорошие курсы?

Вот моя форма:
PHP:
скопировать код в буфер обмена
  1. <form action="com_ment.php" method="post" name="forma_ept">
  2. <table width="500" border="0" align="center" cellpadding="0" cellspacing="0" class="border">
  3.   <tr>
  4.     <td height="192" align="left" valign="top"><table width="500" border="0" cellspacing="0" cellpadding="0">
  5.       <tr>
  6.         <td class="border_top"width="316" height="191"><table width="316" border="0" cellspacing="0" cellpadding="0">
  7.           <tr>
  8.             <td height="195" align="left" valign="top"><table width="316" border="0" cellspacing="0" cellpadding="0">
  9.               <tr>
  10.                 <td class="dob_com" height="36">Добавить ваш комментарий:</td>
  11.               </tr>
  12.               <tr>
  13.                 <td class="text_area"height="159"><textarea name="text" cols="40" rows="9"></textarea></td>
  14.               </tr>
  15.             </table></td>
  16.           </tr>
  17.         </table></td>
  18.         <td width="184" align="center" valign="top" class="border_left"><table width="184" border="0" cellspacing="0" cellpadding="0">
  19.           <tr>
  20.             <td class="dob_com" height="38">Введите код:</td>
  21.           </tr>
  22.           <tr>
  23.             <td height="159" align="center"><p><img src="./captcha?<?PHP echo session_name()?>=<?PHP echo session_id()?>"></p>
  24. <p><input type="text" name="keystring"></p></td>
  25.           </tr>
  26.         </table></td>
  27.       </tr>
  28.     </table></td>
  29.   </tr>
  30.   <tr>
  31.     <td height="33" align="left" valign="top"><table width="500" border="0" cellspacing="0" cellpadding="0">
  32.       <tr>
  33.         <td width="315" height="33"> <div class="author_n">Ваше имя:</div> <input name="author" type="text" size="29" maxlength="30" /></td>
  34.         <td width="185">
  35.                   <input name="id" type="hidden" value="<? echo $id ?>" />
  36.                   <input class="butoon_s" name="sub_com" type="submit" value="Комментировать" />
  37.                   </td>
  38.       </tr>
  39.     </table></td>
  40.   </tr>
  41. </table><br><br>
  42.  
  43.         </td>
  44.       </tr>
  45.     </table></td>
  46.   </tr>
  47. </form>


А вот часть капчи:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. class KCAPTCHA{
  4.  
  5.         // generates keystring and image
  6.         function KCAPTCHA(){
  7.  
  8.                 require(dirname(__FILE__).'/kcaptcha_config.php');
  9.                 $fonts=array();
  10.                 $fontsdir_absolute=dirname(__FILE__).'/'.$fontsdir;
  11.                 if ($handle = opendir($fontsdir_absolute)) {
  12.                         while (false !== ($file = readdir($handle))) {
  13.                                 if (preg_match('/\.png$/i', $file)) {
  14.                                         $fonts[]=$fontsdir_absolute.'/'.$file;
  15.                                 }
  16.                         }
  17.                     closedir($handle);
  18.                 }      
  19.        
  20.                 $alphabet_length=strlen($alphabet);
  21.                
  22.                 do{
  23.                         // generating random keystring
  24.                         while(true){
  25.                                 $this->keystring='';
  26.                                 for($i=0;$i<$length;$i++){
  27.                                         $this->keystring.=$allowed_symbols{mt_rand(0,strlen($allowed_symbols)-1)};
  28.                                 }
  29.                                 if(!preg_match('/cp|cb|ck|c6|c9|rn|rm|mm|co|do|cl|db|qp|qb|dp|ww/', $this->keystring)) break;
  30.                         }
  31.                
  32.                         $font_file=$fonts[mt_rand(0, count($fonts)-1)];
  33.                         $font=imagecreatefrompng($font_file);
  34.                         imagealphablending($font, true);
  35.  
  36.                         $fontfile_width=imagesx($font);
  37.                         $fontfile_height=imagesy($font)-1;
  38.                        
  39.                         $font_metrics=array();
  40.                         $symbol=0;
  41.                         $reading_symbol=false;
  42.  
  43.                         // loading font
  44.                         for($i=0;$i<$fontfile_width && $symbol<$alphabet_length;$i++){
  45.                                 $transparent = (imagecolorat($font, $i, 0) >> 24) == 127;
  46.  
  47.                                 if(!$reading_symbol && !$transparent){
  48.                                         $font_metrics[$alphabet{$symbol}]=array('start'=>$i);
  49.                                         $reading_symbol=true;
  50.                                         continue;
  51.                                 }
  52.  
  53.                                 if($reading_symbol && $transparent){
  54.                                         $font_metrics[$alphabet{$symbol}]['end']=$i;
  55.                                         $reading_symbol=false;
  56.                                         $symbol++;
  57.                                         continue;
  58.                                 }
  59.                         }
  60.  
  61.                         $img=imagecreatetruecolor($width, $height);
  62.                         imagealphablending($img, true);
  63.                         $white=imagecolorallocate($img, 255, 255, 255);
  64.                         $black=imagecolorallocate($img, 0, 0, 0);
  65.  
  66.                         imagefilledrectangle($img, 0, 0, $width-1, $height-1, $white);
  67.  
  68.                         // draw text
  69.                         $x=1;
  70.                         $odd=mt_rand(0,1);
  71.                         if($odd==0) $odd=-1;
  72.                         for($i=0;$i<$length;$i++){
  73.                                 $m=$font_metrics[$this->keystring{$i}];
  74.  
  75.                                 $y=(($i%2)*$fluctuation_amplitude - $fluctuation_amplitude/2)*$odd
  76.                                         + mt_rand(-round($fluctuation_amplitude/3), round($fluctuation_amplitude/3))
  77.                                         + ($height-$fontfile_height)/2;
  78.  
  79.                                 if($no_spaces){
  80.                                         $shift=0;
  81.                                         if($i>0){
  82.                                                 $shift=10000;
  83.                                                 for($sy=3;$sy<$fontfile_height-10;$sy+=1){
  84.                                                         for($sx=$m['start']-1;$sx<$m['end'];$sx+=1){
  85.                                                         $rgb=imagecolorat($font, $sx, $sy);
  86.                                                         $opacity=$rgb>>24;
  87.                                                                 if($opacity<127){
  88.                                                                         $left=$sx-$m['start']+$x;
  89.                                                                         $py=$sy+$y;
  90.                                                                         if($py>$height) break;
  91.                                                                         for($px=min($left,$width-1);$px>$left-200 && $px>=0;$px-=1){
  92.                                                                         $color=imagecolorat($img, $px, $py) & 0xff;
  93.                                                                                 if($color+$opacity<170){ // 170 - threshold
  94.                                                                                         if($shift>$left-$px){
  95.                                                                                                 $shift=$left-$px;
  96.                                                                                         }
  97.                                                                                         break;
  98.                                                                                 }
  99.                                                                         }
  100.                                                                         break;
  101.                                                                 }
  102.                                                         }
  103.                                                 }
  104.                                                 if($shift==10000){
  105.                                                         $shift=mt_rand(4,6);
  106.                                                 }
  107.  
  108.                                         }
  109.                                 }else{
  110.                                         $shift=1;
  111.                                 }
  112.                                 imagecopy($img, $font, $x-$shift, $y, $m['start'], 1, $m['end']-$m['start'], $fontfile_height);
  113.                                 $x+=$m['end']-$m['start']-$shift;
  114.                         }
  115.                 }while($x>=$width-10); // while not fit in canvas
  116.  
  117.                 //noise
  118.                 $white=imagecolorallocate($font, 255, 255, 255);
  119.                 $black=imagecolorallocate($font, 0, 0, 0);
  120.                 for($i=0;$i<(($height-30)*$x)*$white_noise_density;$i++){
  121.                         imagesetpixel($img, mt_rand(0, $x-1), mt_rand(10, $height-15), $white);
  122.                 }
  123.                 for($i=0;$i<(($height-30)*$x)*$black_noise_density;$i++){
  124.                         imagesetpixel($img, mt_rand(0, $x-1), mt_rand(10, $height-15), $black);
  125.                 }
  126.  
  127.                
  128.                 $center=$x/2;
  129.  
  130.                 // credits. To remove, see configuration file
  131.                 $img2=imagecreatetruecolor($width, $height+($show_credits?12:0));
  132.                 $foreground=imagecolorallocate($img2, $foreground_color[0], $foreground_color[1], $foreground_color[2]);
  133.                 $background=imagecolorallocate($img2, $background_color[0], $background_color[1], $background_color[2]);
  134.                 imagefilledrectangle($img2, 0, 0, $width-1, $height-1, $background);           
  135.                 imagefilledrectangle($img2, 0, $height, $width-1, $height+12, $foreground);
  136.                 $credits=empty($credits)?$_SERVER['HTTP_HOST']:$credits;
  137.                 imagestring($img2, 2, $width/2-imagefontwidth(2)*strlen($credits)/2, $height-2, $credits, $background);
  138.  
  139.                 // periods
  140.                 $rand1=mt_rand(750000,1200000)/10000000;
  141.                 $rand2=mt_rand(750000,1200000)/10000000;
  142.                 $rand3=mt_rand(750000,1200000)/10000000;
  143.                 $rand4=mt_rand(750000,1200000)/10000000;
  144.                 // phases
  145.                 $rand5=mt_rand(0,31415926)/10000000;
  146.                 $rand6=mt_rand(0,31415926)/10000000;
  147.                 $rand7=mt_rand(0,31415926)/10000000;
  148.                 $rand8=mt_rand(0,31415926)/10000000;
  149.                 // amplitudes
  150.                 $rand9=mt_rand(330,420)/110;
  151.                 $rand10=mt_rand(330,450)/100;
  152.  
  153.                 //wave distortion
  154.  
  155.                 for($x=0;$x<$width;$x++){
  156.                         for($y=0;$y<$height;$y++){
  157.                                 $sx=$x+(sin($x*$rand1+$rand5)+sin($y*$rand3+$rand6))*$rand9-$width/2+$center+1;
  158.                                 $sy=$y+(sin($x*$rand2+$rand7)+sin($y*$rand4+$rand8))*$rand10;
  159.  
  160.                                 if($sx<0 || $sy<0 || $sx>=$width-1 || $sy>=$height-1){
  161.                                         continue;
  162.                                 }else{
  163.                                         $color=imagecolorat($img, $sx, $sy) & 0xFF;
  164.                                         $color_x=imagecolorat($img, $sx+1, $sy) & 0xFF;
  165.                                         $color_y=imagecolorat($img, $sx, $sy+1) & 0xFF;
  166.                                         $color_xy=imagecolorat($img, $sx+1, $sy+1) & 0xFF;
  167.                                 }
  168.  
  169.                                 if($color==255 && $color_x==255 && $color_y==255 && $color_xy==255){
  170.                                         continue;
  171.                                 }else if($color==0 && $color_x==0 && $color_y==0 && $color_xy==0){
  172.                                         $newred=$foreground_color[0];
  173.                                         $newgreen=$foreground_color[1];
  174.                                         $newblue=$foreground_color[2];
  175.                                 }else{
  176.                                         $frsx=$sx-floor($sx);
  177.                                         $frsy=$sy-floor($sy);
  178.                                         $frsx1=1-$frsx;
  179.                                         $frsy1=1-$frsy;
  180.  
  181.                                         $newcolor=(
  182.                                                 $color*$frsx1*$frsy1+
  183.                                                 $color_x*$frsx*$frsy1+
  184.                                                 $color_y*$frsx1*$frsy+
  185.                                                 $color_xy*$frsx*$frsy);
  186.  
  187.                                         if($newcolor>255) $newcolor=255;
  188.                                         $newcolor=$newcolor/255;
  189.                                         $newcolor0=1-$newcolor;
  190.  
  191.                                         $newred=$newcolor0*$foreground_color[0]+$newcolor*$background_color[0];
  192.                                         $newgreen=$newcolor0*$foreground_color[1]+$newcolor*$background_color[1];
  193.                                         $newblue=$newcolor0*$foreground_color[2]+$newcolor*$background_color[2];
  194.                                 }
  195.  
  196.                                 imagesetpixel($img2, $x, $y, imagecolorallocate($img2, $newred, $newgreen, $newblue));
  197.                         }
  198.                 }
  199.                
  200.                 header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  201.                 header('Cache-Control: no-store, no-cache, must-revalidate');
  202.                 header('Cache-Control: post-check=0, pre-check=0', FALSE);
  203.                 header('Pragma: no-cache');
  204.                 if(function_exists("imagejpeg")){
  205.                         header("Content-Type: image/jpeg");
  206.                         imagejpeg($img2, null, $jpeg_quality);
  207.                 }else if(function_exists("imagegif")){
  208.                         header("Content-Type: image/gif");
  209.                         imagegif($img2);
  210.                 }else if(function_exists("imagepng")){
  211.                         header("Content-Type: image/x-png");
  212.                         imagepng($img2);
  213.                 }
  214.         }
  215.  
  216.         // returns keystring
  217.         function getKeyString(){
  218.                 return $this->keystring;
  219.         }
  220. }
  221.  
  222. ?>


Что посоветуешь из курсов для написания более хорошего кода? Я начал читать PHP,Mysql,JavaScript Автор: Робин Никсон. Хорошо
 
 Top
PATCH
Отправлено: 13 Июня, 2011 - 17:25:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


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




можеш посмотреть для ознакомления и просто посмотреть пару примеров) как создать блог, и сайт. PHP+MYSQL - для начинающих (видеокурсы) еще раз потворяю эта так для ознакомления и небольшого представления как можно реализовывать, все навыки развиваются и закрепляются на практике. П.С че та я не вижу что у тебя тут каптча заносится в сессию) как она у тебя работает Оо попробуй введи код не на картинке который, что выдаст Оо в том скрипте каптча в сессии а тут ее нету
 
 Top
fastattack
Отправлено: 14 Июня, 2011 - 08:11:33
Post Id


Новичок


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


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




PHP:
скопировать код в буфер обмена
  1. <p><img src="./captcha?<?PHP echo session_name()?>=<?PHP echo session_id()?>"></p>
// Подключаем и летим в папочку captcha на index.php

Я так понимаю вот занос в сессию:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.  
  4. include('kcaptcha.php');
  5.  
  6.  
  7. $captcha = new KCAPTCHA();
  8.  
  9. if($_REQUEST[session_name()]){
  10.         $_SESSION['captcha_keystring'] = $captcha->getKeyString();
  11. }
  12.  
  13. ?>


И от сюда как ты видешь инклюдится к выше изложенному.php
P.S Например мне она очень понравилась) Хотел бы узнать и ваше мнения) Ниндзя
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Графика в PHP »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB