0) { if(empty($texte)) { header('Location: index.php?erreur=empty_input'); } // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine $texte = trim($texte); // supprimer les sauts de ligne $sautsDeLigne = array("\n", "\r", "\r\n"); $texte = str_replace($sautsDeLigne, '', $texte); // échapper tous les ', ", \ et caractère NULL $texte = addslashes($texte); } else { $texte = ''; // nouveau contenu } return($texte); } // réception du HTML créé par l'éditeur // le nom du fichier est celui dans $_SESSION['nomFichier'] function submitCKeditor($nomFichier) { $page = $_GET['page']; $contenu = $_POST['contenu']; // déjà fait mais on ne sait jamais if(!isset($_SESSION['admin']) || $_SESSION['admin'] != 1) { header('Location: index.php?page=' . $page . '&erreur=connexion'); } else { // récupérer les liens multimedia //require("media.php"); //$contenu = mediaSubmit($contenu); // sécurité faille XSS $configHtmLawed = array( 'safe'=>1, // protection contre les élements et attributs dangereux 'elements'=>'h2, h3, h4, p, br, span, i, strong, u, mark, blockquote, li, ol, ul, a, figure, hr, img, figcaption, table, tbody, tr, td', // paramètre optionnel: les balises non indiquées sont supprimées 'deny_attribute'=>'id', // gêner le JS hostile // on garde 'class' et 'style' utilisés par le ckediteur ); $specHtmLawed = ''; // optionnel: faire qu'un certain élément puisse n'avoir que certains attributs } if($page == 'discographie') { $titre = $_POST['titre']; $annee = $_POST['annee']; $pochette = $_POST['pochette']; $titre = htmLawed($titre, $configHtmLawed, $specHtmLawed); $titre = trim($titre); $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); $annee = htmLawed($annee, $configHtmLawed, $specHtmLawed); $annee = trim($annee); $contenu = trim($contenu); } else // pages comme "melaine" { // ne pas continuer si la variable est vide (javascript mal supporté ou utilisation de IE, bug?, erreur de l'utilisateur), risque perte de contenu !! if($contenu == '') { header('Location: index.php?page=' . $page . '&erreur=contenu_vide'); } else { // failles XSS $contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed); // supprimer espaces, tabulations et sauts de ligne en début et fin de chaine (pour l'entrée de l'éditeur) $contenu = trim($contenu); } } // lien sans http:// // un clic sur un lien dans l'éditeur affiche une infobulle montrant l'adresse cible du lien si celle-ci a déjà été précisée // il est possible de cliquer sur ce lien, ce qui ouvre un onglet avec le site demandé // toutefois si cette adresse est de type "domaine.fr" (sans http:// devant), le navigateur ne va pas rechercher un site mais un fichier comme si mon adresse était de type file:///fichier // tomber ainsi sur une page d'erreur est déroutant: // "ai-je perdu le texte que j'étais en train de taper?"" // solution 1 (mauvaise): activer la redirection en cas d'erreur 404 dans le .htaccess // solution 2 (façon pop-up): fermer ce nouvel onglet avec echo ''; // pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... //var_dump($titre, $annee, $pochette, $contenu); //die(); // modèle $Article = new ArticlesManager; $Article->setPage($page); // enregistrement if($_GET['article'] == 0) { $Article->create($contenu); } else { $Article->setFileName($nomFichier); $Article->update($contenu); } if($page == 'discographie') { $Album = new AlbumsManager; var_dump($_POST); echo('
'); //var_dump($_GET['article']); // enregistrement if($_GET['article'] == 0) { // ERREUR, il faut le même nombre de paramètre pour une méthode du même nom $Album->create($titre, $annee, $pochette); } else { $Album->update($titre, $annee, $pochette); } die(); } }