input->get('SN'); // ========================= // RAW BODY DARI MESIN // ========================= $body = file_get_contents('php://input'); // ========================= // LOG DIRECTORY // ========================= $logDir = APPPATH . 'logs/fingerprint/'; if (!is_dir($logDir)) { mkdir($logDir, 0777, true); } // ========================= // FILE LOG // ========================= $logFile = $logDir . date('Y-m-d') . '.log'; // ========================= // FORMAT LOG HEADER // ========================= $logText = "\n==================================================\n"; $logText .= "TIME : " . date('Y-m-d H:i:s') . "\n"; $logText .= "SN : " . $sn . "\n"; $logText .= "IP : " . $this->input->ip_address() . "\n"; $logText .= "DATA : \n"; // ========================= // PARSE BARIS ABSENSI // ========================= $lines = explode("\n", trim($body)); foreach ($lines as $line) { $line = trim($line); if (empty($line)) { continue; } $logText .= $line . "\n"; // contoh parsing $data = explode("\t", $line); /* hasil biasanya: [0] => PIN/User ID [1] => Datetime [2] => Status */ } // ========================= // SIMPAN LOG // ========================= file_put_contents($logFile, $logText, FILE_APPEND); // ========================= // RESPONSE KE MESIN // ========================= echo "OK"; } }