107 votes

Générer dynamiquement un code QR avec PHP

J'essaie de générer des codes QR sur mon site web. Il suffit qu'ils contiennent une URL, qu'une variable de mon site fournira. Quel serait le moyen le plus simple de le faire ?

9 votes

Ne réinventez pas la roue ! les réponses ci-dessous sont parfaites

5 votes

Akor : pouvez-vous désactiver ma réponse ? Google a a déprécié l'API sur laquelle repose ma réponse, elle ne sert donc pas à grand-chose à partir de maintenant.

204voto

David Thomas Points 111253

Il convient d'ajouter que, en plus de la bibliothèque de codes QR mise en ligne par @abaumg Google fournit une Codes QR API Codes QR API Merci beaucoup à @Toukakoukan pour le mise à jour du lien .

Pour l'utiliser, 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,
  • le site chl est la chaîne codée en url que vous voulez transformer en code QR, et
  • le site choe est l'encodage (facultatif).

Le lien, ci-dessus, donne plus de détails, mais pour l'utiliser, il suffit d'avoir l'adresse suivante src d'une image pointent vers 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émonstration :

0 votes

Le lien original vers l'API a été rompu car le La page a maintenant été déplacée ici

4 votes

Existe-t-il des limitations pour l'utilisation de l'API Google ? J'entends par là des limitations telles que : le nombre de requêtes dans un temps donné, etc.

0 votes

@Lobo : pas à ma connaissance, non. Bien que cela puisse changer avec le temps, bien sûr.

97voto

abaumg Points 1000

La méthode la plus simple pour générer des codes QR avec PHP est la suivante bibliothèque phpqrcode .

8 votes

+1 cela répond mieux à la question, vous pouvez générer le code QR par vous-même, sans être limité par les limites imposées par Google pour les requêtes. Cela permettra également de s'assurer que votre site Web fonctionne, même lorsque le contrat du point de terminaison de Google change.

1 votes

Je vous préviens : Il semble que cette bibliothèque soit "morte" - elle n'a pas été mise à jour par l'auteur depuis octobre 2010 et comporte quelques correctifs dans le gestionnaire de problèmes que les utilisateurs de la bibliothèque devraient envisager d'appliquer avant de l'utiliser.

0 votes

Mais comment le convertir en standard mvc ? Des idées ? ! !!!

27voto

RafaSashi Points 1492

Le site bibliothèque phpqrcode est très rapide à configurer et la documentation de l'API est facile à comprendre.

En complément de la réponse d'abaumg J'ai joint 2 exemples dans PHP de http://phpqrcode.sourceforge.net/examples/index.php

1. Codeur de code QR

inclure d'abord la bibliothèque dans votre chemin local

include('../qrlib.php');

puis de sortir l'image directement comme un flux PNG par exemple :

QRcode::png('your texte here...');

pour enregistrer le résultat localement en tant qu'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 également le zxing décodeur :

http://zxing.org/w/decode.jspx

Assez 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 :

  • URL du site web : http://stackoverflow.com (y compris le protocole http:// )
  • adresse électronique : mailto:name@example.com
  • Numéro de téléphone : +16365553344 (y compris l'indicatif du pays)
  • Message SMS : smsto:numéro:message
  • Message MMS : mms:numéro:sujet
  • Vidéo YouTube : youtube://ID (peut fonctionner sur iPhone, non standardisé)

0 votes

Cette bibliothèque ne semble pas fonctionner pour une variété d'entrées, les petits textes et les textes simples sont corrects.

0 votes

Pouvez-vous fournir un exemple ?

0 votes

Rien de particulier, lorsque je fais $codeContents = "www.example.com", tout va bien, mais si je fais $codeContents="www.example.com/some/view/aUdv4rP4BXXLQdpXZC6Gs5C6AfyJM4uB6ntVttIr1B0=", l'image n'est pas correcte.

5voto

Peter Points 1782

J'utilise l'api google qrcode depuis un certain temps, mais je ne l'ai pas vraiment appréciée car elle exige que je sois 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 possède un outil de ligne de commande qrencode pour générer des codes QR.

J'ai écrit ce petit script. Et ce qui est bien, c'est que l'image générée fait moins de 1KB. 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 sous Linux l'ont installé sous le capot sans que vous vous en rendiez compte.

0 votes

Escapeshellarg expliqué ici (pour ceux qui se posent la question) - stackoverflow.com/a/22739494/195722 . Personnellement, je ne me contenterais pas d'une commande à chaque fois (surtout pour une génération destinée au public) et j'utiliserais certainement des expressions rationnelles pour m'assurer que ce qu'ils ont transmis est une chaîne de caractères que j'attendais.

0 votes

Fonctionne bien sur ubuntu 16.04

5voto

Quinn Comendant Points 107

Je sais que la question est de savoir comment générer des codes QR en utilisant PHP, mais pour les autres qui cherchent un moyen de générer des codes pour des sites web, le faire en javascript pur est une bonne façon de le faire. Le site jquery-qrcode Le plugin jquery le fait bien.

0 votes

J'utilise le plugin Jquery github.com/lrsjng/jquery-qrcode depuis un certain temps, également jolie. Cependant, la sortie n'est que binaire. Donc, si vous avez besoin de générer et d'enregistrer une image au format PNG, cela ne vous sera pas d'une grande aide. C'est pourquoi la plupart des développeurs qui lisent cette question ont besoin de PHP.

0 votes

C'est possible pour télécharger une image de données générée par JS à 100% dans le client.

0 votes

Désolé de ne pas avoir été clair. Je voulais dire "sauvegarder sur le serveur" - ce qui n'est pas possible avec seulement Javascript.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X