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']; // une image
// des formulaires simples
$titre = htmLawed($titre, $configHtmLawed, $specHtmLawed);
$titre = trim($titre);
$annee = htmLawed($annee, $configHtmLawed, $specHtmLawed);
$annee = trim($annee);
// pochette
// Album->imageUpload();
// test formats jpg, jpeg, png, gif, tiff
// enregistrement du fichier
// du ckeditor
$contenu = htmLawed($contenu, $configHtmLawed, $specHtmLawed);
$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();
}
}