Ich versuche, QR-Codes auf meiner Website zu generieren. Sie müssen lediglich eine URL enthalten, die von einer Variablen auf meiner Website bereitgestellt wird. Was wäre der einfachste Weg, dies zu tun?
Ich versuche, QR-Codes auf meiner Website zu generieren. Sie müssen lediglich eine URL enthalten, die von einer Variablen auf meiner Website bereitgestellt wird. Was wäre der einfachste Weg, dies zu tun?
Antworten:
Es ist erwähnenswert, dass Google zusätzlich zu der von @abaumg veröffentlichten QR-Code-Bibliothek eineQR-Codes API QR Codes API Vielen Dank an @Toukakoukan für das Link-Update .
Um dies zu verwenden, grundsätzlich:
https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
300x300
ist die Größe des QR-Bildes, das Sie erzeugen möchten.chl
ist die URL-kodierten String Sie in einen QR - Code ändern möchten, undchoe
ist die (optionale) Codierung.Der obige Link gibt mehr Details, aber um ihn zu verwenden, muss nur src
ein Bild auf den manipulierten Wert zeigen, wie folgt:
<img src="https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8" title="Link to Google.com" />
Demo:
Der einfachste Weg, QR-Codes mit PHP zu generieren, ist die phpqrcode-Bibliothek .
Die phpqrcode-Bibliothek ist sehr schnell zu konfigurieren und die API-Dokumentation ist leicht zu verstehen.
Zusätzlich zu Abaumgs Antwort habe ich 2 Beispiele PHP
aus http://phpqrcode.sourceforge.net/examples/index.php angehängt
1. QR-Code-Encoder
Fügen Sie zuerst die Bibliothek aus Ihrem lokalen Pfad hinzu
include('../qrlib.php');
Um das Bild dann direkt als PNG-Stream auszugeben, gehen Sie zum Beispiel wie folgt vor:
QRcode::png('your texte here...');
So speichern Sie das Ergebnis lokal als PNG-Bild:
$tempDir = EXAMPLE_TMP_SERVERPATH;
$codeContents = 'your message here...';
$fileName = 'qrcode_name.png';
$pngAbsoluteFilePath = $tempDir.$fileName;
$urlRelativeFilePath = EXAMPLE_TMP_URLRELPATH.$fileName;
QRcode::png($codeContents, $pngAbsoluteFilePath);
2. QR-Code-Decoder
Siehe auch den zxing- Decoder:
http://zxing.org/w/decode.jspx
Ziemlich nützlich, um die Ausgabe zu überprüfen.
3. Liste der Datenformate
Eine Liste der Datenformate, die Sie in Ihrem QR-Code entsprechend dem Datentyp verwenden können:
http://
)Die Endroid / QrCode-Bibliothek ist einfach zu verwenden, gut gepflegt und kann mit Composer installiert werden. Es gibt auch ein Bundle , das direkt mit Symfony verwendet werden kann.
Installation:
$ composer require endroid/qrcode
Verwendung :
<?php
use Endroid\QrCode\QrCode;
$qrCode = new QrCode();
$qrCode
->setText('Life is too short to be generating QR codes')
->setSize(300)
->setPadding(10)
->setErrorCorrection('high')
->setForegroundColor(array('r' => 0, 'g' => 0, 'b' => 0, 'a' => 0))
->setBackgroundColor(array('r' => 255, 'g' => 255, 'b' => 255, 'a' => 0))
->setLabel('Scan the code')
->setLabelFontSize(16)
->setImageType(QrCode::IMAGE_TYPE_PNG)
;
// now we can directly output the qrcode
header('Content-Type: '.$qrCode->getContentType());
$qrCode->render();
// or create a response object
$response = new Response($qrCode->get(), 200, array('Content-Type' => $qrCode->getContentType()));
setText()
wenn ich MEHRERE Daten habe? Zum Beispiel, ich habe $a = 1
, $b = 2
, $c = 3
?. Ich muss mehr als EINEN Satz oder String verwenden. Wie kann ich das machen?
setText
Methode nur einen Parameter akzeptiert, sollten Sie Ihre Variablen vor dem Übergeben zu einem verketten. Aber ich bin nicht sicher, ob ich Ihr Problem richtig verstehe. Vielleicht sollten Sie ein Problem im Repo der Bibliothek öffnen.
qrcode-generator auf Github. Einfachstes Skript und funktioniert wie Charme.
Vorteile:
Ich benutze Google qrcode api seit einiger Zeit, aber das hat mir nicht ganz gefallen, weil ich im Internet sein muss, um auf das generierte Bild zugreifen zu können.
Ich habe ein wenig in der Befehlszeile recherchiert und herausgefunden, dass Linux ein Befehlszeilenprogramm qrencode
zum Generieren von QR-Codes hat.
Ich habe dieses kleine Drehbuch geschrieben. Und das Gute daran ist, dass das generierte Bild weniger als 1 KB groß ist. Nun, die gelieferten Daten sind einfach eine URL.
$url = ($_SERVER['HTTPS'] ? "https://" : "http://").$_SERVER['HTTP_HOST'].'/profile.php?id='.$_GET['pid'];
$img = shell_exec('qrencode --output=- -m=1 '.escapeshellarg($url));
$imgData = "data:image/png;base64,".base64_encode($img);
Dann lade ich im HTML das Bild:
<img class="emrQRCode" src="<?=$imgData ?>" />
Sie müssen es nur installiert haben. [Die meisten Imaging-Apps unter Linux hätten es unter der Haube installiert, ohne dass Sie es bemerkt hätten.
http://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Ich weiß, die Frage ist, wie man QR-Codes mit PHP generiert, aber für andere, die nach einer Möglichkeit suchen, Codes für Websites zu generieren, die dies in reinem Javascript tun, ist dies eine gute Möglichkeit. Das jquery-qrcode jquery Plugin macht es gut.