QR code, HTML et PHP

QR code HTML et PHP

QR code, HTML et PHP

QR code, html et php. Une fois n’est pas coutume, je vais parler d’un autre langage que Python.

Tout est parti du problème qu’a rencontré l’application TousAntiCovid : le QR code généré n’avait pas le bon format de date (voir ici)… J’avais donc aujourd’hui envie de faire un article vite fait sur la manière de générer un QR code.

QR code, HTML et PHP : quel langage choisir ?

Il existe de nombreuses façons de générer un QR code: en Python, en PHP, en C, … mais je vais ici me pencher sur le PHP.

En fait, à l’aide d’une API, on peut même utiliser le simple HTML, mais pour connaître la date et l’heure précise de l’instant présent, PHP sera utile.

QR code, HTML et PHP : le script

<?php 
function qrcode() {
	if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') 
		$url = "https"; 
	  else
		$url = "http"; 

	  $url .= "://"; 
	  $url .= $_SERVER['HTTP_HOST']; 
	  $url .= $_SERVER['REQUEST_URI']; 

	if ( !isset($_GET['now']) ) {
		date_default_timezone_set('UTC'); // définir le fuseau horaire à utiliser par défaut
		$now = date('D-M-j-Y-G-i');
		return "<img id='barcode' src='https://api.qrserver.com/v1/create-qr-code/?data=" .$url . "?now=" . $now ."&amp;size=400x400' width='400' height='400' />";
	}
	else {
		return "Date : " . $_GET['now'];
	}
?>

Ce code est à insérer dans le corps du HTML.

La première partie identifie l’URL courante et la seconde génère un QR code redirigeant vers la page courante avec une variable (“now”) transmise avec la méthode GET.

Si la variable est présente alors le QR code ne s’affiche pas et la date s’affiche telle qu’elle a été transmise.

Le résultat

Ci-dessous, vous trouvez le QR code qui donne la redirection avec la date. Flashez-le et vous serez redirigé·e vers cette même page en transmettant la date.

Une fois que la date est transmise, un petit formatage permet de l’afficher au format que l’on souhaite. Telle qu’elle a été ici transmise, on peut dans un premier temps la scinder en fonction des traits d’union:

$date = explode("-",$_GET['now']);
$jour = Array( "Mon" => "Lundi" , 
	"Tue" => "Mardi" , "Wed" => "Mercredi" ,
	"Thu" => "Jeudi", "Fri" => "Vendredi" ,
	"Sat" => "Samedi" ,  "Sun" => "Dimanche" );
$mois = Array( "Jan" => "Janvier" , "Feb" => "Février" ,
		"Mar" => "Mars" , "Apr" => "Avril" ,
		"May" => "Mai" , "Jun" => "Juin" ,
		"Jul" => "Juilet" , "Aug" => "Août" ,
		"Sep" => "Septembre" , 	"Oct" => "Octobre" ,
	        "Nov" => "Novembre" , "Dec" => "Décembre");
$now = $jour[$date[0]] . " " . $date[2] . " " . $mois[$date[1]] . " " . $date[3];
return "<p>Vous avez été redirigé·e·s avec la date : " . $now."</p>";

Il va de soit que le formatage est à notre convenance. J’ai pris ici la décision de convertir les abréviations en mots complets et en français. Mais il y avait plus simple pour cela. En effet, on peut utiliser setlocale(LC_TIME, "fr_FR");

Mais comme mentionné plus haut, j’écris cet article à la va-vite. Je n’ai pas pris le temps d’améliorer le script…

Stéphane Pasquet
Stéphane Pasquet

Laissez votre message