内容
PHP
のライブラリを使用して簡単なサンプルに作成したQRコードを表示できるようにする
環境
- PHP7
QRコードの作成
開発環境作成
まずはターミナルなどで作業用のフォルダを作成 & 移動
$ mkdir php_sample
$ cd php_sample
その後、phpqrcode/qrlib をダウンロードして、解凍。
解凍した中身を作成した作業用フォルダにコピーなどで移す。
そして、3つのPHP
ファイルを作成する。
- トップページ
- QRコード表示用ページ
- QRコード作成ファイル
実際のフォルダの中身がこんな感じになっているはず。
- トップページ(index.php)
- QRコード表示用ページ(result.php)
- QRコード作成ファイル(create_qr.php)
最後に、PHP
の内蔵サーバーをターミナルから起動して準備完了。
$ php -S 127.0.0.1:8080
phpファイル作成
ここからは3つのphpファイルを作成していく。
トップページ
簡単なサンプルで試すだけなので、基本的なHTML
のコードとform
くらいで十分。
(本当はindex.php
だけど見た目優先でhtml
ファイルとして記入してます。)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>QR</title>
</head>
<body>
<p>QRテスト</p>
<form method="GET" action="result.php">
<input type="text" name="data">
<input type="submit" value="QRコードを表示する">
</form>
</body>
</html>
http://127.0.0.1:8080/index にアクセスしてみると、こんなページができてるはず。
QRコード表示用ページ
ここもそんなに手をかけずに、index.php
からの遷移先程度の役割で十分かと。
(index.php
同様、見た目優先でhtml
ファイルとして記入してます。)
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>QR</title>
</head>
<body>
<h2>QRコード</h2>
<?php echo '<img src="create_qr.php" />'; ?>
<br>
<a href="index">戻る</a>
</body>
</html>
http://127.0.0.1:8080/index からフォーム経由で移動しているとこんなページが表示される。
<?php echo '<img src="create_qr.php" />'; ?>
でQRコード作成ファイルを指定しているため、記入を忘れたり名前を間違えたりしないように。
QRコード作成ファイル
今回の本題。
といっても、require
でダウンロードしてきたphpqrcode/qrlib
を呼び出して、そこの関数などを使うくらい。
<?php
// ライブラリ読み込み
require_once "phpqrcode/qrlib.php";
// 画像の保存場所
$filepath = 'qr.png';
// QRコードの内容
$contents = "result.php?data=hogehoge";
// QRコード画像を出力
QRcode::png($contents, $filepath, QR_ECLEVEL_M, 6);
//このファイルを画像ファイルとして扱う宣言
header('Content-Type: image/png');
readfile('qr.png');
?>
内容はコメントアウトの通り。
この状態で http://127.0.0.1:8080/index からフォーム経由で移動すると、result?date=
にQRコードが表示されるようになる。
スマートフォンなどで、表示されたQRコードを読み取ってみると、$contents
の内容であることがわかる。
GETの値をQRコードに反映させる
トップページ(index.php
)のフォームで入力した値をQRコードで出力できるようにしてみる。
QRコード表示用ページ(result.php
)でGET
で受け取った値を含めたURLをQRコード作成ファイル(create_qr.php
)に渡してあげればOK。
<?php
// ライブラリ読み込み
require_once "phpqrcode/qrlib.php";
// URLを定数に設定
$url = 'create_qr.php?data='.$_GET['data'];
?>
<!-- 中略 -->
<body>
<h2>QRコード</h2>
<img src="<?php echo $url ?>" />
<br>
<a href="index">戻る</a>
</body>
</html>
// 前略
// QRコードに入れるテキスト
$contents = "result.php?data=".$_GET['data'];
// QRコード画像を出力 ※詳しくは公式サイトのマニュアルを確認ください。
QRcode::png($contents, $filepath, QR_ECLEVEL_M, 6);
// 後略