Autor Zpráva
Kuman
Profil *
Hojas, našel jsem tento script -
<script type="text/javascript">
document.getElementById('continue').disabled = false;
document.getElementById('continue').value = "DON'T CLICK! Wait 5 seconds...";
setTimeout(function(){
  document.getElementById('continue').disabled = false;
  document.getElementById('continue').value = "Continue";
}, 5000);
</script>

<input type="submit" class="button button-primary" value="Log In" id="continue"/> 

Je perfektní ale já potřebuji:
1 - Aby se zobrazoval opdočet 5..4...3 atd. ( Bonus)
2 - Aby když příjde robot na mou stránku a začne na to tlačítko klikat tak mu to znova načte stránku, protože člověk tam vidí DON'T CLICK!! (TOHLE POTŘEBUJI)
Moderátor Chamurappi: Jak to souvisí s databázemi? Přesouvám do kategorie JavaScript.

A nyní bych se chtěl zeptat jestli je tady nějaký bitcoin api blockchain expert ? DÍKY !!
Moderátor Chamurappi: A jak tohle souvisí s JavaScriptem? Vždyť to ani není opravdová otázka, na to zde nikdo odpovídat nebude. Máš-li nějaký konkrétní dotaz nesouvisející s uvedeným skriptem, polož ho prosím odděleně.
bestik_63
Profil
ahoj zkus toto:
<input type="submit" class="button button-primary" value="Log In" id="continue"/ onClick="obnov(casovac)"> 
<script type="text/javascript">
document.getElementById('continue').disabled = false;
document.getElementById('continue').value = "DON'T CLICK! Wait 5 seconds...";
var casovac;
function zapni(){
    return casovac = setTimeout(function(){
      document.getElementById('continue').disabled = false;
      document.getElementById('continue').value = "Continue";
    }, 5000);    
}
function obnov(id){
    clearTimeout(id);
    document.getElementById('continue').value = "DON'T CLICK! Wait ANOTHER 5 seconds...";
    return id = zapni();    
}
casovac = zapni();

</script>

ten odpočet bych asi řešil cyklem for kde bude za sebou 5 časovačů po 1 vteřině a pokaždé vymění document.getElementById('continue').value = "DON'T CLICK! Wait 5 seconds..."; počet vteřin
Kuman
Profil *
Paráda díky :) V javascriptu se vůbec nevyznám :) jakým cyklem for :? :D Prosím přidejte se kompletní kód :)


Takže jestli jsem to pochopil správně :
Tvůj script dělá toto:

1 - Člověk příjde na stránku
2 - Uvidí Dont click wait 5 seconds
3 - Neklikne a počká
4 - Objeví se continue a on klikne a pokračuje tam ka má

NEBO

1 - Příjde robot/člověk
2 - Uvidí Don't click wait 5 seconds
3 - Klikne a nepočka
4 - Prostě se mu načte stránka
5 - Až dokud nepočká :)

JETO TAK ??
bestik_63
Profil
ahoj,
koukám že ještě nikdo neměl čas odpovědět. Snad se na to dneska dostanu, nemám moc čas.
Ještě mě napadlo, pokud se chceš vyvarovat aby ti na to klikali roboti, tak 1) nejede jim většinou javascript, takže kliknou rovnou, 2) asi bych proti nim udělal ochranu. Třeba javascriptem vložil do formuláře skryté pole (<input type="hidden">), podle kterého poznáš, jestli je to robot, člověk bez zaplného javascriptu nebo člověk se zaplým javascriptem. Sice tím zrušíš možnost použití lidí s prohlížečem bez zapnutého javascriptu, ale takových je minimum, vůbec bych se toho nebál.
Chamurappi
Profil
Reaguji na bestika_63:
return id = zapni();
Co si slibuješ od přiřazení do lokální proměnné id, která vzápětí zanikne? S proměnnou casovac tato úprava nehne, proto další klik časovač nezastaví.

Nepochopil jsem, proč se v kódu dvakrát nastavuje disabled na false. (Vím, že už to tak měl Kuman ve svém dotazu.)
Pro pořádek upozorňuji, že kdyby disabled někdy bylo true, tak událost onclick nikdy nenastane.
Kuman
Profil *
bestik_63 - Ok, takže ty říkáš že robot na to klikne takže tato ochrana je dobrá ? :D

- Co tím <input type="hidden"> budu sledovat ? Jak to jako bude fungovat ? :)

Jinak Díky
bestik_63
Profil
ahoj, tak snad je to už vpořádku.
<form action="pokus.php" onSubmit="return odesli()" method="post">
    <input type="submit" class="button button-primary" value="Log In" id="continue"/ onClick="obnov(casovac)">
    <input type="hidden" name="odeslat" value="0" id="odeslat"> 
</form>
<script type="text/javascript">
var casovac;
document.getElementById('continue').value = "DON'T CLICK! Wait 5 seconds...";
function odesli(){
    if(document.getElementById('odeslat').value == "1")
        return true;
    else
        return false;    
}
function zapni(another,pocet){
    casovac = setTimeout(function(){
        document.getElementById('continue').value = "DON'T CLICK! Wait "+another+pocet+" seconds...";
        if(pocet>0)
            zapni(another,pocet-1);
        else{
            document.getElementById('continue').value = "Continue";
            document.getElementById('odeslat').value = "1";
        }
    },1000);
}
function obnov(id){
    if(document.getElementById('odeslat').value == "0"){
        clearTimeout(id);
        document.getElementById('continue').value = "DON'T CLICK! Wait ANOTHER 5 seconds...";
        zapni("ANOTHER ",4);
    }
}
zapni("",4);
</script>
mělo by to být podle [#3] Kuman
[#5] Chamurappi
samozřejmě máš pravdu. Stačí pouze return zapni();
[#6] Kuman
teďka pokud uděláš php skript pokus.php tak si v něm můžeš zkontrolovat jestli je proměnná $_POST['odeslat'] == 1, pokud ne, tak se nevykonal javascript a tím pádem, pravděpodobně nejde o člověka ale o robota.
pozn. tato ochrana nefunguje na 100%, je to jen jedna z nejjednodušších prvků ochrany :-)
Kuman
Profil *
Díky ! :)

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: