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 Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
mclord
Отправлено: 13 Мая, 2011 - 08:50:03
Post Id


Частый гость


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


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




нужна капча вот код

простая форма
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <p style="color:#FF0000"> <strong>Вы можете отправить мне сообщение, заполнив следующую форму:</strong></p>
  3. <form method="post" action="mail.php">
  4. <strong>Ваше имя:</strong><input type="text" name="name" size="30"/>
  5. <strong>Ваш e-mail (для ответа):</strong><input name="email" type="text" size="30" />
  6.  
  7. <strong>Кому:</strong><select name="mail_to" style="width:203px;">
  8. <option value="simanovskiy.grigoriy@gmail.com">Генеральный Директор</option>
  9. <option value="error@sait.ru">Support</option>
  10. </select>
  11.  
  12. <strong>Ваше сообщение:</strong><textarea name="mess" rows="3" cols="30"></textarea>
  13. <p>
  14. <input type="submit" value="Отправить сообщение"/>
  15. </p>
  16. </form>
  17.  


а вот сам php
PHP:
скопировать код в буфер обмена
  1.  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/>
  6. <title>Обратная связь</title>
  7. </head>
  8. <body>
  9. <?PHP
  10. if (isset($_POST['name'])) {$name = $_POST['name'];}
  11. if (isset($_POST['email'])) {$email = $_POST['email'];}
  12. if (isset($_POST['mess'])) {$mess = $_POST['mess'];}
  13. if (empty($name))
  14. {
  15. echo "<b>Не указано имя!<p>";
  16. echo "<a href=contacts.html>Вернуться к заполнению формы</a>";
  17. }
  18. else
  19. if (empty($email))
  20. {
  21. echo "<b>Не указан e-mail!<p>";
  22. echo "<a href=contacts.html>Вернуться к заполнению формы</a>";
  23. }
  24. else
  25. if (empty($mess))
  26. {
  27. echo "<b>Сообщение не написано!<p>";
  28. echo "<a href=contacts.html>Вернуться к заполнению формы</a>";
  29. }
  30. else
  31. $to = $_POST['mail_to'];
  32. $charset = "windows-1251";
  33. $subject = "Сообщение с вашего сайта";
  34. $message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";
  35. $send = mail ($to,$subject,$message);
  36. if ($send == 'true')
  37. {
  38. echo "<b>Спасибо за отправку вашего сообщения!<p>";
  39. echo "<a href=index.html>Нажмите,</a> чтобы вернуться на главную страницу";
  40. }
  41. else
  42. {
  43. echo "<p><b>Ошибка. Сообщение не отправлено!";
  44. }
  45. ?>
  46. </body>
  47. </html>
  48.  
 
 Top
AdMeen
Отправлено: 13 Мая, 2011 - 09:18:50
Post Id



Посетитель


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


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




mclord в своем стиле - сделайте за меня Хм .

Начну по-порядку, расскажу алгоритм, как работает капча. На сервере генерируем рандомное число/цвет/звук/текст, по вкусу, генерируем его представление и отдаем пользователю, для себя создаем переменную сессии на сервере в которую сохраяем его же.
Затем предлагаем пользователю ввести нашу загадочную каптчу. Сравниваем переменную сессии и то, что ввел пользователь.
..
PROFIT

Второе, ваш код ужасен, проверка только на пустоту переменной, это сильно. Зачем использовать isset перед empty ? То, что пользователю прийдет письмо с потенциально небезобасным кодом вас мало волнует, видимо?

P.S. Да, куча капч на гугле, если свое писать лень

(Отредактировано автором: 13 Мая, 2011 - 09:19:57)

 
 Top
xhugo
Отправлено: 13 Мая, 2011 - 21:29:45
Post Id



Посетитель


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


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




AdMeen, вариант конечно банален.
т.к. если отключить прием куков(сессий) и просто удалить поле кода капчи , и потом отправить запрос, то на сервер будет проверка
$_SESSION['']==$_POST['']
profit.
p.s. хочу с удовольствием услышать вариант,как работают другие капчи.
 
 Top
Alex_pac
Отправлено: 14 Мая, 2011 - 08:51:19
Post Id



Новичок


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


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




del

(Отредактировано автором: 14 Мая, 2011 - 08:51:41)

 
 Top
ADIOS
Отправлено: 14 Мая, 2011 - 21:11:03
Post Id



Гость


Покинул форум
Сообщений всего: 96
Дата рег-ции: Май 2010  
Откуда: Россия, Калуга


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




captcha[dot]zip

mclord делюсь с находками....
Думаю прикрутить куда нада сможешь ;)

(Отредактировано автором: 14 Мая, 2011 - 21:12:56)



-----
Не откладывай работу на завтра, от которой можно вообще отказаться
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB