Autor Zpráva
Anonymní
Profil *
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í
Profil *
Ahoj

Jsem ochoten někomu zaplatit za přidání této funkce.

David
Hooonza
Profil *
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í
Profil *
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
Profil *
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í
Profil *
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
Profil *
David
:-) Super:-) A máš to zadarmo:-)
Doufám, že to bude dobře fungovat :-)
Hooonza
Profil *
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
Profil *
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í
Profil *
Funguje jak má. Ani jeden spam :)
Co jsem dlužen?

David
Hooonza
Profil *
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
Profil *
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
Profil *
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
Profil *
Ahoj, ten script co jsi popsal. Nasadil jsem ho. To ze se nema nic zobrazovat je dobre nebo spatne?
souki
Profil
labib
Dobře :) Rsep funguje to nebo ne?
hula
Profil *
už tři hodiny je moje fórum bez spamu, bojim, bojim, ale vypadá to slibně. díky moc.
A
Profil *
Tak to je parada :)
spammer
Profil *
a jaka je tu ochrana?
spammer
Profil *
Jinak tady je ochrana pro mini BB přes opisování obrázku - tzv. kapča :-))
http://www.minibb.net/captcha.html

Jakub
djlj
Profil
spammer
Přečti si pozorně (určitě pozorněji než teď) výše uvedené příspěvky.
spammer
Profil *
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
Profil
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
Profil *
diky, jede to :-)
Bubák
Profil
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
Profil *
existuje i jina moznost nez pouziti captcha, javascripru a ruzne jine metody nez neco ppisovat?
diskutujici
Profil *
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
Profil *
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
Profil
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
Profil *
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
Profil
[#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).

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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