
好用愛用
<?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><?php require_once '../admin/config.php';?></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 " ";
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>";
?>