QR-codes in php generieren

xep22

Banned
Registriert
Apr. 2018
Beiträge
395
hallo, ich will mit php QR-codes generieren, habe http://phpqrcode.sourceforge.net/ gefunden und mal probiert, doch damit kann man irgendwie NUR den QR code auf meiner seite dann anzeigen lassen

Code:
<?php
include("assets/qrlib.php");
QRcode::png('PHP QR CODE');
?>

sobald da irgendwie mein HTML oder sonst was ist sehe ich nur ein kleines quadrat, und wenn das html unter dem php ist sieht man dennoch nur schwarz und in der Mitte den Code... wie soll das denn gehen bitte ? will ihn quasi ja nur als Bild einbinden...
 
seh ich grad... bei mir kommt aber immer "File generated" aber quasi das "image not found" bild. was hat es denn mit EXAMPLE_TMP_URLRELPATH auf sich ? muss ich den irgendwie noch angeben oder was ?
 
EXAMPLE_TMP_SERVERPATH ist der pfad auf dem server zum verzeichnis wo das script das bild speichert, z.b. "/var/www/htdocs/qr_temp/"

EXAMPLE_TMP_URLRELPATH ist der relative pfad auf dem webserver, als nur "qr_temp/" wenn "/var/www/htdocs" das web-root ist.
 
ah okay, muss ich also EXAMPLE_TMP_SERVERPATH zu dem Pfad ändern oder wie ?
 
Möchtest du das Bild denn überhaupt auf deinem Server speichern?

Das reine einbetten innerhalb einer Seite wird im Beispiel 2 beschrieben.

Falls du das Bild dauerhaft speichern möchtest, muss der angegebene Ordner existieren und der Webserver muss Schreibrechte haben.
 
ah ok. noch 2 Probleme :

ich habe mit ajax eine Live-vorschau vor, doch ich brauche ja wie man in Beispiel 2 sieht 2 .php Dateien um den code als img anzuzeigen. wie mache ich das dann?

das JS:

Code:
<script type="text/javascript">
function createQR(){
    jQuery.ajax({
    url: "live.php",
    data:'eingabe='+$("#eingabe").val(),
    type: "POST",
    success:function(data){
        $("#generate").html(data);
    },
    error:function (){}
    });
}
</script>
<input type="text" id="eingabe" oninput="createQR()"><br><br><span id="generate"></span>

live.php :

Code:
<?php
include('phpqrcode/qrlib.php');
QRcode::png($_POST['eingabe']);
?>

derzeit erhalte ich so dann kryptische zeichen :/ ich müsste ja quasi die span in den src-tag von img machen...


und: wie geht das mit der größe ?

in der Dokumentation steht dazu

Code:
$codeContents, $tempDir.'007_4.png', QR_ECLEVEL_L, 4

4 ist sicher die größe, doch was wenn ich ja tempDir und so nicht nutze ?
 
Zuletzt bearbeitet:
Ich bin kein Web-Developer und damit kein Experte in PHP/JS aber ich versuche nochmal zu helfen (alles ungetestet):

Frage 1:
Die eine PHP-Datei erzeugt quasi ein png-Bild, daher muss sie auch wie ein png-Bild eingebettet werden.

Falls ich die Variable data richtig interpretiert habe, sollte es z.B. so aussehen:
Javascript:
<script type="text/javascript">
function createQR(){
    jQuery.ajax({
    url: "live.php",
    data:'eingabe='+$("#eingabe").val(),
    type: "POST",
    success:function(data){
        $("#generate").html('<img src="' + data + '" />');
    },
    error:function (){}
    });
}
</script>
<input type="text" id="eingabe" oninput="createQR()"><br><br><span id="generate"></span>



Frage 2:
In der Dokumentation finden sich die Standardwerte. Es sollte also soetwas wie
PHP:
QRcode::png($_POST['eingabe'], false, QR_ECLEVEL_L, 4);
funktionieren.

Ich kann dir übrigens nicht sagen, ob der obige Code vor Angriffen sicher ist (bin kein Web-Developer).
 
zu 2: danke geht.

zu 1: jetzt habe ich da das "not-found-bild" und der link vom bild ist jetzt allerdings der mit dem kryptischen zeichen :/

die src könnte doch aber auch einfach live.php sein oder? müsste halt nur noch der POST-wert übertragen werden. wenn das im success steht :

Javascript:
$("#generate").html('<img src="live.php">');

sehe ich den QR-code wenn in der live.php das steht, das POST wird allerdings nicht übertragen :

Code:
echo QRcode::png("text. POST: ".$_POST['eingabe']."");
 
Zuletzt bearbeitet:
Das geht nicht weil durch $("#generate").html('<img src="live.php">'); nur ein GET-Request auf live.php ausgefuehrt wird...

HTML:
<script type="text/javascript">
function createQR(){
    $("#generate").html('<img src="live.php?eingabe=' + urlencode($("#eingabe").val()) + '" />');
}
</script>
<input type="text" id="eingabe" oninput="createQR()"><br><br><span id="generate"></span>
PHP:
include('phpqrcode/qrlib.php');
echo QRcode::png("text. GET: ".$_GET['eingabe']."");
 
jetzt erhalte ich gar nix in der span :/

edit: es liegt an urlencode, ohne das geht es. was ist da aber falsch ?
 
Zuletzt bearbeitet:
Hatte den falschen Funktionensnamen im Kopf. Es muss encodeURIComponent() lauten. 😁
 
Zurück
Oben