- Konu Yazar
- #1
JavaScript:
<?php
// --- Gerçek IP yakalama (CDN / Proxy uyumlu) ---
function getClientIp(): string {
$candidates = [
'HTTP_CF_CONNECTING_IP', // Cloudflare
'HTTP_X_REAL_IP', // Nginx
'HTTP_X_FORWARDED_FOR',
'REMOTE_ADDR'
];
foreach ($candidates as $key) {
if (!empty($_SERVER[$key])) {
$ip = $_SERVER[$key];
if ($key === 'HTTP_X_FORWARDED_FOR') {
$ip = trim(explode(',', $ip)[0]);
}
return $ip;
}
}
return 'unknown';
}
// --- Tüm header'ları al ---
$headers = function_exists('getallheaders') ? getallheaders() : [];
// Fallback (bazı sunucularda getallheaders yok)
if (empty($headers)) {
foreach ($_SERVER as $key => $value) {
if (str_starts_with($key, 'HTTP_')) {
$name = str_replace('_', '-', substr($key, 5));
$headers[$name] = $value;
}
}
}
// --- Log verisi oluştur ---
$data = [
'timestamp' => date('c'),
'ip' => getClientIp(),
'method' => $_SERVER['REQUEST_METHOD'] ?? '',
'uri' => $_SERVER['REQUEST_URI'] ?? '',
'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? '',
'headers' => $headers
];
// --- Dosyaya JSON olarak ekle ---
$logFile = __DIR__ . '/../secure_logs/browser_logs.txt';
// Web root dışında olması önerilir
$logDir = dirname($logFile);
if (!is_dir($logDir)) {
mkdir($logDir, 0750, true);
}
file_put_contents(
$logFile,
json_encode($data, JSON_UNESCAPED_UNICODE) . PHP_EOL,
FILE_APPEND | LOCK_EX
);

