PHPでQRをBASE64でやるために

Pocket
LINEで送る
GREE にシェア
LinkedIn にシェア

PHPでQRコードを表示するモジュールはかなり昔から存在するし、そんなに機能要望もいらない。
でも、今回組み込み関数として使いたいという事と、base64で扱いたいという2つの要望に対応するために、元々のライブラリーをラップするclassを作ったので、共有する。
 

ちなみに、最初に断っておくが、QRコードを出力するライブラリーを便利に使うコードを書いただけなので、新たなQRコードライブラリを作ったわけではない事を理解した人だけ、この先の記事を読み進めてよし。

PHPのQRコードライブラリ

PHPでQRコードを作成し表示するには、かなり昔から存在するMa href=”http://www.swetake.com/qrcode/” target=”_blank”>「QRcode Perl/CGI & PHP scripts」がやはり便利です。
 

ライセンスを確認してみたところ、「添付ドキュメント」に記載がありました。
 

6、著作権・配布など
これらのプログラムの著作権は作者であるY.Swetakeにあります。
これらのプログラムはフリーウエアです。もとの著作権表示を変更しなければ自由に再配布・改造してもかまいません。

 

著作権表示をいじらなければ改造可能とのことで、安心してソース公開まで行えます。

base64対応に改造

QRcode Perl CGI & PHP scripts ver. 0.50j ( 2013/5/18)
 

まず最新ソースコードをダウンロードして、回答すると、以下のような階層構造になっています。
 

スクリーンショット 2018-03-26 9.01.07
 

この中の”php/qr_img.php”ファイルをコピーして、改造していきます。
 

初期設定

このフォルダのdataフォルダとimageフォルダを絶対パスまたは相対パスで指定します。
 

Program wrap

引数をそのまま使えるように受け取り値として設定した関数を作成。
 

関数の引数に合わて「@GET[**]」とクエリ受け取り値になっていた箇所を引数に置き換えます。
※わかりやすいようにGET-keyと変数名を同じにしています。
 

Image表示->Base64Returnに置き換え

PHPファイルの一番下にある、Image表示処理の箇所をコメントアウトして、以下のように書き換えました。
 

image-headerで直接画像出力していたところを、base64の文字列を返すようにしています。
注意点は、PHPのGDライブラリを事前にセットしておかないといけません。
 

phpinfo()で以下のような表示がされていることを確認しておきましょう。
 

スクリーンショット 2018-03-26 9.13.37

組み込み関数を作る

ファイル構造

ダウンロードしたフォルダの横にwrap用のフォルダを作ってその中にPHPを設置しています。
 
スクリーンショット 2018-03-26 9.19.19
 

ソースコード

 

使い方

 

こんな感じでURLを渡すだけで、QRコードをbase64を含んだIMGタグを返すようにしています。
 

このプログラムは、外部からクエリで受け取ってそのまま表示する仕様のため、ホームページに脆弱性などの表示がされていますが、関数化して、サイト内部だけが呼び出しできるようにすることで、かなりの不正アクセスを防げるでしょうね。

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です