Bild lässt sich nicht per AJAX aktualisieren.
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
alpha
bild
bot
buchstabe
check
code
datum
eintrag
filter
formular
hauptproblem
header
laden
last
schriftart
target
type
url
vermutung
zahl
-
Hallo Zusammen,
Ich habe ein Formular mit einem Captcha. Wenn alles ausgefüllt ist und abgeschickt wird, wird ein Bereich kurz ausgeblendet und anschließend aktualisiert und wieder eingeblendet.
Bei den Einträgen funktioniert das auch soweit, auch das Captcha verschwindet kurz und taucht wieder auf, allerdings bleiben die Buchstaben immergleich. Wenn man die gesamte Seite reloaded allerdings hat man andere Buchstaben und Zahlen. Was mache ich genau falsch?
Einmal das Captcha im Formular:
<div class="2u"> <div id="gb_reload_ca"> <img src="Captcha/captcha.php" name="Captcha" style='width: 189px; height: 40px; border:none;'> </div> </div>
einmal das JS:
<script type="text/javascript"> $(document).ready(function() { $("#guestbook_form").submit(function() { var gb_name = $("#gb_name").val(); var gb_email = $("#gb_email").val(); var gb_message = $("#gb_message").val(); var gb_sicherheitscode = $("#gb_sicherheitscode ").val(); if(gb_name == ""){ $(".errormsg").addClass('active_err'); $(".errormsg").html("Bitte geben Sie einen Namen an."); } else if(gb_message == ""){ $(".errormsg").addClass('active_err'); $(".errormsg").html("Bitte füllen Sie das Textfeld aus."); } else if(gb_sicherheitscode == ""){ $(".errormsg").addClass('active_err'); $(".errormsg").html("Bitte füllen Sie den Sicherheitscode aus."); } else{ $.ajax ({ type: "POST", url: "js/save_guestbook.php", data: "gb_name=" + gb_name + "&gb_email=" + gb_email + "&gb_message=" + gb_message + "&gb_sicherheitscode=" + gb_sicherheitscode, success: function(msg) { $(".errormsg").addClass('active_success'); $(".errormsg").html(msg); $("form input[type=text], form textarea").val(''); $("#areacount").html(200); //////////LADEN $("#gb_reload").animate({opacity:"0", filter:"alpha(opacity=0)"}, 400, function() { $("#gb_reload").load("guestbook.php #gb_reload", function() { $("#gb_reload").animate({opacity:"1", filter:"alpha(opacity=100)"}, 400); }); }); $("#gb_reload_ca").animate({opacity:"0", filter:"alpha(opacity=0)"}, 400, function() { $("#gb_reload_ca").load("guestbook.php #gb_reload_ca", function() { $("#gb_reload_ca").animate({opacity:"1", filter:"alpha(opacity=100)"}, 400); }); }); } }); } return false; }); }); </script>
und einmal die Captchadatei:
<?php session_start(); unset( $_SESSION['captcha_code'] ); header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" ); header( "Cache-Control: no-store, no-cache, must-revalidate" ); header( "Cache-Control: post-check=0, pre-check=0", false ); header( "Pragma: no-cache" ); header( 'Content-type: image/png' ); $AlphaNumerischerString = "ABCDEFGH2345689"; $ZufallString1 = substr( str_shuffle( $AlphaNumerischerString ), 0, 2 ); $ZufallString2 = substr( str_shuffle( $AlphaNumerischerString ), 0, 2 ); $ZufallString3 = substr( str_shuffle( $AlphaNumerischerString ), 0, 2 ); $ZufallStringKomplett = $ZufallString1.$ZufallString2.$ZufallString3; $ZufallStringKomplett = strtolower($ZufallStringKomplett); $_SESSION['captcha_code'] = md5( $ZufallStringKomplett ); $Schriftarten = array( "zachary.ttf", "mtcorsva.ttf", "gilligan.ttf"); $Bilddatei = imagecreatefrompng( "hintergrund.png" ); $TextFarbe1 = imagecolorallocate( $Bilddatei, 0, 125, 0 ); $TextFarbe2 = imagecolorallocate( $Bilddatei, 130, 70, 90 ); $TextFarbe3 = imagecolorallocate( $Bilddatei, 180, 90, 190 ); imagettftext( $Bilddatei, 12, 15, 3, 24, $TextFarbe1, $Schriftarten[0], $ZufallString1 ); imagettftext( $Bilddatei, 16, 0, 26, 15, $TextFarbe2, $Schriftarten[1], $ZufallString2 ); imagettftext( $Bilddatei, 14, -20, 53, 18, $TextFarbe3, $Schriftarten[2], $ZufallString3 ); imagejpeg( $Bilddatei ); imagedestroy( $Bilddatei ); ?>
Liebe Grüße, -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hi,
wenn ich das richtig sehe, solltest Du nicht das div reloaden
<div id="gb_reload_ca">
sondern dem Bild ne id geben, und das neuladen ;)
<img src="Captcha/captcha.php" id="gb_reload_ca" name="Captcha" style='width: 189px; height: 40px; border:none;'>
Außerdem lässt sich dein Script überlisten, wenn ich es mir lokal abspeichere, und dem action nen target zuweise.
Gruß, Dein "pöser bot" ;)
-
Hättest du da ein Beispiel wie ich das verhindern kann?
EDIT:// Die id am Bild dranzuhängen klappt auch nicht
Liebe Grüße,
Beitrag zuletzt geändert: 15.6.2014 23:29:42 von marvinkleinmusic -
Hm, wenn save_guestbook.php aufgerufen wurde, müsste das captcha neu geladen werden?
Ist bislang nur ne Vermutung. :) -
Schau dir das Javascript an, das sendet die Daten an save_guestbook.php, dort werden sie ausgewertet und eingetragen.
Nach dem Eintrag reloaded Javascript die Eintragsliste und das Captcha ohne die gesamte Seite neuzuladen.
Dabei wird immer die Captchadatei eigendlich auch reloaded und beim reload sollte diese immer ein neues Captcha ausspucken.
Das geht allerdings nur wenn die ganze Seite neulädt aber nicht nur ein Teil.
Das ist das Hauptproblem.
LG -
Mach in der
folgendes rein:save_guestbook.php
session_start(); unset($_SESSION['captcha_code']);
und beim neu Laden vom Captcha via JavaScript hängst du an die Bild-URL ein
und die aktuelle Zeit, dann wird das sicher neu geladen.?
-
hackyourlife schrieb:
und beim neu Laden vom Captcha via JavaScript hängst du an die Bild-URL ein
und die aktuelle Zeit, dann wird das sicher neu geladen.?
Wie soll das denn aussehen? Das Captcha wird ja derzeit so neugeladen:
$("#gb_reload_ca").animate({opacity:"0", filter:"alpha(opacity=0)"}, 400, function() { $("#gb_reload_ca").load("guestbook.php #gb_reload_ca" , function() { $("#gb_reload_ca").animate({opacity:"1", filter:"alpha(opacity=100)"}, 400); }); });
LG -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage