Zadejte hledaný výraz...

Zamezení rozesílání spamu přes formulář

GraphicSite
verified
rating uzivatele
(20 hodnocení)
27. 1. 2014 09:37:26
Zdravím,
Na webu www.stillmodels.com máme několik formulářů. Přes jeden nám chodí stále spamy od robotů. Nechci tam úplně dávat captchu nebo něco takového.
Je nějaká možnost jak tomu zamezit? Nějaké šikovné a jednoduché řešení?
Kod scriptu pro odesílání:
function autoUTF($s)
{
if (preg_match('##u', $s)) // detect UTF-8
{
return $s;
}
elseif (preg_match('##', $s)) // detect WINDOWS-1250
{
return iconv('WINDOWS-1250', 'UTF-8', $s);
}
else // assume ISO-8859-2
{
return iconv('ISO-8859-2', 'UTF-8', $s);
}
}
$temp = explode(".", $_FILES);
echo "Upload: " . $_FILES . "
";
echo "Type: " . $_FILES . "
";
echo "Size: " . ($_FILES / 2048) . " kB
";
echo "Temp file: " . $_FILES . "
";
if (file_exists("upload/" . $_FILES))
{
echo $_FILES . " Tento soubor již existuje. Pojmenujte prosím fotku vašim jmenem a příjmením. ";
}
else
{
move_uploaded_file($_FILES,
"upload/" . $_FILES);
echo "Stored in: " . "upload/" . $_FILES;
}
function cs_mail($to, $predmet, $zprava, $head = "")
{
$predmet = "=?utf-8?B?".base64_encode(autoUTF($predmet))."?=";
$head .= "MIME-Version: 1.0".PHP_EOL;
$head .= "Content-Type: text/html; charset="utf-8"".PHP_EOL;
$head .= "Content-Transfer-Encoding: base64".PHP_EOL;
$zprava = wordwrap(base64_encode(autoUTF($zprava)), 78, PHP_EOL, true);
return mail($to, $predmet, $zprava, $head);
}
$name = $_POST;
$last = $_POST;
$stat = $_POST;
$phone = $_POST;
$email = $_POST;
$born = $_POST;
$height = $_POST;
$prsa = $_POST;
$pas = $_POST;
$boky = $_POST;
$color = $_POST;
$vlasy = $_POST;
$typ = $_POST;
$exp = $_POST;
$message = $_POST;
$subor=$_FILES;
$formcontent="
Od: $name $last
Stát: $stat
Telefon: $phone
Email: $email
Datum narození: $born
Výška: $height
Prsa: $prsa
Pas: $pas
Boky: $boky
Barva očí: $color
Barva vlasů: $vlasy
Postava: $typ
Dosavadní zkušenosti:
$exp
Poznámka:
$message





Zasláno systémem GraphicSite.cz";
$recipient = "martin.sokol@graphicsite.cz";
$subject = "Workshop - nová tvář";
$mailheader = "From: $email";
cs_mail($recipient, $subject, $formcontent, $mailheader.PHP_EOL) or die("Error!");
header("Location: contactthanks.php");
ob_end_flush(); ?>
27. 1. 2014 09:37:26
https://webtrh.cz/diskuse/zamezeni-rozesilani-spamu-pres-formular/#reply990267
Pro podobné případy existuje poměrně zajímavé a jednoduché řešení:
Funkční javascriptová bariéra na komentářový spam
http://suplik.petnik.cz/funkcni-javasriptova-bariera-na-komentarovy-spam-qxxq628.html
27. 1. 2014 09:44:20
https://webtrh.cz/diskuse/zamezeni-rozesilani-spamu-pres-formular/#reply990266
Roman
verified
rating uzivatele
(15 hodnocení)
27. 1. 2014 09:44:45
Možná ti poradím, i když trochu oklikou. Na Wordpressu používám plugin Contact Form 7 Honeypot, který dělá to, že do formuláře přidá jedno pole, které se nesmí vyplňovat. Toto pole je pro normální návštěvníky skryté, resp. neviditelné, takže ho ani vyplnit nemohou. Roboti jsou ovšem hloupí a přeskakují od pole k poli (jeho viditelnost na stránce není důležitá) a vyplňují všechno. Jakmile ale vyplni i toto pole, formulář se neodešle.
27. 1. 2014 09:44:45
https://webtrh.cz/diskuse/zamezeni-rozesilani-spamu-pres-formular/#reply990265
GraphicSite
verified
rating uzivatele
(20 hodnocení)
27. 1. 2014 09:57:10
Napsal Plaváček;1049425
Pro podobné případy existuje poměrně zajímavé a jednoduché řešení:
Funkční javascriptová bariéra na komentářový spam
http://suplik.petnik.cz/funkcni-javasriptova-bariera-na-komentarovy-spam-qxxq628.html
Ahoj,
Funguje moc dobře, díky za tohle řešení, někam si ho uložím, to se bude určitě ještě hodit.
---------- Příspěvek doplněn 27.01.2014 v 09:57 ----------
Napsal Caesar;1049426
Možná ti poradím, i když trochu oklikou. Na Wordpressu používám plugin Contact Form 7 Honeypot, který dělá to, že do formuláře přidá jedno pole, které se nesmí vyplňovat. Toto pole je pro normální návštěvníky skryté, resp. neviditelné, takže ho ani vyplnit nemohou. Roboti jsou ovšem hloupí a přeskakují od pole k poli (jeho viditelnost na stránce není důležitá) a vyplňují všechno. Jakmile ale vyplni i toto pole, formulář se neodešle.
Na WP používám taky, tady je však náš RS vlastní, řešení výše funguje skvěle.
---------- Příspěvek doplněn 27.01.2014 v 10:16 ----------
No tak sem se asi unáhlil, spamy už chodí znovu vesele dál :/
27. 1. 2014 09:57:10
https://webtrh.cz/diskuse/zamezeni-rozesilani-spamu-pres-formular/#reply990264
Nebo jsi udělal něco špatně.
27. 1. 2014 10:28:46
https://webtrh.cz/diskuse/zamezeni-rozesilani-spamu-pres-formular/#reply990263
GraphicSite
verified
rating uzivatele
(20 hodnocení)
27. 1. 2014 10:53:41
Přidávám kod scriptu. Ve formuláři je vloženo.
function autoUTF($s)
{
if (preg_match('##u', $s)) // detect UTF-8
{
return $s;
}
elseif (preg_match('##', $s)) // detect WINDOWS-1250
{
return iconv('WINDOWS-1250', 'UTF-8', $s);
}
else // assume ISO-8859-2
{
return iconv('ISO-8859-2', 'UTF-8', $s);
}
}
$temp = explode(".", $_FILES);
echo "Upload: " . $_FILES . "
";
echo "Type: " . $_FILES . "
";
echo "Size: " . ($_FILES / 2048) . " kB
";
echo "Temp file: " . $_FILES . "
";
if (file_exists("upload/" . $_FILES))
{
echo $_FILES . " Tento soubor již existuje. Pojmenujte prosím fotku vašim jmenem a příjmením. ";
}
else
{
move_uploaded_file($_FILES,
"upload/" . $_FILES);
echo "Stored in: " . "upload/" . $_FILES;
}
function cs_mail($to, $predmet, $zprava, $head = "")
{
$predmet = "=?utf-8?B?".base64_encode(autoUTF($predmet))."?=";
$head .= "MIME-Version: 1.0".PHP_EOL;
$head .= "Content-Type: text/html; charset="utf-8"".PHP_EOL;
$head .= "Content-Transfer-Encoding: base64".PHP_EOL;
$zprava = wordwrap(base64_encode(autoUTF($zprava)), 78, PHP_EOL, true);
return mail($to, $predmet, $zprava, $head);
}
if ($_POST*1==6)
// Hlídá roboty
$name = $_POST;
$last = $_POST;
$stat = $_POST;
$phone = $_POST;
$email = $_POST;
$born = $_POST;
$height = $_POST;
$prsa = $_POST;
$pas = $_POST;
$boky = $_POST;
$color = $_POST;
$vlasy = $_POST;
$typ = $_POST;
$exp = $_POST;
$message = $_POST;
$subor=$_FILES;
$formcontent="
Od: $name $last
Stát: $stat
Telefon: $phone
Email: $email
Datum narození: $born
Výška: $height
Prsa: $prsa
Pas: $pas
Boky: $boky
Barva očí: $color
Barva vlasů: $vlasy
Postava: $typ
Dosavadní zkušenosti:
$exp
Poznámka:
$message





Zasláno systémem GraphicSite.cz";
$recipient = "martin.sokol@graphicsite.cz";
$subject = "Workshop - nová tvář";
$mailheader = "From: $email";
cs_mail($recipient, $subject, $formcontent, $mailheader.PHP_EOL) or die("Error!");
header("Location: contactthanks.php");
ob_end_flush(); ?>
27. 1. 2014 10:53:41
https://webtrh.cz/diskuse/zamezeni-rozesilani-spamu-pres-formular/#reply990262
Pro odpověď se přihlašte.
Přihlásit