Ich habe ein Anmeldeformular mit AJAX, sodass ich das Recaptcha-Bild jedes Mal aktualisieren möchte, wenn ein Fehler auftritt (dh der Benutzername wird bereits verwendet).
Ich suche einen Code, der mit ReCaptcha kompatibel ist, um ihn mit JavaScript neu zu laden.
Mach dir keine Sorgen. Warum das CAPTCHA ändern, wenn der Benutzername vergeben ist?
– SLaks
30. Juli 2010 um 12:25 Uhr
@SLaks: wahrscheinlich, weil er zuerst Captcha überprüft und dann den Benutzer überprüft – und sobald Captcha verwendet wird, ist es nicht mehr gültig. Wenn Sie dies umgekehrt tun, kann der böswillige Benutzer den Server leicht beschädigen und die Liste aller Benutzer mit Brute Force abrufen, ohne mit Captcha belästigt zu werden.
– Tomasz Nurkiewicz
11. Oktober 2011 um 9:50 Uhr
@TomaszNurkiewicz UPDATE: Der böswillige Benutzer kann dasselbe Re-Captcha nicht mehr als einmal zur Validierung einreichen. Also nein, Bruteforce ist hier nicht möglich. Der Grund für die Aktualisierung des Captchas besteht darin, dass der Benutzer es einfach erneut eingeben kann.
– Tonysepie
14. September 2017 um 16:11 Uhr
Ich glaube, ein erfahrener Angreifer könnte Timing-Angriffe ausnutzen, um herauszufinden, welche Daten falsch sind, je nachdem, wo sich die Bot-Validierung befindet. Ich ziehe es vor, meine als erste Prüfung zu behalten und alles sofort abzulehnen, wenn sie fehlschlagen. Dies hilft auch, die Last auf meinem Server zu reduzieren, sodass ich keine DB-Abfragen durchführe, wenn sie sowieso abgelehnt werden
– Steve Byrne
16. Oktober 2018 um 4:33 Uhr
ahmet alp balkan
Verwenden Sie für reCaptcha v2:
grecaptcha.reset();
Wenn Sie reCaptcha v1 verwenden (wahrscheinlich nicht):
Recaptcha.reload();
Dies reicht aus, wenn sich bereits ein geladenes Recaptcha auf dem befindet window.
(Aktualisiert basierend auf dem Kommentar von @SebiH unten.)
Für alle, die das neue reCAPTCHA verwenden: Die Zeile hat sich jetzt zu geändert grecaptcha.reset(); (Dokumentation)
– SebiH
6. Januar 2015 um 8:36 Uhr
Ich benutze das grecaptcha.reset(); für meine Reaktions-Apps, und es funktioniert perfekt
– Yusan
16. April 2016 um 16:41 Uhr
Wenn Sie nicht sicher sind, ob grecaptcha geladen ist, verwenden Sie if (window.grecaptcha) grecaptcha.reset();
– fred727
19. Juli 2016 um 19:39 Uhr
Obwohl dadurch das Captcha neu geladen wird, scheint der Feldwert für die Captcha-Antwort nicht entfernt worden zu sein, sodass mein Formular gültig bleibt.
– Damian Grün
28. September 2016 um 12:51 Uhr
Wenn Sie Version 1 verwenden
Recaptcha.reload();
Wenn Sie Version 2 verwenden
grecaptcha.reset();
Die akzeptierte Antwort kopiert und 3 Jahre später erneut veröffentlicht. Urg.
– Paul Danelli
26. Februar 2020 um 14:03 Uhr
@PRWhitehead Bitte sehen Sie sich den Bearbeitungsverlauf an. Übrigens, danke für die Ablehnung.
– Dasun
28. Februar 2020 um 12:39 Uhr
Ich habe es getan, Sie haben Ihre nicht bearbeitet und Sie haben sie erstmals 3 Monate nach der Aktualisierung der akzeptierten Antwort hinzugefügt, um eine Änderung an der API widerzuspiegeln, die sich auf die Relevanz der ursprünglichen Antwort und Jahre nach ihrer ersten Hinzufügung auswirkt. Ich habe es abgelehnt, weil dies die akzeptierte Antwort nützlicher ist.
– Paul Danelli
29. Februar 2020 um 18:08 Uhr
Ich habe diese Antwort hinzugefügt, weil ich vor demselben Problem stand. Obwohl die akzeptierte Antwort zu diesem Zeitpunkt die richtige Antwort widerspiegelte, war sie nicht klar genug. Zumindest für mich habe ich mich deshalb entschieden, als neue Antwort mit klarer Trennung hinzuzufügen (in der akzeptierten Antwort wurden die Unterschiede zu den Versionen nicht vermerkt).
– Dasun
1. März 2020 um 10:50 Uhr
abhiagNitk
Wichtig: Version 1.0 der reCAPTCHA-API wird nicht mehr unterstützt. Bitte aktualisieren Sie auf Version 2.0.
Sie können verwenden grecaptcha.reset(); um das Captcha zurückzusetzen.
Setzt das reCAPTCHA-Widget zurück. Eine optionale Widget-ID kann übergeben werden, andernfalls setzt die Funktion das erste erstellte Widget zurück. (von der Google-Webseite)
Oder Sie simulieren einfach einen Klick auf den Refresh-Button
// If recaptcha object exists, refresh it
if (typeof Recaptcha != "undefined") {
jQuery('#recaptcha_reload').click();
}
Aus irgendeinem Grund, Recaptcha und grecaptcha sind beide auf meiner Seite undefiniert. Das hat bei mir funktioniert, mit einer kleinen Modifikation: if( $("#recaptcha_reload").length > 0 ){ ....
– Nate-Bit Int
7. Januar 2015 um 23:46 Uhr
Ich habe das verwendet, um zu wissen, wann die Iteration eines Arrays beendet ist, ohne seine Elemente zu zählen.
Wenn Sie showRecaptcha aufrufen, wird das Captchadiv mit einer neuen Recaptcha-Instanz gefüllt.
Aus irgendeinem Grund, Recaptcha und grecaptcha sind beide auf meiner Seite undefiniert. Das hat bei mir funktioniert, mit einer kleinen Modifikation: if( $("#recaptcha_reload").length > 0 ){ ....
– Nate-Bit Int
7. Januar 2015 um 23:46 Uhr
Ich habe das verwendet, um zu wissen, wann die Iteration eines Arrays beendet ist, ohne seine Elemente zu zählen.
– m3nda
16. Januar 2015 um 22:20 Uhr
Marcel C.
Für AngularJS-Benutzer:
$window.grecaptcha.reset();
In meinem Fall ohne $ – window.grecaptcha.reset();
– Tonysepie
14. September 2017 um 16:09 Uhr
12979600cookie-checkWie lade ich ReCaptcha mit JavaScript neu?yes
Mach dir keine Sorgen. Warum das CAPTCHA ändern, wenn der Benutzername vergeben ist?
– SLaks
30. Juli 2010 um 12:25 Uhr
@SLaks: wahrscheinlich, weil er zuerst Captcha überprüft und dann den Benutzer überprüft – und sobald Captcha verwendet wird, ist es nicht mehr gültig. Wenn Sie dies umgekehrt tun, kann der böswillige Benutzer den Server leicht beschädigen und die Liste aller Benutzer mit Brute Force abrufen, ohne mit Captcha belästigt zu werden.
– Tomasz Nurkiewicz
11. Oktober 2011 um 9:50 Uhr
@TomaszNurkiewicz UPDATE: Der böswillige Benutzer kann dasselbe Re-Captcha nicht mehr als einmal zur Validierung einreichen. Also nein, Bruteforce ist hier nicht möglich. Der Grund für die Aktualisierung des Captchas besteht darin, dass der Benutzer es einfach erneut eingeben kann.
– Tonysepie
14. September 2017 um 16:11 Uhr
Ich glaube, ein erfahrener Angreifer könnte Timing-Angriffe ausnutzen, um herauszufinden, welche Daten falsch sind, je nachdem, wo sich die Bot-Validierung befindet. Ich ziehe es vor, meine als erste Prüfung zu behalten und alles sofort abzulehnen, wenn sie fehlschlagen. Dies hilft auch, die Last auf meinem Server zu reduzieren, sodass ich keine DB-Abfragen durchführe, wenn sie sowieso abgelehnt werden
– Steve Byrne
16. Oktober 2018 um 4:33 Uhr