qr-Code URL mit sonderzeichen generieren

xep22

Banned
Registriert
Apr. 2018
Beiträge
395
hallo, ich habe dieses einfache QR-Code script gefunden : http://www.swetake.com/qrcode/qr_cgi_e.html

damit kann man leicht QR-codes generieren, doch sobald man eine URL mit sonderzeichen wie z.b. # generiert stoppt das generieren an der Stelle einfach, alles was danach kommt wird nicht dazu generiert. Wieso ? gibts da was zu beachten ? bei online-Generatoren geht das ja auch...
 
hm, was mache ich dann falsch ? ich nutze einfach die qr_img.php :

Code:
qr_img.php?d=urlto:http://example.com#test
 
ahh ok, mit urlencode oder wie ? so gehts zumindest...
 
Ja urlencode oder rawurlencode. Wenn ich mich recht erinnere kann urlencode Probleme bereiten wenn der QR-Code unter iOS gelesen werden soll, da ist rawurlencode dann kompatibler.
 
okay. noch ein Problem: beim generieren einer Email-Vorlage geht entweder nur Empfänger und betreff oder Empfänger und body, alle 3 nicht... scanne ich den Code erhalte ich da nur den betreff bzw. nur die Nachricht. was ist da wieder falsch ? der mailto-link geht an sich...

Code:
?d=mailto:mail@mail.de?subject=betreff&body=body

damit kommt nur der Betreff (siehe anhang)

damit sehe ich den body :

Code:
?d=mailto:mail@mail.de?body=body
 

Anhänge

  • qr.png
    qr.png
    454 Bytes · Aufrufe: 474
Nur das erste mal darf es ein ? sein, alle anderen Parameter muessen mit & getrennt werden, also:
Code:
?d=mailto:mail@mail.de&subject=betreff&body=body
 
Leider hab ich aktuell keinen QR-Reader zur Hand und sehe nicht was drinnen steht, aber wenn du das so in der Adresseleiste eingegeben hast, dann ist es klar das es nicht geht. Auch hier musst du die Kodierung anwenden.

Edit:
Er will die komplette mailto... der Variable "d" zuweisen daher ist das vom Vorposter quatsch
 
habe ich aber auch schon probiert... geht auch net

Code:
<a href='assets/php/qr_img.php?s=5&d=mailto:".rawurlencode($_POST['empfaenger'])."?subject=".rawurlencode($_POST['betreff'])."&body=".rawurlencode($_POST['nachricht'])."' target='_blank'>
 
Du benutzt die Kodierung falsch. Du musst den kompletten Inhalt der in die Variable "d" soll kodieren, am besten als ganzes.
 
So wuerde es gehen:
PHP:
<!doctype html>
<html>
  <body>
    <?php
      $d = rawurlencode("mailto:${_GET['empfaenger']}?subject=${_GET['betreff']}&body=${_GET['nachricht']}");
    ?>
    <a href="php/qr_img.php?s=5&amp;d=<?php echo $d; ?>" target="_blank">asd</a>
  </body>
</html>

Oder du verwendest einen aktuelle QR-Code Generator (z.B. https://github.com/endroid/qr-code)
Den folgenden Code kannst du einfach als Bild einbinden.
PHP:
<?php
require __DIR__ . '/vendor/autoload.php';

use Endroid\QrCode\QrCode;

$qrCode = new QrCode("mailto:${_GET['empfaenger']}?subject=${_GET['betreff']}&body=${_GET['nachricht']}");
$qrCode->setSize(300);

header('Content-Type: '.$qrCode->getContentType());
echo $qrCode->writeString();

Zum installieren der Abhaengigkeiten benoetigst du https://getcomposer.org/
 
Zuletzt bearbeitet:
Zurück
Oben