HEX
Server: Apache/2.4.37 (CentOS Stream) OpenSSL/1.1.1k
System: Linux ysnet.com.tw 4.18.0-553.5.1.el8.x86_64 #1 SMP Tue May 21 05:46:01 UTC 2024 x86_64
User: test (521)
PHP: 7.4.33
Disabled: NONE
Upload Files
File: /var/www/nfc/chick.php
<?php
session_start();

// Step 1: 檢查 User-Agent,確保來自 NFC 裝置
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if (strpos($user_agent, 'NFCReaderApp') === false) {
    // 如果 User-Agent 不符合 NFC 應用的特徵,拒絕訪問
    echo "無效的訪問,請通過 NFC 掃描標籤進行訪問。";
    exit();
}

// Step 2: 檢查 Referer,確保來自正確的來源
$referer = $_SERVER['HTTP_REFERER'];
if (empty($referer) || strpos($referer, 'expected-nfc-source.com') === false) {
    echo "請通過 NFC 掃描標籤訪問此頁面。";
    exit();
}

// Step 3: 檢查 sessionStorage,這部分會由 JavaScript 來處理
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>NFC Check</title>

    <script>
    // JavaScript 檢查 sessionStorage,確保用戶通過 NFC 掃描
    if (!sessionStorage.getItem('nfc_scanned')) {
        // 如果沒有 nfc_scanned 標記,顯示錯誤訊息或重定向到錯誤頁面
        window.location.href = 'error.html'; // 你可以顯示一個錯誤頁面
    } else {
        // 如果 sessionStorage 中有 nfc_scanned,則表示用戶已經通過 NFC 掃描
        sessionStorage.setItem('nfc_scanned', 'true'); // 設置標記
        setTimeout(function(){
            sessionStorage.removeItem('nfc_scanned'); // 5 分鐘後自動清除
        }, 300000); // 300000 毫秒 = 5 分鐘
    }
    </script>
</head>
<body>
    <h1>驗證通過,重定向到 FileMaker WebDirect...</h1>
    <?php
    // 如果一切通過,則重定向到 FileMaker WebDirect
    $target_url = "https://yourdomain.com/fmi/webd/ysnet?script=chicknfc";
    header("Location: $target_url");
    exit();
    ?>
</body>
</html>