| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?php
- /**
- * Click tracking capture endpoint.
- * Logs request details to data/tracks.jsonl and redirects to the main page.
- * Usage: track.php (no parameters required)
- */
- $dataDir = __DIR__ . '/data';
- $logFile = $dataDir . '/tracks.jsonl';
- $mainPageUrl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http')
- . '://' . ($_SERVER['HTTP_HOST'] ?? 'localhost')
- . rtrim(dirname($_SERVER['SCRIPT_NAME'] ?? '/'), '/') . '/index.php';
- $ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
- $forwarded = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : '';
- $realIp = isset($_SERVER['HTTP_X_REAL_IP']) ? $_SERVER['HTTP_X_REAL_IP'] : '';
- $key = isset($_GET['key']) && $_GET['key'] !== '' ? trim($_GET['key']) : null;
- if ($key === 'KEY') {
- header('Location: ' . $mainPageUrl);
- exit;
- }
- $payload = [
- 'timestamp' => date('c'),
- 'key' => $key,
- 'target_url' => null,
- 'ip' => $ip,
- 'ip_forwarded' => $forwarded !== '' ? $forwarded : null,
- 'ip_real' => $realIp !== '' ? $realIp : null,
- 'user_agent' => isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null,
- 'referrer' => isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] !== '' ? $_SERVER['HTTP_REFERER'] : null,
- 'request_uri' => isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : null,
- 'request_method' => isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : null,
- 'query_string' => isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : null,
- 'accept_language' => isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? $_SERVER['HTTP_ACCEPT_LANGUAGE'] : null,
- 'accept' => isset($_SERVER['HTTP_ACCEPT']) ? $_SERVER['HTTP_ACCEPT'] : null,
- ];
- if (!is_dir($dataDir)) {
- mkdir($dataDir, 0755, true);
- }
- $line = json_encode($payload, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . "\n";
- file_put_contents($logFile, $line, FILE_APPEND | LOCK_EX);
- header('Location: ' . $mainPageUrl);
- exit;
|