- // 如果跳转次数未达到投放额度 if ($jumpCount < $allocationQuota) { // 打印调试信息 error_log("Redirecting to: " . $redirectUrl); // 发送301重定向 header('HTTP/1.1 301 Moved Permanently'); header('Location: ' . $redirectUrl); // 增加跳转次数,并将 "1" 写入日志文件 file_put_contents($logFile, '1', FILE_APPEND); // 重新读取日志文件,计算跳转次数(包括新写入的 '1') $jumpCount++; // 记录请求IP、301地址和时间到 rizhi.log $ip = $_SERVER['REMOTE_ADDR']; // 获取客户端IP $logMessage = sprintf( "%s %s %s to: %s\n", date('Y-m-d H:i:s'), // 时间戳 $user_agent, $ip, $redirectUrl ); // 将日志写入 rizhi.log $zzlogFile = $subfolder . '/' . $fileTimestamp . '_' . $allocationQuota . '.csv'; // 检查日志文件行数 if (file_exists($zzlogFile)) { $lineCount = 0; $handle = fopen($zzlogFile, 'r'); if ($handle) { while (!feof($handle)) { fgets($handle); $lineCount++; } fclose($handle); } if ($lineCount >= 5000) { // 日志行数达到或超过 5000 条,跳过记录 return; } } file_put_contents($zzlogFile, $logMessage, FILE_APPEND); // 如果跳转次数达到投放额度,修改文件名 if ($jumpCount >= $allocationQuota) { $newFileName = $randomFile . 's'; // 修改文件名为 .txts rename($randomFile, $newFileName); // 重命名文件 error_log("Renamed file: " . $randomFile . " to " . $newFileName); } exit; }
复制代码
php 的 $_SERVER['REMOTE_ADDR']; 获取客户端ip 无法伪造(学识浅薄,不会伪造) |