Ich versuche ein Captcha Code Bild mit PHP gd zu erstellen:
%Vor%Der GET-Wert wird mit ajax wie folgt gesendet:
%Vor%HTML:
%Vor%Obwohl es keine Fehler gibt, wird das Bild nicht erzeugt. Ja, die Anfrage erreichen das PHP-Skript, ich habe bereits überprüft, aber etwas blockiert Bild aus generiert werden ...
UPDATE Tatsächlich wird das Bild generiert und auch die Ajax-Anfrage gesendet. Aber im Skript test_image.php wird $ _GET ['captcha'] (die Anfrage) nicht erkannt, so dass nur eine leere Zeichenkette in diesem Bild ausgegeben wird, obwohl das Bild dort ist, aber ohne Zeichenkette.
Sie möchten den Inhalt Ihres Bildes mit AJAX laden, aber aus Sicherheitsgründen keine URL in das img-Tag einfügen. In diesem Fall sollten Sie base64-codierte Daten des Bildes abrufen und in Ihrem img src verwenden.
Verwenden Sie folgenden Code für Ihre PHP-Datei:
%Vor%Sie Javascript-Code wird folgen:
%Vor%Ihr HTML-Element wird mit einer ID aktualisiert. Legen Sie auch eine Art Lade-GIF / Animation an, bis das Bild geladen ist.
%Vor% Wenn Sie jetzt Captcha()
funciton in Javascript aufrufen, wird immer ein neues Captcha-Bild geladen. Setzen Sie die entsprechenden loading.gif
und error.jpg
Bilder
versuche den get param durch eine Testvariable zu ersetzen: $ imgstring = 'Dies ist ein Text';
Zeigt dies ein Bild mit dem Text an.
übrigens. Das ist kein sehr guter Weg für ein Captcha, alle Bots könnten die Ajax-Anfrage leicht lesen. Wäre besser, das Captcha durch die Datei test_image.php zu erzeugen und die zufällige Zeichenfolge in Sitzung zu speichern.
AKTUALISIEREN
Wenn du also wirklich Ajax benutzen willst, kannst du es nicht so machen, wie du es tust. Sie müssen base64 encode verwenden, um das Bild über Ajax anzuzeigen. Javascript:
%Vor%....
%Vor%PHP:
%Vor%html: [img id="mycaptcha"]
kann keine HTML-Klammern angeben. Verwenden Sie & lt; & gt;
Sie schreiben:
%Vor% Geben Sie dort jedoch keine Parameter weiter. Natürlich sieht Ihr PHP-Skript kein $_GET['captcha']
. Ihr AJAX wird aufgerufen, hat aber keine Auswirkungen auf img
, weil es nicht damit verknüpft ist.
Versuchen Sie:
%Vor%Dies wird Ihre Zeichenfolge in GET-Abfrage senden.
Wenn Sie es bei einem Klick auf die Schaltfläche (z. B. "Refresh captcha") aufrufen möchten, rufen Sie diesen Code in seinem onclick
-Ereignis auf.