Sende String an PHP gd durch Ajax Anfrage

8

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.

    
Petru Lebada 08.10.2015, 17:22
quelle

5 Antworten

3

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

    
ksg91 20.10.2015, 11:38
quelle
0

Können Sie das in Ihrem js-Code ausprobieren? Anstatt das Bild über Ajax zu laden, können wir versuchen, den Code an den src-Wert des Bildes anzuhängen:

%Vor%

HTML

%Vor%     
nowhere 13.10.2015 13:38
quelle
0

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;

    
FlorianR. 13.10.2015 13:39
quelle
0

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.

    
Dan Spirit 18.10.2015 11:05
quelle
0

Überprüfen Sie Ihr Serverprotokoll. Vielleicht kann imagettftext die angegebene Schriftartdatei nicht öffnen.

Versuchen Sie, die Schriftartdatei in das gleiche Verzeichnis wie das PHP-Skript zu kopieren.

Dann:

%Vor%     
Peter 20.10.2015 11:46
quelle

Tags und Links