PHP文件批量添加头部配置

20251209140903622-image

好用爱用

<?php
// 安全提示:建议在测试环境中先运行,备份重要文件
echo "<h3>PHP文件批量添加头部配置</h3>";

// 检查是否有确认参数
if (isset($_GET['confirm']) && $_GET['confirm'] == 'yes') {
    addConfigToPhpFiles();
} else {
    showWarning();
}

function showWarning() {
    echo "<div style='background-color:#fff3cd; border:1px solid #ffeaa7; padding:15px; margin:20px; border-radius:5px;'>";
    echo "<h4>⚠️ 安全警告</h4>";
    echo "<p>此脚本将执行以下操作:</p>";
    echo "<ol>";
    echo "<li>递归扫描当前目录及其所有子目录</li>";
    echo "<li>查找所有 .php 文件</li>";
    echo "<li>在每个PHP文件的开头添加 <code>&lt;?php require_once '../admin/config.php';?&gt;</code></li>";
    echo "</ol>";
    echo "<p style='color:#d63031; font-weight:bold;'>注意:此操作不可逆,请确保已备份重要文件!</p>";
    echo "<br>";
    echo "<a href='?confirm=yes' style='background-color:#e74c3c; color:white; padding:10px 20px; text-decoration:none; border-radius:4px;'>确认执行添加配置</a>";
    echo "&nbsp;&nbsp;";
    echo "<a href='?' style='background-color:#95a5a6; color:white; padding:10px 20px; text-decoration:none; border-radius:4px;'>取消</a>";
    echo "</div>";
}

function addConfigToPhpFiles() {
    $baseDir = __DIR__; // 当前目录(根目录)
    $configCode = "<?php require_once '../admin/config.php';?>\n";
    $count = 0;
    $errors = 0;
    $skipped = 0;
    
    echo "<div style='background-color:#d4edda; border:1px solid #c3e6cb; padding:15px; margin:20px; border-radius:5px;'>";
    echo "<h4>正在执行添加配置操作...</h4>";
    echo "<p>要添加的配置代码: <code>" . htmlspecialchars($configCode) . "</code></p>";
    
    // 使用递归迭代器遍历所有目录
    $iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($baseDir, RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::SELF_FIRST
    );
    
    foreach ($iterator as $file) {
        // 检查是否是.php文件
        if ($file->isFile() && strtolower($file->getExtension()) === 'php') {
            $filePath = $file->getPathname();
            $fileName = $file->getFilename();
            
            // 跳过当前脚本自身
            if ($fileName === basename(__FILE__)) {
                continue;
            }
            
            // 跳过admin目录下的config.php文件
            if (strpos($filePath, '/admin/config.php') !== false || 
                strpos($filePath, '\\admin\\config.php') !== false) {
                continue;
            }
            
            echo "<p>处理文件: " . htmlspecialchars($filePath) . "</p>";
            
            // 读取文件内容
            $content = file_get_contents($filePath);
            if ($content === false) {
                echo "<p style='color:#c0392b;'>错误: 无法读取文件 " . htmlspecialchars($filePath) . "</p>";
                $errors++;
                continue;
            }
            
            // 检查是否已经包含配置代码
            if (strpos($content, "require_once '/admin/config.php';") !== false) {
                echo "<p style='color:#f39c12;'>跳过: 文件已包含配置代码</p>";
                $skipped++;
                continue;
            }
            
            // 检查文件是否已经有PHP开放标签
            $hasOpeningTag = (strpos($content, '<?php') !== false);
            
            // 准备新内容
            $newContent = $configCode . $content;
            
            // 如果文件没有PHP开放标签但我们的配置代码添加了,这没问题
            // 如果文件已经有PHP开放标签,我们只需要在开头添加配置代码
            
            // 写入文件
            if (file_put_contents($filePath, $newContent) !== false) {
                echo "<p style='color:#27ae60;'>成功: 已添加配置代码</p>";
                $count++;
            } else {
                echo "<p style='color:#c0392b;'>错误: 无法写入文件 " . htmlspecialchars($filePath) . "</p>";
                $errors++;
            }
        }
    }
    
    echo "<hr>";
    echo "<h4>操作完成!</h4>";
    echo "<p>成功添加配置: <strong>{$count}</strong> 个文件</p>";
    echo "<p>跳过已包含配置: <strong>{$skipped}</strong> 个文件</p>";
    echo "<p>遇到错误: <strong>{$errors}</strong> 个文件</p>";
    echo "<p><a href='?'>返回</a></p>";
    echo "</div>";
}

// 显示当前目录信息
echo "<div style='background-color:#e9ecef; padding:10px; margin:10px 0; border-radius:4px;'>";
echo "<p><strong>当前目录:</strong> " . htmlspecialchars(__DIR__) . "</p>";
echo "<p><strong>配置路径:</strong> /admin/config.php</p>";
echo "</div>";
?>

 

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容