Už vim jak na roboty, ale nevim jak to udělat.. :-)
18 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Hledal sem na netu dost info jak zabránit robotů a už to vim, ale nevim jak to udělat, protože nejsem zkušený programátor. Mám návštěvní knihu a chtěl bych tam přidat pole, u kterého by bylo napsáno: Nech toto pole prázdné a pokud by prázdné bylo, příspěvek by šlo uložit, pokud ne, pokud by tam něco bylo, neuložilo by se to. ps. jinak tohle neni z mý hlavy :-)
-
Co vím, tak nrelativně spolehlicá ochrana před roboty je udělat nejdřív náhled komentáře. Robot se nenamáhá odesílat formulář znova.
-
prazdne pole: <input type="text" name="kontrol_pole"> Nech toto pole prazdne! pak pri zpracovani dat to jen porovnas if($kontrol_pole=="") { vypis prispevek } else { nic nedelej }
-
ja bych mozna pouzil $kontrol_pole==="" a jeste mozna kontrolovat isset()
-
3 rovna se? co to dela?
-
= jendakenda (gonzik.wz.cz) = http://cz2.php.net operace x=1 prirazeni (x=1) testujes, jestli se zdarilo prirazeni, priradis 1 (x==1) podminka (x===1) podminka+stejny typ
-
já myslím že ta nejjednodušší verze je většinou ta správná :) otázka kolik je tři a tři //otázka zůstává vždy stejná odpoved je ve formě číslice nebo slova //je to vlastně jedno záleží na vás if ($odpoved == "6") // může být i "sest" (jak jsem řekl záleží jen na vás) { script pokračuje } else { vypiš chybu o odpovedi }
-
= Jiří Počta (jiripocta.wz.cz) = genialni :) Jen bych volil slozitejsi otazku, aby slovo melo vic, jak 6 znaku
-
vaše rady sou dobré, ale nějak se v tom nevyznam
-
<? Header("Expires: ".GMDate("D, d M Y H:i:s")." GMT"); ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <title>Fórum guildy HoP - Heroes of Paradise</title> </head> <body bgcolor="#333333" text="#FFFFFF" link="#00FF00" vlink="#00FF00" alink="#FF0000"> <table width="0" align="center"> <tr> <td width="0"> <center><font face="Tahoma"color="red">Fórum guildy H<a href="http://dpguild.wz.cz/main.php?page=novinky">o</a>P - Heroes of Paradise</font> <br><br> <hr color="#FFFFFF"> <br> <table border="0" cellspacing="0" cellpadding="0" align="center"> <form action="" method="post"> <tr> <td width=120 class=povinne> MENO: </td> <td> <input type="text" name="meno" size="20" value="<? if ($meno=="" || $email=="" || $popis==""): echo $meno; endif; ?>"> </td> </tr> <tr> <td width=120 class=povinne> EMAIL: </td> <td> <input type="text" name="email" size="20" value="<? if ($meno=="" || $email=="" || $popis==""): echo $email; endif; ?>"> </td> </tr> <tr> <td width=120 class=nepovinne> </td> <td> <? if ($meno=="" || $email=="" || $popis==""): echo $web; endif; ?> <input type="hidden" name="odoslane" value="ano"> </td> </tr> <tr> <td valign=top width=120 class=povinne> TEXT: </td> <td> <textarea cols="25" rows="3" name="popis"><? if ($meno=="" || $email=="" || $popis==""): echo $popis; endif; ?></textarea> </td> </tr> <tr> <td width=120> </td> <td> <center><input type="submit" value="Submit"> <input type="Reset" value="Reset"></center> </td> </tr> </form> </table> <? if ($odoslane=="ano"): if ($meno=="" || $email=="" || $popis==""): echo "<center><br><font class=male>Vyplnte všetky údaje<br></font></center>"; else: $name = "<font class=meno>$meno</font><BR>\n"; $e_mail = "<A class=odkaz HREF=mailto:$email>$email</A><BR>\n"; if ($web!=""): $www = "<A class=odkaz HREF=\"$web\">$web</A><BR>\n"; endif; $cas = "<font class=cas>" . Date("j. " . "m. " . "Y, " . "H:i:s") . "</font><BR>\n"; $popis2 = NL2BR(HTMLSpecialChars($popis)); $zprava = "<BR><font class=text>$popis2</font><BR><BR><HR color=\"#FFFFFF\"><BR>\n\n"; $write = StripSlashes($name . $e_mail . $www . $cas . $zprava); if (File_Exists ("book.dat")): $fp = FOpen ("book.dat", "r"); $data = FRead ($fp, FileSize("book.dat")); FClose($fp); endif; $fp = FOpen ("book.dat", "w"); FWrite ($fp, $write.$data); FClose ($fp); endif; endif; ?> <hr color="#FFFFFF"><br> <? if (File_Exists ("book.dat")): $fp = FOpen ("book.dat", "r"); FPassThru($fp); endif; ?> </td> </tr> </table> </body> ..to je script, který používám, zkoušel jsem to, ale nevim kam to dát :-)
-
A kde je to ošetření proti robotům ? :D
-
<? Header("Expires: ".GMDate("D, d M Y H:i:s")." GMT"); ?> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1250"> <title>Fórum guildy HoP - Heroes of Paradise</title> </head> <body bgcolor="#333333" text="#FFFFFF" link="#00FF00" vlink="#00FF00" alink="#FF0000"> <table width="0" align="center"> <tr> <td width="0"> <center><font face="Tahoma"color="red">Fórum guildy H<a href="http://dpguild.wz.cz/main.php?page=novinky">o</a>P - Heroes of Paradise</font> <br><br> <hr color="#FFFFFF"> <br> <table border="0" cellspacing="0" cellpadding="0" align="center"> <form action="" method="post"> <tr> <td width=120 class=povinne> MENO: </td> <td> <input type="text" name="meno" size="20" value="<? echo $_POST['meno'];?>"> </td> </tr> <tr> <td width=120 class=povinne> EMAIL: </td> <td> <input type="text" name="email" size="20" value="<? echo $_POST['email'];?>"> </td> </tr> <tr> <td width=120 class=povinne> WEB: </td> <td> <input type="text" name="web" size="20" value="<? echo $_POST['web'];?>"> </td> </tr> <tr> <td width=120 class=nepovinne> </td> <td> <input type="hidden" name="odoslane" value="ano"> </td> </tr> <tr> <td valign=top width=120 class=povinne> TEXT: </td> <td> <textarea cols="25" rows="3" name="popis"><? echo $_POST['popis']?></textarea> </td> </tr> <tr> <td valign=top width=120 class=povinne> KOLIK JE 6+6(slovy): </td> <td> <input name="soucet" type="text" value=""> </td> </tr> <tr> <td width=120> </td> <td> <center><input type="submit" value="Submit"> <input type="Reset" value="Reset"></center> </td> </tr> </form> </table> <? if($_POST['soucet']=="dvanáct"){ if ($_POST['odoslane']=="ano"): if ($_POST['meno']=="" || $_POST['email']=="" || $_POST['popis']=="" || $_POST['web']==""): echo "<center><br><font class=male color=\"#FFFFFF\">Vyplnte všetky údaje<br></font></center>"; else: $name = "<font class=meno>".$_POST['meno']."</font><BR>\n"; $e_mail = "<A class=odkaz HREF=mailto:".$_POST['email'].">".$_POST['email']."</A><BR>\n"; if ($_POST['web']!=""): $www = "<A class=odkaz HREF=\"".$_POST['web']."\">".$_POST['web']."</A><BR>\n"; endif; $cas = "<font class=cas>" . Date("j. " . "m. " . "Y, " . "H:i:s") . "</font><BR>\n"; $popis2 = NL2BR(HTMLSpecialChars($popis)); $zprava = "<BR><font class=text>$popis2</font><BR><BR><HR color=\"#FFFFFF\"><BR>\n\n"; $write = StripSlashes($name . $e_mail . $www . $cas . $zprava); if (File_Exists ("book.dat")): $fp = FOpen ("book.dat", "r"); $data = FRead ($fp, FileSize("book.dat")); FClose($fp); endif; $fp = FOpen ("book.dat", "w"); FWrite ($fp, $write.$data); FClose ($fp); endif; endif; ?> <hr color="#FFFFFF"><br> <? if (File_Exists ("book.dat")): $fp = FOpen ("book.dat", "r"); FPassThru($fp); endif; } ?> </td> </tr> </table> </body>
-
díííky mocinky, du to zkusit
-
HUSTý! to je vono, návštěvníci nevidí fórum, kokud neznají heslo... ..jenom takový "pls" co mám smazat, aby se to neptalo na ten web..
-
už sem to vyřešil... dík
-
Roboti (pokud se nemylim) nerozpoznavaji JS, takze lze v nejake hidden polozce predavat libovolny hash prispevku (treba pocet znaku krat pocet mezer, nebo prvnich 5 znaku). V PHP pak jen kontrolovat, jestli je hash odpovidajici. Kod asi takto (bez zaruky - netestoval jsem) Hlavicka: <script type="text/javascript"> function writehash(){ document.f.hash.value=document.f.text.value.substr(0, 5); } </script> Formular: <form name="f" action="..." method="POST" onsubmit="writehash();"> <input type="hidden" name="hash" value="xyz"/> <textarea name="text"></textarea> <button type="submit">Odeslat</button> </form> PHP Kontrola: <? $hash=substr($_POST['text'], 0, 5); if($hash==$_POST['hash']){ ... spravne ... } else { .. BOT ... } ?> Jeidiny problem teto konkretni implementace je, ze pada na retezcich kratsich nez 5 znaku, takze by se muselo pridat do JS, ze ne nema provadet, pokud je prispevek kratky a do PHP, ze pro kratke prispevky je hash prazdny (to se mi ale nechce delat)
-
=tohe (strelka.unas.cz)= A co, kdyz JS nemas? A co kdyz robota ridi clovek a prohlidne si zdrojak a proste robotu jen zmeni nastaveni?
-
A jeste je mozne dat do kodu INPUT, vyplnit a pres JS skryt. Tim padem je to osetrene i bez JS a predpoklada se, ze robot prepise vsechny polozky INPUT, ktere objevi.