PHPでQRコードをシンプルに作成する。

2022年01月21日 12時00分 正午の月齢:18.7  月名:寝待月  潮汐:中潮 月齢:18.7[寝待月] 潮汐:中潮
(最終更新日:2023年06月16日)
2年前に投稿 | ウェブ・IT関係 | コメントはありません

5分ぐらいで読めます。

NEM Walletから煤のBinanceにNEMを送るQRコードNEM Walletから煤のZaifにNEMを送るQRコードで、値からQRコードを作る仕組みを数年前に作りましたが、これらはGoogleのAPIを使っています。(参考:QRコードを簡単に作成する方法(googleを利用します))

ところが「Google ChartでQRコードを作成するのって非推奨」なんていうハナシもその当時からちらほらあって、なんとか自前でQRコードの生成ができないかなとずっと思っていました。

なぜこのタイミング? っていうのはさておき、ずっと悶々していたこの課題をどうにかしたくなったので、できるだけシンプルにPHPで作れるか試してみます。(実際はGDライブラリも必要だけど、今使っているエックスサーバーではもともとGDライブラリはインストールされているので、とくに何かをする必要はないみたいです。)

めっちゃ参考にしたのはこのサイト。感謝ですよー。

QRコードを生成するライブラリはここから。

というわけで、さっそくやってみましょう。

まずはpublic_htmlの直下にqrcodeというディレクトリを作りました。そこにPHP QR Code Create QR Codes in PHPからダウンロードしたファイルを展開して丸ごとアップロードします。結構なファイル数ですね。

phpqrcode

次に3つのファイルを用意します。

index.php。

このフォームに入力した文字をQRコードにするってわけですね。

<!DOCTYPE html>

<html lang="ja">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>QRcode generator</title>
</head>

<body>
<form method="GET" action="result.php">
<p><input type="text" name="data"></p>
<p><input type="submit" value="QRコードを表示する"></p>
</form>
</body>

</html>

create_qr.php。

フォームのデータを受けてQRコードを作るのですが、とりあえず誤り訂正レベルはQ(25%)にしています。誤り訂正レベルは、レベルL:復元能力7%、レベルM:復元能力15%、レベルQ:復元能力25%、レベルH:復元能力30%とあるので、QRコードを使う環境によって変えてくださいネ。

<?php
// ライブラリ読み込み
require_once "phpqrcode/qrlib.php";

// 画像の保存場所
$filepath = 'qr.png';

// QRコードに入れるテキスト
$contents = $_GET['data'];
if(empty($_GET['data'])){
$contents = "hoge";
}else{
$contents = $_GET['data'];
}

// QRコード画像を出力
QRcode::png($contents, $filepath, QR_ECLEVEL_Q, 6);

//このファイルを画像ファイルとして扱う宣言
header('Content-Type: image/png');
readfile('qr.png');

?>

ほかにも設定ができるのかもしれないけれど、このままでいきましょう。何も文字が入ってないときは「hoge」と入れるようにしています。

result.php。

結果を表示します。

<?php
// ライブラリを読み込む
require_once "phpqrcode/qrlib.php";

// PHPファイルを画像のURLとして読み込む
$url = 'create_qr.php?data='.$_GET['data'];
?>

<!DOCTYPE html>

<html lang="ja">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>QRcode generator</title>
</head>

<body>
<p><img src="<?php echo $url ?>" /></p>
<p><a href="index.php">トップに戻る</a></p>
</body>

</html>

これら3つのファイルも同じディレクトリにアップロードしたら、準備はOKです。

いろんな文字を入れて試してみると、無事にQRコードが表示されました。

ほっけ

UTF-8の4バイト文字もきちんと扱えましたー。

古い記事・新しい記事

古い記事 [2021年12月06日]
新しい記事 [2022年02月09日]

コメントはありません

ごめんなさい、コメントフォームは閉鎖しています。

Translate »