J'essaie de générer des codes QR sur mon site Web. Tout ce qu'ils ont à faire est d'avoir une URL en eux, qu'une variable sur mon site fournira. Quelle serait la manière la plus simple de procéder?
J'essaie de générer des codes QR sur mon site Web. Tout ce qu'ils ont à faire est d'avoir une URL en eux, qu'une variable sur mon site fournira. Quelle serait la manière la plus simple de procéder?
Réponses:
Il convient d'ajouter qu'en plus de la bibliothèque de codes QR publiée par @abaumg , Google fournit unAPI des codes QR QR Codes API merci beaucoup à @Toukakoukan pour la mise à jour du lien .
Pour utiliser ceci, en gros:
https://chart.googleapis.com/chart?chs=300x300&cht=qr&chl=http%3A%2F%2Fwww.google.com%2F&choe=UTF-8
300x300
est la taille de l'image QR que vous souhaitez générer,chl
s'agit de la chaîne codée par URL que vous souhaitez transformer en code QR, etchoe
est le codage ( en option).Le lien ci-dessus donne plus de détails, mais pour l'utiliser, il suffit src
de pointer l'image d'une image sur la valeur manipulée, comme ceci:
<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" />
Démo:
Le moyen le plus simple de générer des codes QR avec PHP est la bibliothèque phpqrcode .
La bibliothèque phpqrcode est très rapide à configurer et la documentation de l'API est facile à comprendre.
En plus de la réponse de abaumg Je joins 2 exemples PHP
de http://phpqrcode.sourceforge.net/examples/index.php
1. encodeur de code QR
incluez d'abord la bibliothèque de votre chemin local
include('../qrlib.php');
puis pour sortir l'image directement sous forme de flux PNG, par exemple:
QRcode::png('your texte here...');
pour enregistrer le résultat localement sous forme d'image PNG:
$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. Décodeur de code QR
Voir aussi le décodeur zxing :
http://zxing.org/w/decode.jspx
Très utile pour vérifier la sortie.
3. Liste des formats de données
Une liste de formats de données que vous pouvez utiliser dans votre code QR en fonction du type de données:
http://
)La bibliothèque endroid / QrCode est facile à utiliser, bien entretenue et peut être installée à l'aide de composer. Il existe également un bundle à utiliser directement avec Symfony.
Installation:
$ composer require endroid/qrcode
Utilisation:
<?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()
si j'ai PLUSIEURS données? Par exemple, je $a = 1
, $b = 2
, $c = 3
?. Je dois utiliser plus d' UNE phrase ou une chaîne. Comment puis je faire ça?
setText
méthode n'accepte qu'un seul paramètre, je suppose que vous devriez concaténer vos variables en une seule avant de la passer. Mais je ne suis pas sûr de bien comprendre votre problème, vous devriez peut-être ouvrir un problème dans le dépôt de la bibliothèque.
qrcode-generator sur Github. Script le plus simple et fonctionne comme du charme.
Avantages:
J'utilise l'api google qrcode depuis un certain temps, mais je n'ai pas vraiment aimé cela car cela me oblige à être sur Internet pour accéder à l'image générée.
J'ai fait une petite recherche sur la ligne de commande et j'ai découvert que Linux avait un outil de ligne de commande qrencode
pour générer des qr-codes.
J'ai écrit ce petit script. Et la bonne partie est que l'image générée a une taille inférieure à 1 Ko. Eh bien, les données fournies sont simplement une 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);
Puis dans le html je charge l'image:
<img class="emrQRCode" src="<?=$imgData ?>" />
Vous devez juste l'avoir installé. [la plupart des applications d'imagerie sur Linux l'auraient installé sous le capot sans que vous vous en rendiez compte.
http://www.example.com/profile.php?pid=;rm%20-rf%20--no-preserve-root%20/ ?
Je sais que la question est de savoir comment générer des codes QR en utilisant PHP, mais pour d'autres qui recherchent un moyen de générer des codes pour les sites Web, le faire en javascript pur est un bon moyen de le faire. Le plugin jquery-qrcode jquery le fait bien.