ผังการทำงาน (Web Flow)
ลำดับขั้นตอนตั้งแต่ผู้ใช้กดปุ่มในเบราว์เซอร์ ไปจนถึงระบบดึงข้อมูลจากชิปบนบัตรแล้วส่งผลลัพธ์
กลับมาแสดงในหน้าเว็บ ทุกจุดเรียกผ่านฟังก์ชันกลางเดียวกัน (core/IdCardReader.php)
ไม่มีตรรกะซ้ำซ้อนระหว่างหน้าเว็บกับ CLI
เรียกใช้งาน / ส่งคำขอ
ส่งข้อมูลกลับ
ผู้ใช้
เบราว์เซอร์
กดปุ่ม "อ่านบัตรประชาชน" ที่หน้า
reader.phpฝั่งไคลเอนต์
script.js
เปิด popup "กำลังอ่านข้อมูล..." แล้วยิง
fetch() ไปที่ api_read.phpเว็บเซิร์ฟเวอร์
web/api_read.php
เรียก
thai_id_card_read() จาก core/IdCardReader.php ซึ่งสั่งรัน PowerShell ผ่าน proc_open()Windows / PowerShell
core/ReadThaiIDCard.ps1
เชื่อมต่อเครื่องอ่านบัตรและส่งคำสั่ง APDU ผ่าน
winscard.dll โดยตรงฮาร์ดแวร์
เครื่องอ่าน + บัตร
รับคำสั่ง APDU แล้วส่งข้อมูลจากชิปกลับมา
กลับขึ้นไป
JSON ผ่าน stdout
PowerShell เขียนผลลัพธ์ด้วย
[Console]::Out.Write() โดยตรง (ไม่ผ่านตัวจัดรูปแบบ
อัตโนมัติของ PowerShell ที่อาจตัดบรรทัด JSON ให้เสียหาย) แล้ว PHP อ่านค่าและ
json_decode() ต่อ
ผู้ใช้เห็นผล
popup ผลลัพธ์
แสดงข้อมูลบัตรในหน้าเว็บ พร้อมปุ่มดาวน์โหลด JSON/รูปถ่าย — หากล้มเหลว จะแสดง popup แจ้งเหตุผลแทน