Добро пожаловать в Forum.iCoder.Uz

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. После регистрации и входа в систему вы сможете создавать темы, публиковать ответы на существующие темы, повышать репутацию других участников, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?

[PHP] Защита сайта от спама сложением чисел

Информация о теме

О теме Здравствуйте, вы читаете тему Защита сайта от спама сложением чисел созданную в в разделе PHP для начинающих пользователем impuLse #IT. Эта тема была просмотрена 799 раз(а), получила 0 комментариев и 0 очки реакции...
Название категории PHP для начинающих
Название темы Защита сайта от спама сложением чисел
Автор темы impuLse #IT
Дата начала
Ответы
Просмотры
Количество реакций
Последнее сообщение impuLse #IT

impuLse #IT

Администратор
Команда форума
Регистрация
12.03.2015
Сообщения
899
Реакции
449
Баллы
35
  • Автор темы
  • Администратор
  • #1
Предлагаем Вам простейший способ защитить свой сайт (или гостевую книгу) от СПАМа. Сделать это можно при помощи простейшего арифметического действия над числами (сложения или вычитания). Сразу скажем, что данный скрипт не дает стопроцентной защиты от СПАМа, но в то же время позволяет отсечь значительную часть простых ботов.

Для того чтобы отправить текст, необходимо сложить два числа, которые при каждом обновлении странички разные. Плюсом является то, что в исходном коде странички нет ответа, т.к. ответ хранится в переменной сессии.

Если ввести неверную сумму чисел, то появится сообщение "Дан неверный ответ!" и отправленный текст не будет обработан.

Давайте рассмотрим код, которые реализует такую простейшую защиту от ботов спамеров. Код состоит из двух частей: кода обработки отправленных данных и кода формы для отправки текста. Для начала приведем код обработки отправленных данных, который необходимо разместить в самом начале странички до вывода на экран любой информации:
PHP:
<?php
session_start();
if ($_POST[submit]) {
 if ($_POST[otvet] == $_SESSION[summ]) {
  $_SESSION[message] = '<font color="blue">Ответ правильный!</font>';
  // Тут обработка поступившего сообщения из поля text
 }
 else {
  $_SESSION[message] = '<font color="red">Дан неверный ответ!</font>';
 }
header("Location: forms_protection_number.php");    //сбрасываем отправленное
exit();
}
?>
Далее идет сама форма, через которую и был отправлен некоторый текст:
PHP:
<?php
$a = rand(10,50);
$b = rand(1,10);
$_SESSION[summ] = $a + $b;
echo "<b>$_SESSION[message]</b>";
unset($_SESSION[message]);
?>

<form method="POST" action="forms_protection_number.php">
 <table border="0">
  <tr>
   <td>Текст: </td>
   <td><input type="text" name="text"></td>
  </tr>
  <tr>
   <td><?php echo "$a + $b = "; ?></td>
   <td><input type="text" name="otvet"></td>
  </tr>
  <tr>
   <td colspan="2"><input type="submit" name="submit" value="Отправить"></td>
  </tr>
 </table>
</form>
Как видно, это обычная форма за исключением добавления небольшого PHP кода для генерации случайных двух чисел и вычисления их суммы. Так же мы выводим сгенерированные числа внутри формы строчкой: <td><?php echo "$a + $b = "; ?></td>.
 
shape1
shape2
shape3
shape4
shape7
shape8
Сверху Снизу