Autor | Zpráva | ||
---|---|---|---|
Hava Profil * |
#1 · Zasláno: 25. 2. 2010, 10:45:40
Ahoj vím že už se to tady několikrát řešilo, ale bohužel mi to pořád nejde nějak do hlavy a nebo mi to snejně formulář nechraní.
Zkusil jsem tento script jako ochranu proti spma robotum: <span id="spamprotirobotum">Ochrana proti spamu. Napište prosím číslici čtyři: <input type="text" name="robot" value="" id="protirobotum"><input type="hidden" name="kontrolni" value="ok"></span> <script> /* tento skript vloží do příslušného políčka */ document.getElementById("protirobotum").value="4"; document.getElementById("spamprotirobotum").style.display = "none"; </script> dále pak kontroluji: <?php $BudemeZobrazovat=true; if (isSet($_POST["odeslano"])) { if (strlen($_POST["vzkaz"])==0 || strlen($_POST["vzkaz"])>700 || strlen($_POST["jmeno"])==0 || strlen($_POST["email"])==0 && ((!isset($_POST['robot'])) || ($_POST['robot']!='4'))) { echo "Nevyplnili jste všechny údaje a nebo je vzkaz příliš velký!"; } else { $BudemeZobrazovat=false; ?> <?php include "odesli.php"?> <?php } } if ($BudemeZobrazovat): ?> Nevím zda je to šťastné řešení a nebo zda nepužít něco jiného? Pořád čtu o captche ale bohužel jsem nikde nenašel srozumitelný návod jak na ní. Všem moc děkuji. |
||
Majkl578 Profil |
#2 · Zasláno: 25. 2. 2010, 10:48:15
Na captchu bych z vlastní zkušenosti doporučil reCaptchu, je to již hotový systém, který používáš přes API.
Zalíbila se mi jejich myšlenka - každý captcha "kód" nějak pomůže - využívá lidí k rozpoznávání znaků, které nekodáže OCR při digitalizaci novin přečíst. |
||
Hava Profil * |
#3 · Zasláno: 25. 2. 2010, 12:57:20
Jo na tu jsem taky koukal ale popravdě jsem z jejich stránek moc nepochopil jak jí implementovat do mého formuláře:
<?php $BudemeZobrazovat=true; if (isSet($_POST["odeslano"])) { if (strlen($_POST["vzkaz"])==0 || strlen($_POST["vzkaz"])>700 || strlen($_POST["jmeno"])==0 || strlen($_POST["email"])==0 && ((!isset($_POST['robot'])) || ($_POST['robot']!='4'))) { echo "Nevyplnili jste všechny údaje a nebo je vzkaz příliš velký!"; } else { $BudemeZobrazovat=false; ?> <?php include "odesli.php"?> <?php } } if ($BudemeZobrazovat): ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"]?>"> <table class="tabulka_forum"> <tr> <td class="text_jmeno">Jméno:</td> <td><input size="35" name="jmeno" cols="35" value="<?php if (isSet($_POST['jmeno'])) echo $_POST['jmeno'];?>"></td> </tr> <tr> <td class="text_jmeno">Email:</td> <td><input size="35" name="email" cols="35" value="<?php if (isSet($_POST['email'])) echo $_POST['email'];?>"></td> </tr> <tr> <td class="text_jmeno">Nadpis tématu:</td> <td><input size="55" name="nadpis" cols="55" value="<?php if (isSet($_POST['nadpis'])) echo $_POST['nadpis'];?>"></td> </tr> <tr> <td class="text_jmeno">Váš vzkaz:</td> <td><textarea rows="6" name="vzkaz" cols="40"><?php if (isSet($_POST['vzkaz'])) echo $_POST['vzkaz'];?></textarea></td> </tr> <tr> <td class="text_jmeno"> </td> <td></td> </tr> </table> <input type="hidden" name="odeslano" value="true"> <input type="Submit" name="odeslat" value=">> Uložit"> </form> Na svých stránkách uvádějí toto že stačí vložit mě se to bohužel nepovedlo, mužeš mi poradit jak to propojit s tím vrchním kódem? require_once('recaptchalib.php'); $publickey = "..."; // you got this from the signup page echo recaptcha_get_html($publickey); require_once('recaptchalib.php'); $privatekey = "..."; $resp = recaptcha_check_answer ($privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]); if (!$resp->is_valid) { die ("The reCAPTCHA wasn't entered correctly. Go back and try it again." . "(reCAPTCHA said: " . $resp->error . ")"); } |
||
Majkl578 Profil |
#4 · Zasláno: 25. 2. 2010, 14:37:27
Zkus něco takového:
<?php //recaptcha require_once('recaptchalib.php'); //tyto klíče získany při registraci na recaptcha.net $publicKey = '...'; $privateKey = '...'; $budemeZobrazovat=true; if (isset($_POST["odeslano"])) { $captchaResponse = recaptcha_check_answer( $privatekey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"] ); if (strlen($_POST["vzkaz"]) == 0 || strlen($_POST["vzkaz"]) > 700 || strlen($_POST["jmeno"]) == 0 || strlen($_POST["email"]) == 0) { echo "Nevyplnili jste všechny údaje a nebo je vzkaz příliš velký!"; } elseif (!$captchaResponse->is_valid) { echo "Captcha kód nebyl správně vyplněn"; } else { $budemeZobrazovat = false; include "odesli.php"; } } if ($budemeZobrazovat) { ?> <form method="post" action="<?php echo $_SERVER['PHP_SELF']?>"> <table class="tabulka_forum"> <tr> <td class="text_jmeno">Jméno:</td> <td><input size="35" name="jmeno" cols="35" value="<?php if (isset($_POST['jmeno'])) echo $_POST['jmeno'];?>"></td> </tr> <tr> <td class="text_jmeno">Email:</td> <td><input size="35" name="email" cols="35" value="<?php if (isset($_POST['email'])) echo $_POST['email'];?>"></td> </tr> <tr> <td class="text_jmeno">Nadpis tématu:</td> <td><input size="55" name="nadpis" cols="55" value="<?php if (isset($_POST['nadpis'])) echo $_POST['nadpis'];?>"></td> </tr> <tr> <td class="text_jmeno">Váš vzkaz:</td> <td><textarea rows="6" name="vzkaz" cols="40"><?php if (isset($_POST['vzkaz'])) echo $_POST['vzkaz'];?></textarea></td> </tr> <tr> <td class="text_jmeno"> </td> <td></td> </tr> <tr> <td class="text_jmeno">Captcha:</td> <td><?php echo recaptcha_get_html($publicKey); ?></td> </tr> </table> <input type="hidden" name="odeslano" value="true"> <input type="Submit" name="odeslat" value=">> Uložit"> </form> <?php } ?> Do těch dvou proměnných na začátku (*Key) musíš doplnit klíče, které dostaneš po bezplatné registraci na jejich webu. |
||
Hava Profil * |
#5 · Zasláno: 25. 2. 2010, 16:17:32
Tak jsem po registraci vyplnil tyto dva kliče:
$publicKey = '...'; $privateKey = '...'; Ale stejně mi to hlasí: To use reCAPTCHA you must get an API key from http://recaptcha.net/api/getkey Stačí vyplnit pouze toto a nebo se ještě něco někde musí nastavit? treba tady?: recaptchalib.php |
||
Hava Profil * |
#6 · Zasláno: 25. 2. 2010, 16:22:12
Už to mám bylo tam malé a velké k v privateKey...
Myslíš si že takováto ochrana je dostačující a nebo je lepší třeba udělat nutnou registraci do fóra a až jako přihlášený uživatel že budeš moct vkládat příspěvky? |
||
Majkl578 Profil |
#7 · Zasláno: 25. 2. 2010, 19:21:48
Hava:
To si myslím záleží na povaze dané diskuze. Třeba tady na DJPW můžou přispívat jak registrovaní, tak neregistrovaní. A tento přístup se mi líbí. Nerad bych nutil uživatele registrovat se jen proto, aby mohl napsat jeden příspěvek (a pak už tam nikdy nezavítal). |
||
Časová prodleva: 14 let
|
0