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

Форум PHP

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

 

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

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

тема: капча, помогите разобратся
 
 автор: milanello   (17.08.2010 в 15:05)   письмо автору
 
 

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


БД

id    img                                     sum
1    img/sum/sum.gif                 3
2    img/sum/sum1.jpg         4


кусок страницы добавления коментария:
$result4 = mysql_query ("SELECT * FROM comments_setting ORDER BY RAND() LIMIT 1",$db);
$myrow4 = mysql_fetch_array($result4);

?>
<p class='newst'>Добавить Ваш комментарий:</p>
<form action="comment.php" method="post" name="form_com">
<p><label>Ваше имя: </label><input name="author" type="text" size="30" maxlength="30"></p>
<p><label>Текст комментария: <br> <textarea name="text" cols="32" rows="4"></textarea></label></p><p>Введите сумму чисел с картинки<br><img style='margin-top:17px;' src="<? echo $myrow4["img"]; ?>" width="80" height="40">
  <input style='margin-bottom:16px;' name="pr" type="text" size="5" maxlength="5"></p>
  <input name="id" type="hidden" value="<? echo $id?>">
<p><input name="sub_com" type="submit" value="Комментировать"></p> 


</form>



Исполняющий файл:
<?php  include ("blocks/bd.php");
if (isset(
$_POST['author']))
{
$author $_POST['author'];
}

if (isset(
$_POST['text']))
{
$text $_POST['text'];
}

if (isset(
$_POST['pr']))
{
$pr $_POST['pr'];
}

if (isset(
$_POST['sub_com']))
{
$sub_com $_POST['sub_com'];
}

if (isset(
$_POST['id']))
{
$id $_POST['id'];
}

if (isset(
$sub_com))
{
if (isset(
$author)) {trim($author);   }
else {
$author "";}

if (isset(
$text)) {trim($text);   }
else {
$text "";}

if (empty(
$author) or empty($text))
{
exit (
"<p>Вы ввели не всю информацию, вернитесь назад и заполните все поля. <br> <input name='back' type='button' value='Вернуться назад' onclick='javascript:self.back();'>");
}

$author stripslashes($author);
$text stripslashes($text);
$author htmlspecialchars($author);
$text htmlspecialchars($text);

$result mysql_query ("SELECT sum FROM comments_setting",$db);
$myrow mysql_fetch_array($result);

if (
$pr == $myrow["sum"])
{
$date date("Y-m-d");
$result2 mysql_query ("INSERT INTO comments (post,author,text,date) VALUES ('$id','$author','$text',NOW())",$db);
$address "serega2101@i.ua";
$subject "Новый комментарий на блоге";
$result3 mysql_query ("SELECT title FROM data WHERE id='$id'",$db);
$myrow3 mysql_fetch_array ($result3);
$post_title $myrow3["title"];
$message "Появился комментарий к заметке - ".$post_title."\nКомментарий добавил(а): ".$author."\nТекст комментария: ".$text."\nСсылка на заметку: http://citylife.uzhgorod.ua/view_post.php?id=".$id."";
mail($address,$subject,$message,"Content-type:text/plain; Charset=windows-1251\r\n");

echo 
"<html><head>
<meta http-equiv='Refresh' content='0; URL=view_post.php?id=
$id'>
</head></html>"
;
exit();



}
else 
{
exit (
"<p>Вы ввели неверную сумму цифр с картинки на предыдущей странице. <br> <input name='back' type='button' value='Вернуться назад' onclick='javascript:self.back();'>");
}










}

?>

  Ответить  
 
 автор: serenya1983   (17.08.2010 в 15:11)   письмо автору
 
   для: milanello   (17.08.2010 в 15:05)
 

Храните цифру в сессии зачем её сохранять в БД!!!

  Ответить  
 
 автор: milanello   (17.08.2010 в 15:22)   письмо автору
 
   для: serenya1983   (17.08.2010 в 15:11)
 

что значит хранить в сессии?

  Ответить  
 
 автор: serenya1983   (17.08.2010 в 15:31)   письмо автору
 
   для: milanello   (17.08.2010 в 15:22)
 

Когда создаёте картину (цифры) сохраните их в сессии:

session_start();
$_SESSION['kod'] = md5($code);

затем, сравнивайте что введено (в начале страницы session_start();)

if (isset($_POST['pr'])&&(md5($_POST['pr'])==$_SESSION['kod']))
echo "код верный";
else echo "код не верный";

  Ответить  
 
 автор: Commander   (18.08.2010 в 04:19)   письмо автору
 
   для: serenya1983   (17.08.2010 в 15:31)
 

<?php
    $_SESSION
['kod'] = md5($code);
?>
А зачем md5()?

  Ответить  
 
 автор: sim5   (18.08.2010 в 04:53)   письмо автору
 
   для: Commander   (18.08.2010 в 04:19)
 

Чтобы бот не ломанул. :)

  Ответить  
 
 автор: Commander   (18.08.2010 в 05:51)   письмо автору
 
   для: sim5   (18.08.2010 в 04:53)
 

Это юмор?

Хэш необходим только в том случае, если бот получит доступ к данным сессии, а для этого необходимо ломать сервер. Если же сервер сломан, никакая каптча не поможет.

  Ответить  
 
 автор: sim5   (18.08.2010 в 05:57)   письмо автору
 
   для: Commander   (18.08.2010 в 05:51)
 

>Это юмор?

А разве похоже на серьезный аргумент? )

  Ответить  
 
 автор: sim5   (17.08.2010 в 15:11)   письмо автору
 
   для: milanello   (17.08.2010 в 15:05)
 

Вы хотя бы представляеете механизм работы каптчи? Судя по коду и "картинки каптчи в БД" нет.

  Ответить  
 
 автор: milanello   (17.08.2010 в 15:23)   письмо автору
 
   для: sim5   (17.08.2010 в 15:11)
 

вопрос чем ваш ответ может помочь решению проблемы?

  Ответить  
 
 автор: Slo_Nik   (17.08.2010 в 15:34)   письмо автору
 
   для: milanello   (17.08.2010 в 15:23)
 

тем же, чем и Ваш вопрос "что значит хранить в сессии?"
Вы сами писали каптчу? возьмите готовое решение на captcha.ru

  Ответить  
 
 автор: milanello   (17.08.2010 в 16:47)   письмо автору
 
   для: Slo_Nik   (17.08.2010 в 15:34)
 

скачал зип архив етой капчи
но он не открывается.

  Ответить  
 
 автор: serenya1983   (17.08.2010 в 16:59)   письмо автору
 
   для: milanello   (17.08.2010 в 16:47)
 


<?php
   $width    
110;
   
$height   38;
   
$length   5;
   
$font     '../data/verdana.ttf';
   
$font_size   14;
   
$bg_color = array(240240240);
   
$chars    'ABCDEFGHKMNPQRSTUVWXYZ23456789';
   
session_start();
   
putenv('GDFONTPATH=' realpath('.'));
   
$img imagecreatetruecolor($width$height);
   
$bkgr imagecolorallocate($img$bg_color[0], $bg_color[1], $bg_color[2]);
   
imagefilledrectangle($img00$width$height$bkgr);

   
$code '';
   for(
$i 0$i $length$i++)
   {
      
$code .= $chr $chars[mt_rand(0strlen($chars)-1)];
      
$r mt_rand(0192);
      
$g mt_rand(0192);
      
$b mt_rand(0192);
      
$color2 imagecolorallocate($img$r$g$b);
      
$rotation rand(-3535);
      
$x 5+$i*(4/3*$font_size+2);
      
$y rand(4/3*$font_size$height-(4/3*$font_size)/2);
      
imagettftext($img$font_size$rotation$x$y$color2$font$chr);
      
$x1=0;    $x2=$width;    $y1=mt_rand(0$height);    $y2=mt_rand(0$height);
      
$linecolor imagecolorallocate $img 255255255);
      
imageline($img$x1$y1$x2$y2$textcolor);      
   }

   
$_SESSION['kod'] = md5($code);

   
header("Content-type: image/png");
   
header("Expires: Mon, 01 Jul 1998 05:00:00 GMT");
   
header("Last-Modified: " gmdate("D, d M Y H:i:s") . " GMT");
   
header("Cache-Control: no-store, no-cache, must-revalidate");
   
header("Cache-Control: post-check=0, pre-check=0"false);
   
header("Pragma: no-cache");

   
imagepng($img);
   
imagedestroy($img);
?>

  Ответить  
 
 автор: milanello   (17.08.2010 в 17:09)   письмо автору
 
   для: serenya1983   (17.08.2010 в 16:59)
 

дружище а ето куда запхать?
ат оя чет не шарю уже вообще(

  Ответить  
 
 автор: milanello   (17.08.2010 в 17:17)   письмо автору
 
   для: milanello   (17.08.2010 в 17:09)
 

вообщем вопрос такой
я в первом файле делаю присвоение переменной случайного числа
$sly4 = rand(1, 2);

как мне перенести число которое присвоилось на етой страничке перенести на другую?
на страничку в которой идет обработка

  Ответить  
 
 автор: serenya1983   (17.08.2010 в 17:21)   письмо автору
 
   для: milanello   (17.08.2010 в 17:17)
 

через $_SESSION
код выше сохранить в php файл и указывать его в качестве адреса для картинки <img src='...'>

  Ответить  
 
 автор: Slo_Nik   (17.08.2010 в 17:09)   письмо автору
164.4 Кб
 
   для: milanello   (17.08.2010 в 16:47)
 

архив в приложении, с того же сайта, всё открывается

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

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