管理磁卡 cards
對應程式: cards.php

業務功能
管理學生磁卡(或 QR Code)的核心資料,包含卡號、姓名、學號、手機(編碼儲存)、Email(編碼儲存)。此頁是打卡系統中最常用的資料匯入頁面。
頁面操作
新增磁卡
在 textarea 中貼入資料(通常從 Google Spreadsheets 複製),一行一筆,欄位以反引號(`)或 Tab 分隔,共 5 欄:
磁卡號碼`姓名`學號`手機`Email
可同時勾選:
- 同時加入 card_kind:建立卡片與班級的對應關係。可選建立新 kind 或使用已存在的 kind_id。
- 同時加入 card_inputs:自動以 card_id 作為 card_input 建立晶片碼對應。
前台測試
頁面提供各教室的前台嗶卡連結與學生自查紀錄連結,方便匯入後立即測試。
刪除磁卡
點擊「顯示全部 cards/qrcodes」後,可勾選要刪除的卡片資料,支援全選,送出後經確認對話框刪除。
處理邏輯
- 手機號碼自動移除
-分隔符。 - 手機與 Email 會分別經
encode_phone_and_school_no()和encode_email_and_school_no()編碼後存入encodehash及encodehash2欄位,不儲存明碼。 - 以
get_card_by_card_id()檢查卡號是否已存在,若已存在則die()中止。 - 勾選「同時加入 card_kind」時:
- 選「新 kind」:驗證名稱格式後新增 kind 再建立對應。
- 選「已有 kind」:以 kind_id 查表確認存在後建立對應。
- 勾選「同時加入 card_inputs」時,自動以 card_id = card_input 寫入。
- 刪除功能使用 SQL
DELETE ... WHERE card_id IN (...)批次刪除。
備註
- 此頁整合了 kind.php、card_kind.php、card_inputs.php 三個頁面的功能,是日常匯入新班級資料的主要操作入口。
- 新增時若遇到重複 card_id 會直接
die()中止,不會繼續處理後續資料,操作前需確認資料無重複。 - 刪除功能只刪除
TBL_ENTER_CARDS表的資料,不會連帶刪除 card_kind 與 card_inputs 的對應(如需完整刪除,應使用 08-依學號刪資料 或 09-依卡號刪資料 頁面)。
使用的 Functions
| Function | 定義於 |
|---|---|
get_all_rooms($is__key__room_id) | enter_logs/inc.php |
get_all_kinds($is__key__kind_id) | enter_logs/inc.php |
get_all_cards() | enter_logs/inc.php |
get_card_by_card_id($card_id) | enter_logs/inc.php |
get_kind_by_kind_name($kind_name) | enter_logs/inc.php |
get_matched_classprefix($str, $is_detect_at_first) | _aiacademy_helper.php |
get_relatiionship_by_card_id_and_kind_id($card_id, $kind_id) | enter_logs/inc.php |
get_card_id_by_card_input($card_input) | enter_logs/inc.php |
get_card_input_by_card_id($card_id) | enter_logs/inc.php |
encode_phone_and_school_no($phone, $school_no) | enter_logs/inc.php |
encode_email_and_school_no($email, $school_no) | enter_logs/inc.php |
$wpdb->insert() / $wpdb->query() | WordPress core |