| Autor | Zpráva |
|---|---|
| Anonymní |
#1 · Zasláno: 29.10.2006 19:20:30
Zdravím
Používám diskusni forum miniBB a rád bych zavedl stejnou ochranu jako je v tomto foru (pri odesilani formulare se do nej vlozi JavaScriptem automaticky cislo, ktere by robot vlozit nemohl). Můzete mi prosim poradit jaká šablony či skripty upravit? Bohužel se v nich nedokážu zorientovat sám. David |
| Anonymní |
#2 · Zasláno: 1.11.2006 08:24:56
Ahoj
Jsem ochoten někomu zaplatit za přidání této funkce. David |
| Hooonza |
David
No, nemělo by to být tak složité... MiniBB nepoužívám, takže moje nápady ber jako inspiraci k otestování na testovacím fóru, ne jako definitivní řešení, před zkoušením si všechny soubory zazálohuj, aby, v případě neúspěchu, ses mohl vrátit k původním souborů! Nemůžu ručit za chyby, které se mohou objevit:-) Teprve, když bude skript šlapat (zkusíš si i simulovat odeslání příspěvku robotem tak, že odstraníš dočasně javascript document.getElementById("protirobotum").value="4";), použij jej na ostrém fóru:-) Teoreticky: roboty neumí javascript, pomocí něj tedy do vzkazu přidáš hodnotu, kterou znáš Ty a javascript, ale nepozná ji robot. Roboty odeslílají všechny proměnné, které ve formuláři najdou, toho se dá taky někdy využít, ale tady se to nepoužívá. Ve zpracovávacím skriptu potom otestuješ, jestli je hodnota přítomná nebo ne, pokud ne - tak nazdar. Skritp se dá tady z fóra okopírovat - snad Yůhů promine, ale můžeš si vymyslet i svůj. Protože nevím přesně, jak fórum funguje, přidávám k němu identifikaci odesílání příspěvku. Do souboru main_post_form.html vložíš např. za </textarea> skript: ***** <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>***** Teď testík, pokud je odesílána zpráva, jestli hodnota robot=4. Do souboru index.php, např. hned za úvodní poznámku, vložíš skript: ***** if (($_POST['kontrolni']=='ok')&&($_POST['robot']!='4')) die ('Neoprávněný přístup.');***** Tento skript by měl zajistit, že pokud došlo k odeslání příspěvku ($_POST['kontrolni']=='ok'), který odeslal robot, který neumí javascript a teda neví, že proměnná robot se má = 4 ($_POST['robot']!='4'), dojde k ukončení skriptu s hláškou. Místo die ('Neoprávněný přístup.') se dá použít i jiné ukončení, exit(); - bez hlášky, ta je robotu stejně ukradená, nebo třeba přesměrování na úvodní stránku... Moderátor Majkl578: Kód prosím vkládej do tagu [pre], stačí kliknout na
![]() |
| Anonymní |
#4 · Zasláno: 1.11.2006 17:56:53
Díky za popis. To mi je vše jasné, používám tento systém ochrany na jiných částech webu, které jsem si napsal sám.
Můj problém spočívá v tom, že se nejsem schopen zorientovat v miniBB - tedy do jaké šablony vložit JavaScrit + do jakých php skriptů vložit kontrolu. David |
| Hooonza |
#5 · Zasláno: 1.11.2006 19:24:33
David
Psal jsem to: Do souboru main_post_form.html vložíš např. za </textarea> skript: ... a Do souboru index.php, např. hned za úvodní poznámku (i když to může klidně být hned za <?php ) Odhadem, ale mělo by to šlapat. Podívej, kde se vytváří text vzkazu - tam je třeba doplnit javaskript. Neviděl jsem tam jiný template s textareou. Podívej, jaký má ten formulář action - index.php, tam je to třeba zhodnotit... Zkus to, jak píši, pokud to nepojede, dej vědět. |
| Anonymní |
#6 · Zasláno: 2.11.2006 08:24:09
Aha,
omlouvám se, nejsem pozorný:( Provedl jsem to. Vše funguje jak má. Zítra uvidíme zda to skutečně odfiltrovalo robory. David |
| Hooonza |
#7 · Zasláno: 2.11.2006 08:38:55
David
:-) Super:-) A máš to zadarmo:-) Doufám, že to bude dobře fungovat :-) |
| Hooonza |
David
Napadá mě přesto, že ta ochrana, kterou jsem ti psal, může selhat - jestliže si roboty budou pamatovat starý odesílací formulář, ve kterém není proměnná "kontrola", takže se vypnutí spamu vyhnou. Řešením by bylo zadat do index.php spíš tento kontrolní skript if ( (isset($_POST['postText'])) && ($_POST['robot']!='4') ) die ('Neoprávněný přístup.');postText - tam by mělo být jméno textarey, do které se píšou vzkazy. Dívám se, že tady u Yůhůa se jmenuje "poslText", v souborech, které jsem stáhl z miniBB.net se jmenuje "postText", zapiš tam to jméno, co tam máš ty, tzn to, co najdeš ve svém souboru main_post_form.html v tagu <textarea> jako name=***. Tím se otestuje existence odeslaného vzkazu a mělo by to testovat i v případě starého formuláře, tahle proměnná tam byla. |
| Hooonza |
David
Ještě malé vylepšení (kdyby to házelo chybu "Notice - Undefined variable: ...") if ( (isset($_POST['postText'])) && ((!isset($_POST['robot'])) || ($_POST['robot']!='4') ) ) die ('Neoprávněný přístup.'); |
| Anonymní |
#10 · Zasláno: 3.11.2006 12:43:26
Funguje jak má. Ani jeden spam :)
Co jsem dlužen? David |
| Hooonza |
#11 · Zasláno: 3.11.2006 14:17:35
David
:-) Super! Jestli chceš, pošli za mě něco na dobročinné účely - třeba http://www.darcovskasms.cz/, http://www.charita.cz/. Nebo se s cílem můžeš inspirovat tady: http://hoowoo.info/?q=spirit&f=1089996724-pomaham-pomahas-pomahejme . Vážně:-) Díky:-) |
| Kepi |
#12 · Zasláno: 14.2.2007 00:16:35
taktéž díky za rychlou pomoc. Není problém to vymyslet, ale najít čas. Poslal jsem za tebe něco dětem :)
|
| SE cz |
#13 · Zasláno: 17.3.2007 10:57:31
Super vychytávka, jen mám jiný problém, jak zabránit spamům v registraci v miniBB? Zkoušel jsem použít onu fintu a vložil jsem script do souboru "user_dataform.html", ale spamy se stále registrují. Zřejmě je nutné vložit "if ( (isset($_POST['postText'])) && ((!isset($_POST['robot'])) || ($_POST['robot']!='4') ) ) die ('Neoprávněný přístup.'); " také do jiného souboru, nevím však kde. Umíte mi někdo poradit? :-)
|
| labib |
#14 · Zasláno: 20.5.2007 12:22:43
Ahoj, ten script co jsi popsal. Nasadil jsem ho. To ze se nema nic zobrazovat je dobre nebo spatne?
|
| souki Člen |
#15 · Zasláno: 20.5.2007 12:24:24
labib
Dobře :) Rsep funguje to nebo ne? |
| hula |
#16 · Zasláno: 6.7.2007 20:50:48
už tři hodiny je moje fórum bez spamu, bojim, bojim, ale vypadá to slibně. díky moc.
|
| A |
#17 · Zasláno: 29.8.2007 13:52:00
Tak to je parada :)
|
| spammer |
#18 · Zasláno: 30.10.2007 18:27:07
a jaka je tu ochrana?
|
| spammer |
Jinak tady je ochrana pro mini BB přes opisování obrázku - tzv. kapča :-))
http://www.minibb.net/captcha.html Jakub |
| djlj Člen |
#20 · Zasláno: 30.10.2007 18:31:55
spammer
Přečti si pozorně (určitě pozorněji než teď) výše uvedené příspěvky. |
| spammer |
#21 · Zasláno: 30.10.2007 18:36:07
spammer
Přečti si pozorně (určitě pozorněji než teď) výše uvedené příspěvky. Nerozumím ti.... Proč si mám číst něčí nefunkční návod když do BB existuje modul. |
| djlj Člen |
spammer
Je to funkční, jak je jistě vidno i z této diskuse. A mimochodem si zkus přečíst i pravidla diskuse, především tento bod: Nevkládejte do svých textů podpisy ani podpisové odkazy. — Moderátor (M): Již jsem příspěvky, na něž upozorňuješ, umravnil. — |
| ja |
#23 · Zasláno: 24.4.2008 18:02:01
diky, jede to :-)
|
| Bubák Člen |
#24 · Zasláno: 29.8.2008 15:53:44
„přes opisování obrázku - tzv. kapča :-))“
Obrázková CAPTCHA je jedna z mnoha, "popularutu" si zasloužila tím, že je někdy čitelnější pro proboty, než pro lidi. |
| prochazka.zde.cz |
#25 · Zasláno: 29.8.2008 19:17:29
existuje i jina moznost nez pouziti captcha, javascripru a ruzne jine metody nez neco ppisovat?
|
| diskutujici |
#26 · Zasláno: 21.9.2008 10:48:16
„Super vychytávka, jen mám jiný problém, jak zabránit spamům v registraci v miniBB? “
Potřebuji vyřešit stejný problém, do fóra mi už roboti, také díky tomuto skriptu, spam nepřidávají, ale stále se registrují a bohužel je jich hodně. Netušíte někdo, jak na to? |
| jajaaaa |
#27 · Zasláno: 15.12.2009 14:39:32
Ahoj, resim stejny problem. Pouziti placeneho pluginu mi neprijde vhodne. Nechci navstevniky otravovat opisovanim cehokoli, proto jsem se rozhodl, ze do formulare pridam dalsi kolonku, kde uzivatel bude muset vyplnit aktualni rok. Pokud bude mit zapnuty JS, kolonku skryju a doplnim za nej. To by problem nebyl. Jen nejsem schopny se zorientovat v kodu minibb a nevim kam zapsat kontrolu zadaneho cisla a pokud nebude spravne, tak zastavit posilani a zobrazit znovu formular.
Poradi nekdo? Diky |
| Chamurappi Moderátor |
#28 · Zasláno: 15.12.2009 14:53:57
Reaguji na jajaaau:
Na této diskusi je kontrola někde na začátku souboru bb_func_pthread.php. if ($HTTP_POST_VARS['robot'] != "24") die ('Nevyplnili jste správně políčko na ochranu proti spamu.'); |
| jajaaaa |
#29 · Zasláno: 16.12.2009 09:02:53
no jo, ale kdyz to udelam pomoci die, tak pri nespravnem zadani to skonci cele chybovou hlaskou, ale me jde o to, aby se formular zobrazil znovu jen s varovanim.
|
| Majkl578 Moderátor |
#30 · Zasláno: 16.12.2009 10:38:36
[#28] Chamurappi
Pokud by to chtěl jajaaaa použít, doporučuji použít $_POST, $HTTP_POST_VARS je zastaralé. [#29] jajaaaa Šlo by to řešit buď nějakou proměnnou, která by informovala o chybě nebo třeba vyhozením výjimky a zachycením na správném místě. Možností je několik, vhodnost každého záleží na struktuře aplikace (validace). |