rootDir = dirname(__FILE__); $this->backupDir = $this->rootDir . '/backups_correct'; $this->logFile = $this->rootDir . '/correct_log.txt'; // Créer le dossier de sauvegarde si nécessaire if (!is_dir($this->backupDir)) { mkdir($this->backupDir, 0755, true); } } public function log($message) { $timestamp = date('Y-m-d H:i:s'); file_put_contents($this->logFile, "[$timestamp] $message\n", FILE_APPEND); } public function createBackup($filePath) { $fileName = basename($filePath); $backupPath = $this->backupDir . '/' . date('Y-m-d_H-i-s') . '_' . $fileName; if (copy($filePath, $backupPath)) { $this->log("Sauvegarde créée : $backupPath"); return $backupPath; } return false; } public function scanHtmlFiles() { $files = []; $iterator = new DirectoryIterator($this->rootDir); foreach ($iterator as $file) { if ($file->isFile() && $file->getExtension() === 'html') { $filePath = $file->getPathname(); $content = file_get_contents($filePath); $files[] = [ 'name' => $file->getFilename(), 'path' => $filePath, 'size' => $file->getSize(), 'modified' => date('Y-m-d H:i:s', $file->getMTime()), 'type' => $this->detectFileType($content), 'content' => $content ]; } } return $files; } public function detectFileType($content) { // Détecter index.html if (strpos($content, 'section-expertise') !== false || strpos($content, 'Nos Implantations') !== false || strpos($content, '') !== false && strpos($content, 'Accueil') !== false) { return 'index'; } // Détecter ville.html if (strpos($content, '[VILLE]') !== false || strpos($content, 'expert-comptable-') !== false || strpos($content, 'Services COMPLÈTE à') !== false) { return 'ville'; } return 'autre'; } public function supprimerMaillageIndex($filePath) { $content = file_get_contents($filePath); $originalContent = $content; // Méthode 1: Supprimer par classe $content = preg_replace('/<section[^>]*class="[^"]*section-expertise[^"]*"[^>]*>.*?<\/section>/s', '', $content); // Méthode 2: Supprimer par contenu "Nos Implantations" $content = preg_replace('/<section[^>]*>[\s\S]*?Nos Implantations[\s\S]*?<\/section>/i', '', $content); // Méthode 3: Supprimer toute div contenant "Nos Implantations" $content = preg_replace('/<div[^>]*>[\s\S]*?Nos Implantations[\s\S]*?<\/div>/i', '', $content); if ($content !== $originalContent) { $this->createBackup($filePath); file_put_contents($filePath, $content); $this->log("Maillage interne supprimé dans : " . basename($filePath)); return true; } return false; } public function supprimerLiensLegaux($filePath) { $content = file_get_contents($filePath); $originalContent = $content; // Supprimer mentions légales $content = preg_replace('/<a[^>]*href="[^"]*mentions-legales[^"]*"[^>]*>.*?<\/a>/i', '', $content); // Supprimer politique de confidentialité $content = preg_replace('/<a[^>]*href="[^"]*confidentialite[^"]*"[^>]*>.*?<\/a>/i', '', $content); $content = preg_replace('/<a[^>]*href="[^"]*politique-confidentialite[^"]*"[^>]*>.*?<\/a>/i', '', $content); // Nettoyer les séparateurs orphelins $content = preg_replace('/\|\s*\|/', '|', $content); $content = preg_replace('/\s*\|\s*$/', '', $content); if ($content !== $originalContent) { $this->createBackup($filePath); file_put_contents($filePath, $content); $this->log("Liens légaux supprimés dans : " . basename($filePath)); return true; } return false; } public function supprimerImagesServices($filePath) { $content = file_get_contents($filePath); $originalContent = $content; // Supprimer les images image100.* dans la section services $content = preg_replace('/<img[^>]*src="[^"]*image100[^"]*"[^>]*>/i', '', $content); // Supprimer les divs vides qui pourraient rester $content = preg_replace('/<div[^>]*>\s*<\/div>/', '', $content); if ($content !== $originalContent) { $this->createBackup($filePath); file_put_contents($filePath, $content); $this->log("Images services supprimées dans : " . basename($filePath)); return true; } return false; } public function remplacerPlanSite($filePath) { $content = file_get_contents($filePath); $originalContent = $content; // Remplacer plan-site.html par sitemap.xml $content = str_replace('plan-site.html', 'sitemap.xml', $content); if ($content !== $originalContent) { $this->createBackup($filePath); file_put_contents($filePath, $content); $this->log("Plan-site remplacé par sitemap.xml dans : " . basename($filePath)); return true; } return false; } } // Traitement des actions AJAX if ($_POST) { header('Content-Type: application/json'); $corrector = new FileCorrector(); $action = $_POST['action'] ?? ''; $fileName = $_POST['fileName'] ?? ''; $filePath = $corrector->rootDir . '/' . $fileName; $response = ['success' => false, 'message' => '']; if (!file_exists($filePath)) { $response['message'] = 'Fichier non trouvé'; echo json_encode($response); exit; } switch ($action) { case 'supprimerMaillage': $response['success'] = $corrector->supprimerMaillageIndex($filePath); $response['message'] = $response['success'] ? 'Maillage supprimé avec succès' : 'Aucun maillage trouvé'; break; case 'supprimerLiensLegaux': $response['success'] = $corrector->supprimerLiensLegaux($filePath); $response['message'] = $response['success'] ? 'Liens légaux supprimés avec succès' : 'Aucun lien légal trouvé'; break; case 'supprimerImages': $response['success'] = $corrector->supprimerImagesServices($filePath); $response['message'] = $response['success'] ? 'Images supprimées avec succès' : 'Aucune image trouvée'; break; case 'remplacerPlanSite': $response['success'] = $corrector->remplacerPlanSite($filePath); $response['message'] = $response['success'] ? 'Plan-site remplacé avec succès' : 'Aucun plan-site trouvé'; break; case 'corrigerTout': $results = []; $fileType = $_POST['fileType'] ?? ''; if ($fileType === 'index') { $results[] = $corrector->supprimerMaillageIndex($filePath); $results[] = $corrector->supprimerLiensLegaux($filePath); } elseif ($fileType === 'ville') { $results[] = $corrector->supprimerImagesServices($filePath); $results[] = $corrector->supprimerLiensLegaux($filePath); $results[] = $corrector->remplacerPlanSite($filePath); } $response['success'] = in_array(true, $results); $response['message'] = $response['success'] ? 'Corrections appliquées avec succès' : 'Aucune correction nécessaire'; break; } echo json_encode($response); exit; } $corrector = new FileCorrector(); $htmlFiles = $corrector->scanHtmlFiles(); ?> <!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Correct.php - Modification directe des fichiers

⚡ Correct.php AVANCÉ

Modification directe des fichiers HTML sur le serveur

🚀 Actions globales

Corriger tous les fichiers automatiquement

📁 Fichiers HTML détectés ()

Aucun fichier HTML trouvé dans le dossier racine.

Taille: KB | Modifié: