Autor Zpráva
Peter45
Profil
Prosim poradte nejaky tutorial nemozem nikde natrafit aj s antispamom...
l564
Profil
Formulář odesílaný na e-mail

Antispam si můžeš udělat podmínkou if a else
Ernie
Profil
z googlu:

www.addressmunger.com/contact_form_generator/
www.snaphost.com/captcha/
...
Ernie
Profil
l564:
Antispam si můžeš udělat podmínkou if a else
Můžeš naznačit jak?
l564
Profil
$spam = $_POST['formular'];
if($spam=="Praha")
{
echo "Spam správně" ;
}
else
{
echo "Spam nesprávně";
}


A do html si dáš formulář který budeš odesílat pomocí POST a Input který má name formular
Ernie
Profil
To není moc spolehlivé řešení (jestli si správně domýšlím, že do <input name=formular> bude uživatel psát "hlavní město ČR" např.)
Je to vždy stejné.
Navíc proč znovu vynalézat kolo?
l564
Profil
Ernie:
Nebo pomocí array kde si definuješ otázky a odpovědi a pak budeš pouze měnit, a jako nejhnusnější řešení je captcha.
Peter45
Profil
Ja by som skor ani nie v php, ale cez JS vypocitanie prikladu trebarz 2+2...js nejak neovladam ak viete hodit nejaky priklad
Peter45
Profil
Aha pozeram ze v tom prvom linku to je...idem to vyskusat
l564
Profil
Peter45:
Na JS zapomeň, když si ho vypnu tak nic nepůjde. PHP jediný řešení
Ernie
Profil
l564:
nejhnusnější řešení je captcha
Smím se zeptat proč?
Přístupy jsou různé, ale captcha je asi nejpoužívanější - ovšem musí obsahovat i zvukovou verzi (jako třeba neoblíbená reCAPTCHA)
Keeehi
Profil
Ernie:
Protože to příšerně otravuje.
Ernie
Profil
Keeehi:
Protože to příšerně otravuje.
To sice ano, ale myslím, že napsat robota, který přelouská příklady typu 1+1 není moc složité.
A v případě jediné kontrolní otázky používané stále dokola - zaprvé je to lehce nabouratelné a zadruhé - není to mnohem otravnější než captcha, která se aspoň mění ? :-)
Keeehi
Profil
Ernie:
To sice ano, ale myslím, že napsat robota, který přelouská příklady typu 1+1 není moc složité.
Ano, pokud se útočník zaměří přímo na tvoji stránku, pak máš problém. Tady se spíše ale jedná o roboty, kteří procházejí internet náhodně a zkouší odeslat kdejaký formulář.
I toto fórum má antispamovou ochranu (JS+PHP) a otravuje tě snad s captchou? Nebo je to tu snad plné spamu od robotů? Ne.
Ernie
Profil
Možná by bylo zajímavé projít české weby nějakým robotem, který by uměl 1+1 a přečíst třeba "dvacet-čtyři" (což je ve zdroji této stránky) v rámci statistik a zjistit, které z těch ochran by prošly.
Ale máte pravdu, že na zběžnou ochranu proti robotům to stačí.
Peter45
Profil
Tak som vyskusal ten generator zda sa to byt guut...len jedna vec: Neviem ci robim nieco spatne no vygeneruje mi to len 2 input polia a 1 textareu + pole pre antispam...OK ale da sa tam nastavit aj povinne a nepovinne pole?
l564
Profil
Peter45:
Ano ale opět úpravou kódu
do if si dáš ($jmeno!="" and $email!="") ...atd
Peter45
Profil
Nech sa paci upravit :-)


<?php 
$dontsendemail = 0;
$possiblespam = FALSE;
$strlenmessage = "";
$email = $_REQUEST['email']; 
$message = $_REQUEST['message']; 
$subject = $_REQUEST['subject']; 
$emailaddress = "moj@mail.eu"; 
function checkcaptcha() {
			session_start();
			if ($_SESSION["pass"] != $_POST["userpass"]) {
				die("Nespravny obrazok");
				return 1;
			}
		}
	
function checkemail($field) {
	// checks proper syntax
	if( !preg_match( "/^([a-zA-Z0-9])+([a-zA-Z0-9._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9._-]+)+$/", $field))
	{
		die("Nesprávny e-mail"); 
		return 1;
	}
}
function spamcheck($field) {
	if(eregi("to:",$field) || eregi("cc:",$field) || eregi("\r",$field) || eregi("\n",$field) || eregi("%0A",$field)){ 
		$possiblespam = TRUE;
	}else $possiblespam = FALSE;
	if ($possiblespam) {
		die("
Popis krátky ");
		return 1;
	}
}
function strlencheck($field,$minlength,$whichfieldresponse) {
	if (strlen($field) < $minlength){
		die($whichfieldresponse); 
		return 1;
	}
}

		if ($dontsendemail == 0) $dontsendemail = checkcaptcha($email);
	
if ($dontsendemail == 0) $dontsendemail = checkemail($email);
if ($dontsendemail == 0) $dontsendemail = spamcheck($email);
if ($dontsendemail == 0) $dontsendemail = spamcheck($subject);
if ($dontsendemail == 0) $dontsendemail = strlencheck($email,10,"email <br />");

if ($dontsendemail == 0) $dontsendemail = strlencheck($subject,5,"subject<br />");

if ($dontsendemail == 0) $dontsendemail = strlencheck($message,10,"message<br />");
if ($dontsendemail == 0) $dontsendemail = strlencheck($emailaddress,8,"Nevybrali ste prijemcu<br />");
if ($dontsendemail == 0) {mail($emailaddress,"Subject: $subject",$message,"From: $email" ); include "odoslane.php";}
?>
l564
Profil
A co s tímto kódem chceš udělat?
Peter45
Profil
No zde by sa malo dat nastavit povinne pole email a subject...ale jak nemam sajn
Ernie
Profil
To je celkem snadné
<?php
if(!isset($_REQUEST['subject']) || $_REQUEST['subject']=="") //a obdobně s $_REQUEST['email']
 {
 die("Předmět je povinná položka");
 }
?>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0