Немного обо всем интересном
На главную Обратная связь Поиск
Главная
Форум
 
 
 
  Статьи Файлы Видео Кулинарные рецепты Города и Страны Разное  
Отдых и развлечения Юмор Видео, ТВ и музыка Непознанное Литература Спорт Игры Хобби
Окружающий мир Люди Страны и города География Флора и фауна Космос
Технологии Hardware Операционные системы Софт Интернет Мобильные устройства Сети и сетевая безопасность Разное
Дизайн и программирование Веб-строительство Дизайн и графика

Все статьи Список статей Добавить статью
 
Вниз
Защита от спама модуля обратной связи в PHP-Nuke


В данной статье описаны подробные инструкции по подключению проверочного кода в модуль обратной связи (Feedback) CMS PHP-Nuke.

На примере использовался модуль обратной связи от PHP-Nuke 8, но, на сколько я знаю, этот модуль от ранних версий точно такой же.

Пример того, как это будет выглядеть можно посмотреть тут (защита от спама, решите пример).


Существует много различных вариантов подключения проверочных кодов, в основном это картинка с текстом, который нужно повторить. Такой же метод используется и в PHP-Nuke, но мне больше понравился метод, используемый в статье Защита форм от спама без графического кода Сергея Брундасова.

И так, созданим сначала файл sb_tuning.php в папке includes, со следующим содержанием:

<?php
if (stristr(htmlentities($_SERVER['PHP_SELF']), "sb_tuning.php")) {
Header("Location: /");
die();
}
define('HASH_DELTA', 677312); //нужно изменить
define('HASH_FIELDNAME', 'hfh');

class
TProtectCode{

var
$hashcode;
var
$hashvalue;
var
$hashfield;
var
$msg = 'TUNING'; // text to display

function GetCode($hmin=1000, $hmax=9999, $fieldname=HASH_FIELDNAME){
$this->hashcode = rand($hmin, $hmax);
$this->hashvalue = md5($this->hashcode + HASH_DELTA);
$this->hashfield = '<input type=hidden name="'.$fieldname.'" value="'.$this->hashvalue.'">';
//проявляем фантазию
$this->msg = $this->hashcode; //simple
//пример кода со сложением
$s1 = rand(1, min(9, $this->hashcode - 1));
$this->msg = (string)($this->hashcode - $s1).'+'.(string)$s1.'=';
}

function
CheckCode($code, $hash){
return (
$hash == md5($code + HASH_DELTA));
}

}

?>

Теперь открываем файл index.php модуля Feedback

Находим:

include("header.php");

Ниже добавляем:

require_once('includes/sb_tuning.php');
$t = new TProtectCode();
$t->GetCode();

Находим:

<i>"._HTMLNOTALLOWED2."</i></td></tr>

Следом добавляем:

<tr><td><strong>Защита от спама<br>(решите пример):<strong></td><td>".$t->msg."</font> <INPUT type=\"text\" NAME=\"Code\" maxlength=\"7\" SIZE=\"7\"></td></tr>

Находим:

<INPUT TYPE=\"submit\" NAME=\"submit\" VALUE=\""._SEND."\">

Следом добавляем:

".$t->hashfield."

Находим:

if (empty($message)) {
$message_err = "<div align=\"center\"><span class=\"option\"><strong><em>"._FBENTERMESSAGE."</em></span></font></div>";
$send = "no";
}

Ниже добавляем:

$turning = isset($_POST['Code']) ? (int)$_POST['Code'] : 0;
$hash = isset($_POST[HASH_FIELDNAME]) ? $_POST[HASH_FIELDNAME] : '';

$t = new TProtectCode;

if (!$t->CheckCode($turning, $hash)){
$code_err = "<div align=\"center\"><span class=\"option\"><strong><em>Вы не верно написали проверочный код.</em></span></font></div>";
$send = "no";
}

Находим:

if (!empty($message_err)) {echo "$message_err"; }

Ниже добавляем:

if (!empty($code_err)) {echo "$code_err"; }

Проверяем на работоспособность.


Данные:
Просмотров: 7196
Рейтинг: 10
Голосов: 1
Средний бал: 10
Комментариев: 1
Добавлен: 05.05.2008

Оценить:

Функции:



Шрифт:   +  -

Автор: Alexander-V-ShРазместил: Alexander-V-Sh
Посмотреть все статьи этого пользователя
Комментарии:

Разместил гость олег20.03.2009

хорошая защитаfsdf
 
Добавить комментарий:

Оставлять комментарии могут только зарегистрированные пользователи.
Возможно заинтересует: • 
Вверх
2006-2010 Интересное.инфо.
При использовании или копировании материалов не забываем ссылку на http://interesnoe.info