JavaScript

【PHP】QRコードをPHPで生成【ラベル作成】

QRコードは現代のビジネスシーンで広く利用されているツールの一つです。特に、スマートフォンやタブレットの普及により、情報を簡単にアクセスできる手段としてQRコードの需要が高まっています。この記事では、PHPを使用してQRコードを生成する方法と、実際の業務に応用できるサンプルコード、さらにはその拡張案を紹介します。

QRコードの基本概要

QRコード(Quick Response Code)は、1994年に日本のデンソーウェーブによって開発された二次元バーコードです。通常のバーコードが1次元の情報を持つのに対し、QRコードは縦横の2次元に情報を格納できます。これにより、より多くの情報をコンパクトに保存することができ、URLやテキスト、連絡先情報、Wi-Fiの設定情報など、さまざまなデータを格納できます。

PHPでQRコードを生成するための準備

PHPでQRコードを生成するには、phpqrcodeライブラリが非常に有用です。このライブラリは、簡単にQRコードを生成するための関数を提供しており、オープンソースで利用可能です。

まず、以下のコマンドでphpqrcodeライブラリをインストールします。

composer require endroid/qr-code

次に、PHPファイルを作成し、ライブラリをインポートします。

require 'vendor/autoload.php';

use Endroid\QrCode\QrCode;
use Endroid\QrCode\Writer\PngWriter;

基本的なQRコード生成ページの実装

以下は、簡単なQRコード生成の例です。入力された社員番号に基づいてQRコードを生成し、画面に表示するサンプルです。

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <title>QRコード生成</title>
    <style>
        .qr-code {
            text-align: center;
            margin-top: 50px;
        }
    </style>
</head>

<body>
    <h1>社員番号 QRコード生成</h1>
    <form method="post" action="">
        社員番号: <input type="text" name="inputValue">
        <button type="submit">生成</button>
    </form>

    <?php
    if (isset($_POST['inputValue']) && !empty($_POST['inputValue'])) {
        include('phpqrcode/qrlib.php');

        $inputValue = $_POST['inputValue'];
        $filePath = 'qrcode_' . time() . '.png';
        QRcode::png($inputValue, $filePath, QR_ECLEVEL_L, 10);

        echo '<div class="qr-code"><img src="' . $filePath . '"></div>';
    }
    ?>
</body>

</html>

このコードは、ユーザーが入力した社員番号に基づいてQRコードを生成し、ブラウザ上に表示します。

実際の業務に応用できるサンプル

業務でQRコードを活用するシーンは多岐にわたります。例えば、社内の資産管理や従業員の出退勤管理、顧客情報の登録などに応用できます。ここでは、従業員の出退勤管理システムを想定した応用サンプルを紹介します。

従業員の出退勤管理システムのサンプル

従業員がオフィスに出勤する際にQRコードを読み取ることで、出勤時刻が自動的に記録されるシステムを構築します。このシステムでは、各従業員に個別のQRコードが割り当てられ、スマートフォンや専用のQRコードリーダーで読み取ることで、簡単に出退勤の管理ができます。

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <title>従業員出退勤管理システム</title>
    <style>
        .qr-code {
            text-align: center;
            margin-top: 50px;
        }
    </style>
</head>

<body>
    <h1>従業員出退勤管理システム</h1>
    <form method="post" action="">
        従業員ID: <input type="text" name="employeeId">
        <button type="submit">QRコード生成</button>
    </form>

    <?php
    if (isset($_POST['employeeId']) && !empty($_POST['employeeId'])) {
        include('phpqrcode/qrlib.php');

        $employeeId = $_POST['employeeId'];
        $filePath = 'employee_qrcode_' . $employeeId . '.png';
        QRcode::png($employeeId, $filePath, QR_ECLEVEL_L, 10);

        echo '<div class="qr-code"><img src="' . $filePath . '"></div>';

        // 出勤情報を保存するためのファイルパス
        $logFilePath = 'attendance_log.txt';
        $currentDateTime = date('Y-m-d H:i:s');
        $logEntry = $employeeId . ' 出勤: ' . $currentDateTime . PHP_EOL;

        // 出勤情報をファイルに保存
        file_put_contents($logFilePath, $logEntry, FILE_APPEND);
    }
    ?>
</body>

</html>

このサンプルコードは、従業員が出勤時にIDを入力し、QRコードを生成する機能を提供します。また、出勤情報がattendance_log.txtファイルに保存され、後から出勤記録を参照することができます。

QRコードによる顧客情報の管理

QRコードを利用して顧客情報を管理するシステムも非常に有用です。例えば、展示会やイベントでQRコードを使用して、顧客情報を簡単に登録・管理することが可能です。

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <title>顧客情報管理システム</title>
    <style>
        .qr-code {
            text-align: center;
            margin-top: 50px;
        }
    </style>
</head>

<body>
    <h1>顧客情報管理システム</h1>
    <form method="post" action="">
        顧客名: <input type="text" name="customerName"><br>
        連絡先: <input type="text" name="contact"><br>
        <button type="submit">QRコード生成</button>
    </form>

    <?php
    if (isset($_POST['customerName']) && !empty($_POST['customerName']) && isset($_POST['contact']) && !empty($_POST['contact'])) {
        include('phpqrcode/qrlib.php');

        $customerName = $_POST['customerName'];
        $contact = $_POST['contact'];
        $customerInfo = $customerName . ' - ' . $contact;
        $filePath = 'customer_qrcode_' . time() . '.png';
        QRcode::png($customerInfo, $filePath, QR_ECLEVEL_L, 10);

        echo '<div class="qr-code"><img src="' . $filePath . '"></div>';

        // 顧客情報を保存するためのファイルパス
        $logFilePath = 'customer_info.txt';
        $logEntry = $customerInfo . PHP_EOL;

        // 顧客情報をファイルに保存
        file_put_contents($logFilePath, $logEntry, FILE_APPEND);
    }
    ?>
</body>

</html>

このコードでは、顧客名と連絡先をQRコードに変換し、情報をcustomer_info.txtファイルに保存します。これにより、イベントや展示会での顧客情報管理が簡単に行えます。

複数枚のラベル印刷

複数枚のQRコードラベルをPDFに出力する機能を追加するためには、以下の手順を踏む必要があります。これには、PHPでQRコードを生成し、PDFにラベルを出力するためのライブラリを使用します。ここでは、FPDFというPHPのライブラリを使用して、複数枚のQRコードラベルをPDFに出力する方法を説明します。

必要なライブラリの準備

  • PHP QR Codeライブラリ: QRコードを生成するために使用します。
  • FPDFライブラリ: PDFを生成するために使用します。

これらのライブラリをプロジェクトに含めるには、以下の手順を行います。

ライブラリのインストール

PHP QR Codeライブラリ: ダウンロードリンク: PHP QR Code

FPDFライブラリ: ダウンロードリンク: FPDF

Composerでインストール済みの方は、PHP QR CODEのダウンロードは不要になりますので、そちらを読み込みする様にコードを読み替えて下さい。

ダウンロード後、これらのライブラリをプロジェクトのディレクトリに配置します。

PHPスクリプトの作成

<?php
require_once 'phpqrcode/qrlib.php';  // PHP QR Codeライブラリ
require_once 'fpdf/fpdf.php';        // FPDFライブラリ

// POSTで送信されたデータを取得
$inputValues = isset($_POST['inputValues']) ? $_POST['inputValues'] : [];

// PDF設定
$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);

// QRコードサイズとラベルの設定
$qrSize = 50;  // QRコードのサイズ(mm単位)
$margin = 10;  // ラベルのマージン(mm単位)
$cols = 3;     // 1ページあたりの列数
$rows = 4;     // 1ページあたりの行数

// QRコードをPDFに追加
foreach ($inputValues as $index => $inputValue) {
    $filePath = 'temp_qrcode_' . $index . '.png';
    QRcode::png($inputValue, $filePath, QR_ECLEVEL_L, 3);  // QRコードのサイズを設定

    // QRコード画像をPDFに追加
    $x = ($index % $cols) * ($qrSize + $margin) + $margin;
    $y = floor($index / $cols) * ($qrSize + $margin) + $margin;
    
    $pdf->Image($filePath, $x, $y, $qrSize, $qrSize);
    
    // QRコード画像を削除
    unlink($filePath);
}

// PDF出力
$pdf->Output('I', 'qrcodes.pdf');  // 'I'はブラウザで表示
?>

HTMLフォームの作成

ユーザーが複数のQRコードを生成するためのフォームを作成します。以下のHTMLフォームは、複数のQRコードのデータを入力するためのものです。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>QRコードラベル生成</title>
    <!-- Materialize CSS -->
    <link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel="stylesheet">
    <style>
        .container {
            margin-top: 50px;
        }
        .input-field {
            margin-bottom: 20px;
        }
        .no-print {
            display: none;
        }
    </style>
</head>
<body>
    <main>
        <div class="container">
            <h3 class="center-align no-print">QRコードラベル生成</h3>
            <div class="row no-print">
                <form class="col s12" method="post" action="generate_pdf.php">
                    <div class="input-field col s12">
                        <textarea id="inputValues" name="inputValues[]" class="materialize-textarea" rows="5" placeholder="QRコードにしたいデータを複数行で入力してください"></textarea>
                        <label for="inputValues">QRコードデータ</label>
                    </div>
                    <div class="row center-align">
                        <button class="btn waves-effect waves-light" type="submit" name="action">
                            <i class="material-icons center">PDF生成</i>
                        </button>
                    </div>
                </form>
            </div>
        </div>
    </main>
    <!-- Materialize JavaScript -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
</body>
</html>

説明

QRコード生成

  • QRcode::png(): QRコードを生成するメソッドで、$inputValueに指定したデータをQRコードに変換します。
  • ファイルパス: QRコードは一時ファイルとして生成し、後で削除します。

PDFのレイアウト

  • FPDFライブラリ: PDFを生成するためのライブラリで、AddPage()でページを追加し、Image()で画像をPDFに追加します。
  • $x$y: QRコードの位置を計算し、ページ内で適切な位置に配置します。

拡張案

  • ページ分割: QRコードが多くなる場合は、ページを分割して複数ページのPDFを生成する機能を追加することができます。
  • ラベルテンプレート: ラベルのデザインをカスタマイズし、ブランドや用途に応じたラベルテンプレートを作成します。
  • データのバリデーション: QRコードに含めるデータのバリデーション機能を追加し、不正なデータが生成されないようにします。

このコードを使えば、複数枚のQRコードをPDFに出力し、業務でのラベル印刷に役立てることができます。業務のニーズに応じてカスタマイズし、さらに便利なシステムを構築してください。

出退勤管理システムを拡張

出退勤管理システムをさらに詳細に実装するためには、以下のような機能を追加することが考えられます。

  • データベースとの連携: 出勤・退勤データをデータベースに保存し、管理者が後から集計や分析を行えるようにします。MySQLなどのリレーショナルデータベースを使用する例を示します。
  • ユーザー認証機能: 従業員がQRコードを生成するための権限管理を行う機能を追加し、各従業員が自分の情報にアクセスできるようにします。
  • リアルタイム通知: 出退勤データが記録されると、管理者に通知を送信する機能を追加し、リアルタイムで勤怠情報を把握できるようにします。

以下は、出退勤管理システムのデータベース連携の例です。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "attendance_db";

// データベース接続
$conn = new mysqli($servername, $username, $password, $dbname);

// 接続確認
if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
}

// フォームが送信された場合
if (isset($_POST['employeeId']) && !empty($_POST['employeeId'])) {
    include('phpqrcode/qrlib.php');

    $employeeId = $_POST['employeeId'];
    $filePath = 'employee_qrcode_' . $employeeId . '.png';
    QRcode::png($employeeId, $filePath, QR_ECLEVEL_L, 10);

    echo '<div class="qr-code"><img src="' . $filePath . '"></div>';

    // 出勤情報をデータベースに保存
    $currentDateTime = date('Y-m-d H:i:s');
    $stmt = $conn->prepare("INSERT INTO attendance_log (employee_id, check_in_time) VALUES (?, ?)");
    $stmt->bind_param("ss", $employeeId, $currentDateTime);
    $stmt->execute();
    $stmt->close();
}

$conn->close();
?>

このコードでは、MySQLデータベースに接続し、出勤情報を保存しています。データベースの設定やテーブルの作成は事前に行っておく必要があります。

顧客情報管理システムを拡張

顧客情報管理システムには、以下のような機能を追加することで、さらに便利に活用できます。

  • 顧客情報のエクスポート: QRコードで取得した顧客情報をCSV形式やExcel形式でエクスポートする機能を追加し、後から簡単に分析できるようにします。
  • 情報更新機能: QRコードで取得した顧客情報を編集・更新する機能を追加し、最新の情報を管理します。
  • 統計情報の表示: 顧客情報をもとに、参加イベント数や顧客の活動履歴などの統計情報を表示するダッシュボードを作成します。

以下は、顧客情報のエクスポート機能の例です。

<?php
if (isset($_POST['customerName']) && !empty($_POST['customerName']) && isset($_POST['contact']) && !empty($_POST['contact'])) {
    include('phpqrcode/qrlib.php');

    $customerName = $_POST['customerName'];
    $contact = $_POST['contact'];
    $customerInfo = $customerName . ' - ' . $contact;
    $filePath = 'customer_qrcode_' . time() . '.png';
    QRcode::png($customerInfo, $filePath, QR_ECLEVEL_L, 10);

    echo '<div class="qr-code"><img src="' . $filePath . '"></div>';

    // 顧客情報をデータベースに保存
    $logFilePath = 'customer_info.csv';
    $logEntry = $customerName . ',' . $contact . PHP_EOL;

    // 顧客情報をCSVファイルに保存
    file_put_contents($logFilePath, $logEntry, FILE_APPEND);
}
?>

このコードでは、顧客情報をCSVファイルに保存しています。CSV形式により、他のツールで簡単にデータを取り込むことができます。

QRコード生成の拡張案

業務でQRコードをさらに効果的に活用するためには、以下のような拡張案を検討することができます。

QRコードのカスタマイズ
  • デザインのカスタマイズ: QRコードのデザインをカスタマイズし、会社のロゴやカラースキームを追加することで、ブランドイメージを強化します。
  • 動的QRコード: QRコードの内容を後から変更できるようにし、例えばリンク先のURLを変更する際にもQRコードを再印刷する必要がなくなります。
モバイルアプリとの連携
  • モバイルアプリ統合: QRコードを生成するシステムをモバイルアプリと連携させ、スマートフォンから直接QRコードを生成・管理できるようにします。
  • バーコードリーダー機能: モバイルアプリにQRコードリーダー機能を組み込み、スキャンした情報をリアルタイムでデータベースに送信する機能を追加します。
セキュリティの強化
  • アクセス制御: QRコード生成システムにアクセス制御を導入し、権限のあるユーザーのみがQRコードを生成できるようにします。
  • 暗号化: QRコードに含まれる情報を暗号化し、機密情報を保護します。暗号化されたデータをQRコードとして表示し、専用のアプリで復号化することができます。

まとめ

この記事では、QRコードをPHPで生成する方法について解説しました。基本的なQRコード生成から、業務への応用、さらには拡張機能の実装まで、幅広い活用方法を紹介しました。この記事を参考にして、QRコードを業務に効果的に活用し、業務の効率化とサービスの向上を実現してください。

また、実際の業務に合わせたカスタマイズや拡張を行うことで、より一層の利便性と効率化を図ることができます。QRコードの活用範囲は広く、さまざまなシーンでの活用が期待されます。これからのビジネスにおいて、QRコードを効果的に活用し、新たな価値を創造してください。

以上が、PHPを用いたQRコード生成の詳細な解説と業務への応用についての説明です。お役に立てれば幸いです。