Autor Zpráva
Acemason
Profil
mám prosbičku, nevím si rady se scriptem (kontrolním kódem), který má hlídat spamové roboty.
Potřebuji, aby se formulář neodeslal bez zadání správného čísla. Jsem asi trubka , ale nevím jak správně zapsat"onSubmit="
stránka: http://www.acemasons.wz.cz/formular.html
Nebo nevíte o nějakém asp scriptu (javasriptu, captcha apod.), který bych mohl umístit jednoduše do formuláře?
Budu moc vděčný za radu.
Joker
Profil
Acemason
Nechci být pesimista, ale podle mě Javascriptové "neodeslání" formuláře nepomůže, protože roboti budou nějaký Javascript vesele ignorovat a prostě data odešlou na adresu, která je v atributu action u formuláře.
Acemason
Profil
Díky, a nevíš o nějakém jiném zabezpečení formuláře, které by roboty zastavilo?
Medvídek
Profil
Acemason
Třeba jako je na této diskusi:

<span id="spamprotirobotum">Ochrana proti spamu. Napište prosím číslo dvacet: <input type="text" name="robot" value="" id="protirobotum"></span>

<script>
/* tento skript vloží do příslušného políčka  */
document.getElementById("protirobotum").value="20";
document.getElementById("spamprotirobotum").style.display = "none";
</script>
Měsíček
Profil
Normálně, ovšem na straně serveru (PHP, ASP ...).
Acemason
Profil
Díky moc, ale jak poté (v asp, nebo v javascriptu) ošetřím, aby robotem odeslaný formulář bez tyto hodnoty vůbec neodešel? (nebo byl přesměrován na jinou stránku)
imploder
Profil
Clen
V ASP vubec netusim, ale v javascriptu to proste zajistit nepujde. Robot totiz ten javascript vubec nespusti. Ale to nevadi - formular odejde, na serveru se to cislo overi a podle toho se rozhodne o vlozeni/zahozeni.

Javascript se jako ochrana pred roboty pouziva prave proto, ze ho ignoruji. Kdyz teda ve formulari neco javascriptem zmenis, tak v normalnim (ehm... v tomhle teda ne :)) prohlizeci se to projevi, zatimco robot to necha tak. Tak je mozne robota rozeznat.

Zaroven by melo pokud mozno jit odeslat formular i bez JS - pak, jako tady, tu zmenu (vyplneni spravneho cisla) musi udelat uzivatel.
Acemason
Profil
Děkuju všem za nápady, nakonec jsem našel na webu vyhovující captchu v asp.
http://thenetguys.us/Home/Encode.asp
imploder
Profil
Acemason
CAPTCHA (tj. úkolování člověka, aby prokázal, že je člověk) už z principu zrovna vyhovující není. Když existují minimálně stejně vyhovující neviditelná řešení. Tamta captcha je úplně blbá, pochybuju, že to zrnění to nějak vytrhne. Akorát je pak protivné to číst lidem.
Acemason
Profil
Upravil jsem ji tak, aby se to dalo alespoň přečíst a dle potřeby se dá upravovat i to "zrnění".
imploder
Profil
Acemason
To pak zase přečtou roboti. Jen pro představu, jaké captchy uměl před rokem a půl překonat jeden ruský spambot. To bylo před rokem a půl, nové verze toho spambota umí údajně i se 100% úspěšností přečíst "neporazitelné" captchy na googlu. Pokud není obrázek vážně promakaný, proti schopnějším robotům už dneska nefunguje. A bude jenom hůř, jen uživatele bude to opisování otravovat pořád stejně.

Nechápu, proč nepoužiješ nějakou JS ochranu nebo past s tlačítkama a nevyplňovanýma skrytýma políčkama. I když nepochybuju, že i tohle se roboti budou snažit překonat, je tam větší výběr různých variant zabezpečení a něco z toho určitě zabere. Zatím v tom roboti zřejmě moc nepokročili, jak je vidět na nezaspamovanosti této diskuze a jiných stránek s podobným řešením.
Acemason
Profil
Uvidím jak to půjde dál, třeba se poučím a dám na tvojí radu (taky až budu mít víc času na pokusy).
horava2
Profil
pouzil jsem tento kod:

<span id="spamprotirobotum">Ochrana proti spamu. Napište prosím číslo dvacet: <input type="text" name="robot" value="" id="protirobotum"></span>

<script>
document.getElementById("protirobotum").value="20";
document.getElementById("spamprotirobotum").style.display = "none";
</script>


Ale nejde to.
script jsem vlozil do hlavicky a input tam kde potrebuji.
ale at zadam do input cokoli, tak stejne to projde.
DJ Miky
Profil
Musíš ještě na straně serveru (třeba PHP) kontrolovat, zda je v poli robot zadáno 20.
horava2
Profil
Musíš ještě na straně serveru (třeba PHP) kontrolovat, zda je v poli robot zadáno 20.

napr. takto ?

<?php

session_start();

if(strtolower($_POST["robot"]) == "20") 
{
	echo("Uzivatel");
} else {
	echo("Robot");
}

?>

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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