Контакт формулар кој не сака Spam ботови 2

Пред околу еден месец пишував како може да се заштити контакт формулар од Spam ботови но не го објавив објаснувањето како е направен формуларот. Како што ветив, следува кодот од овој формулар:

contact.php:

<?php
session_start(); // започнување на нова сесија

if (isset($_POST['submit'])) { // Доколку имаме POST метод се извршува кодот подолу
 if (!empty($_SESSION['komentar'])) { // Доколку сесијата не е празна се извршува кодот подолу
 parse_str($_SESSION['komentar']); // Се разложува сесијата на променливи
 }

 $prazno = $_POST[$sprazno];
 if (!empty($prazno)) { // Доколку полето за проверка е пополнето се извршува кодот подолу
 die("Детектиран си како Spambot!");
 }

 if ((!empty($_POST[$sime])) && (!empty($_POST[$semail])) && (!empty($_POST[$skomentar]))) { // Доколку потребните полиња се пополнети се извршува кодот подолу
 $name = $_POST[$sime];
 $email = $_POST[$semail];
 $comment = $_POST[$skomentar];

 // Испраќање на емаил порака или слично
 }
}

// Доделување на рандом имиња на полињата од формуларот
$ime = md5(rand());
$email = md5(rand());
$komentar = md5(rand());
$prazno = md5(rand());

$_SESSION['komentar'] = "sime=$ime&semail=$email&skomentar=$komentar&sprazno=$prazno"; //  Запишување на имињата од формуларот во сесијата

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="mk">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Контакт формулар кој не сака Spam ботови</title>
</head>
<body>
<div id="container">
<form name="submitcomment" method="post" action="contact.php">

<label for="<?php echo $ime ?>">Име:</label>
<input name="<?php echo $prazno ?>" type="text">
<input name="<?php echo $ime ?>" type="text">

<label for="<?php echo $email ?>">Email:</label>
<input name="<?php echo $email ?>" type="text">

<label for="<?php echo $komentar ?>">Коментар:</label>
<textarea name="<?php echo $komentar ?>" rows="5" cols="21"></textarea>

<input type="submit" name="submit" value="Испрати" />
</form></div>
</body>
</html>

За да се скрие полето за проверка користиме CSS:

.prazno { display:none; }
gravatar
Автор: Даниел Брзанов
За авторот: Здраво! Јас сум Даниел a.k.a. Delicon, се занимавам со веб дизајн и програмирање повеќе од 10 години и сакам да го споделам своето знаење со сите што се заинтересирани за тоа.

4 Коментари

  1. не ли може кај празното наместо type="text" само type="hidden"

  2. @DeJaaaN

    доколку е type="hidden" тогаш тоа поле не се пополнува како останатите па ботовите нема да го пополнат.

  3. Супер ти е идеата браво само нема ли скриените елементи со css да влијаат лошо на SEO рејтнгот ????

  4. @SkechBoy

    Скриениот елемент е само едно поле за внесување на текст, па така тоа и нема да влијае толко на SEO рејтингот.