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
Форумы портала PHP.SU :: Версия для печати :: Captha
Форумы портала PHP.SU » » Графика в PHP » Captha

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

1. zonder - 08 Июня, 2011 - 22:47:10 - перейти к сообщению
Есть форма отправки сообщения
PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  5. <title>Untitled Document</title>
  6. </head>
  7.  
  8. <body>
  9. <form action="send_test.php" method="post">
  10.  
  11. <p>Введите имя:<br>
  12. <input type="text" name="name"></p>
  13. <p>Введите email:<br>
  14. <input type="text" name="email"></p>
  15. <p>Введите сообщение:<br>
  16. <textarea name="message" cols="40" rows="5" ></textarea>
  17. </p>
  18. <p>Ведите числа с картинки: <br>
  19. <input name="pr" style=" margin-bottom:11px" type="text" size="6" maxlength="4"></p>
  20. <p><input type="submit" class="bt1" value="Отправить сообщение"></p>
  21. </form>
  22. </body>
  23. </html>

и есть капча
PHP:
скопировать код в буфер обмена
  1. <?PHP session_start();
  2.  
  3.  $width = 165;
  4.  $height = 60;
  5.  $font_size = 18;
  6.  $let_amount = 6;
  7.  $fon_let_amount = 30;
  8.  $path_fonts = 'fonts/';
  9.  
  10.  
  11.  $letters = array('a','b','c','d','e','f','g','h','j','k','m','n','p','q','r','s','t','u','v','w','x','y','z','2','3','4','5','6','7','9');
  12.  $colors = array('10','30','50','70','90','110','130','150','170','190','210');
  13.  
  14.  $src = imagecreatetruecolor($width,$height);
  15.  $fon = imagecolorallocate($src,255,255,255);
  16.  imagefill($src,0,0,$fon);
  17.  
  18.  $fonts = array();
  19.  $dir=opendir($path_fonts);
  20.  while($fontName = readdir($dir))
  21.  {
  22.    if($fontName != "." && $fontName != "..")
  23.    {
  24.      $fonts[] = $fontName;
  25.    }
  26.  }
  27.  closedir($dir);
  28.  
  29.  for($i=0;$i<$fon_let_amount;$i++)
  30.  {
  31.    $color = imagecolorallocatealpha($src,rand(0,255),rand(0,255),rand(0,255),100);
  32.    $font = $path_fonts.$fonts[rand(0,sizeof($fonts)-1)];
  33.    $letter = $letters[rand(0,sizeof($letters)-1)];
  34.    $size = rand($font_size-2,$font_size+2);
  35.    imagettftext($src,$size,rand(0,45),rand($width*0.1,$width-$width*0.1),rand($height*0.2,$height),$color,$font,$letter);
  36.  }
  37.  
  38.  for($i=0;$i<$let_amount;$i++)
  39.  {
  40.    $color = imagecolorallocatealpha($src,$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],$colors[rand(0,sizeof($colors)-1)],rand(20,40));
  41.    $font = $path_fonts.$fonts[rand(0,sizeof($fonts)-1)];
  42.    $letter = $letters[rand(0,sizeof($letters)-1)];
  43.    $size = rand($font_size*2.1-2,$font_size*2.1+2);
  44.    $x = ($i+1)*$font_size + rand(4,7);
  45.    $y = (($height*2)/3) + rand(0,5);
  46.    $cod[] = $letter;  
  47.    imagettftext($src,$size,rand(0,15),$x,$y,$color,$font,$letter);
  48.  }
  49.  
  50.  $_SESSION['secpic'] = implode('',$cod);
  51.  
  52.  header ("Content-type: image/gif");
  53.  imagegif($src);
  54. ?>
Как мне их вместе связать? Очень надо. Просьба не советовать другие капчи. Спасибо.
2. OrmaJever - 08 Июня, 2011 - 22:55:14 - перейти к сообщению
Ну если капча работает то создать картинку img со сылкой на это php файл и текстовове поле для вода значения, затем сравнивать значение этого поля с $_SESSION['secpic']
3. zonder - 09 Июня, 2011 - 10:14:18 - перейти к сообщению
тоисть так
PHP:
скопировать код в буфер обмена
  1. <p>Введите имя:<br>
  2. <input type="text" name="name"></p>
  3. <p>Введите email:<br>
  4. <input type="text" name="email"></p>
  5. <p>Введите сообщение:<br>
  6. <textarea name="message" cols="40" rows="5" ></textarea>
  7. </p>
  8. <p>Введите числа с картинки: <br>
  9. <p><img src="captcha.php">
  10. <input name="pr" style=" margin-bottom:11px" type="text" size="6" maxlength="4"></p>
  11. <p><input type="submit" class="bt1" value="Отправить сообщение"></p>
  12. </form>
  13. </body>
  14. </html>
"pr" - поле "bt1"- кнопка. потом сравниваем
PHP:
скопировать код в буфер обмена
  1. if ($_SESSION['secpic']==pr){}
и куда его вставлять в capcha.php?? И что я не так делаю?
4. Viper - 09 Июня, 2011 - 11:25:08 - перейти к сообщению
zonder вставлять в то место где у вас проверка правильности введенных символов с капчи
5. zonder - 09 Июня, 2011 - 22:04:37 - перейти к сообщению
вот у меня теперь форма
PHP:
скопировать код в буфер обмена
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
  5. <title>Untitled Document</title>
  6. </head>
  7.  
  8. <body>
  9. <form action="send_test.php" method="post">
  10.  
  11. <p>Введите имя:<br>
  12. <input type="text" name="name"></p>
  13. <p>Введите email:<br>
  14. <input type="text" name="email"></p>
  15. <p>Введите сообщение:<br>
  16. <textarea name="message" cols="40" rows="5" ></textarea>
  17. </p>
  18. <p>Введите числа с картинки: <br>
  19. <p><img src="secpic.php"></p>
  20. <input name="pr" style=" margin-bottom:11px" type="text" size="6" maxlength="4"></p>
  21. <p><input type="submit" class="bt1" value="Отправить сообщение"></p>
  22. </form>
  23. </body>
  24. </html>


с капчей все нормально и теперь файл проверки
PHP:
скопировать код в буфер обмена
  1. <?PHP session_start();
  2.  
  3. if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
  4. if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
  5. if (isset($_POST['message'])) {$message = $_POST['message']; if ($message == '') {unset($message);}}
  6. if (isset($_POST['pr'])){$pr = $_POST['pr']; if ($pr == '') {unset($pr);}}
  7.  
  8. if (isset($name) && isset($email) && isset($message) && isset($pr))
  9. {
  10.  
  11. $name = htmlspecialchars(trim($name));
  12. $email = htmlspecialchars(trim($email));
  13. $message = htmlspecialchars(trim($message));
  14.  
  15. if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $email))
  16. {
  17. echo "<p>e-mail</p>";
  18. }
  19.   if ($_POST['pr']==$_SESSION['secpic'])
  20.   {
  21.    echo "<p>True</p>"
  22.   }
  23. }
  24. ?>

в форме все с картинкой тоже нормально генерирует и вот ошибка при всей заполненой форме что викидает денвер Parse error: syntax error, unexpected '}', expecting ',' or ';' in Y:\home\1.ru\www\send_test.php on line 21
6. OrmaJever - 09 Июня, 2011 - 22:45:02 - перейти к сообщению
zonder пишет:
echo "<p>True</p>"

может в конце точка с запятой должна быть?
7. zonder - 09 Июня, 2011 - 22:51:48 - перейти к сообщению
тфу во ето я затупил.... спасиб после длительного програмирования забил поставить точку с запетой
8. OrmaJever - 09 Июня, 2011 - 22:57:13 - перейти к сообщению
Мы все что-то забываем, нужно уметь читать ошибки Подмигивание

 

Powered by ExBB FM 1.0 RC1