<?php
// 启动会话和安全检查
session_start();
if (PHP_VERSION_ID < 70200) {
    echo '文煞CMS（api版）：当前PHP版本['.PHP_VERSION.']，系统支持PHP版本：PHP≥7.2.0，PHP版本不匹配！';
    exit;
} 
// 加载配置和函数
require_once 'config.php';
require_once INCLUDE_PATH . '/functions.php';
require_once INCLUDE_PATH . '/cache.php';
require_once INCLUDE_PATH . '/api.php';
require_once INCLUDE_PATH . '/template.php';

// 初始化系统
init_cache();

// 安全过滤输入
$_GET = safe_input($_GET);
$_POST = safe_input($_POST);

// 严格路由控制
$request_uri = $_SERVER['REQUEST_URI'];
$script_name = $_SERVER['SCRIPT_NAME'];

// 解析URL路由
parse_rewrite_url();

// 重新获取解析后的参数
$mod = $_GET['mod'] ?? 'index';
$id = isset($_GET['id']) ? intval($_GET['id']) : 0;
$cate = isset($_GET['cate']) ? intval($_GET['cate']) : 0;
$author = isset($_GET['author']) ? intval($_GET['author']) : 0;
$page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
$keyword = $_GET['keyword'] ?? '';

// 严格参数验证
$valid_mods = ['index', 'category', 'post', 'author', 'search', 'update_cache'];
if (!in_array($mod, $valid_mods)) {
    display_error(404, '页面不存在');
}

// 参数完整性检查
switch ($mod) {
    case 'category':
        if ($cate <= 0) {
            display_error(404, '分类不存在');
        }
        break;
    case 'post':
        if ($id <= 0) {
            display_error(404, '文章不存在');
        }
        break;
    case 'author':
        if ($author <= 0) {
            display_error(404, '作者不存在');
        }
        break;
    case 'search':
        if (empty($keyword)) {
            display_error(400, '搜索关键词不能为空');
        }
        break;
}

// CSRF保护
$config = $GLOBALS['config'] ?? [];
$security_config = $config['security'] ?? [];
if ($security_config['csrf_protection'] ?? false) {
    check_csrf_token();
}

// 在路由分发之前添加别名处理
if ($mod === 'category' && isset($_GET['alias'])) {
    $category = get_category_by_alias($_GET['alias']);
    if ($category) {
        $cate = $category['id'];
    } else {
        display_error(404, '分类不存在');
    }
}

// 在路由分发之前，确保搜索参数正确传递
if ($mod === 'search' && !empty($keyword)) {
    // 确保keyword参数正确传递到模板
    $_GET['keyword'] = $keyword;
}

// 路由分发
try {
    switch ($mod) {
        case 'index':
            render_index($page);
            break;
        case 'category':
            if ($cate <= 0) {
                display_error(404, '分类不存在');
            }
            render_category($cate, $page);
            break;
        case 'post':
            if ($id <= 0) {
                display_error(404, '文章不存在');
            }
            render_post($id);
            break;
        case 'author':
            if ($author <= 0) {
                display_error(404, '作者不存在');
            }
            render_author($author, $page);
            break;
        case 'search':
            if (empty($keyword)) {
                display_error(400, '搜索关键词不能为空');
            }
            render_search($keyword, $page);
            break;
        case 'update_cache':
            render_update_cache();
            break;
        default:
            display_error(404, '页面不存在');
    }
} catch (Exception $e) {
    error_log("Routing error: " . $e->getMessage());
    display_error(500, '系统内部错误');
}

// 性能统计（开发环境）
if (ini_get('display_errors')) {
    $load_time = microtime(true) - $_SERVER['REQUEST_TIME_FLOAT'];
    error_log("Page loaded in " . round($load_time * 1000, 2) . "ms");
}
?>