cookie01 Posté 13 Avril 2008 Posté 13 Avril 2008 Bonjour à tous, Voilà j'ai codé un script de news utilisant un système de bbcode. Le souci est que lorsque je modifie une news, la modification est enregistrée comme une nouvelle news et donc sous un nouvel id. J'ai beau chercher, je ne trouve pas d'où cela vient. J'imagine qu'il y a un souci à ce niveau : $id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification Il doit y avoir une perte de l'id... Voici liste_news.php : CODE <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Liste des news</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <style type="text/css"> h2, th, td { text-align:center; } table { border-collapse:collapse; border:2px solid black; margin:auto; } th, td { border:1px solid black; } </style> </head> <body> <h2><a href="rediger_news.php">Ajouter une news</a></h2> <?php require ("connect.php"); //----------------------------------------------------- // Vérification 1 : est-ce qu'on veut poster une news ? //----------------------------------------------------- if (isset($_POST['titre']) AND isset($_POST['contenu'])) { $titre = addslashes($_POST['titre']); $contenu = addslashes($_POST['contenu']); // On vérifie si c'est une modification de news ou pas if ($_POST['id_news'] == 0) { //------------------------------- // Fonction qui traite le BBcode //------------------------------- function bbcode_format ($contenu) { $simple_search = array( '/\[g\](.*?)\[\/g\]/is', '/\[i\](.*?)\[\/i\]/is', '/\[s\](.*?)\[\/s\]/is', '/\[u rl=http://(.*?)\](.*?)\[\/url\]/is', '/\[image](.*?)\[\/image_description=(.*?)\]/is', '/\[image_gauche](.*?)\[\/image_gauche]/is', '/\[image_droite](.*?)\[\/image_droite]/is', ); $simple_replace = array( '<strong>$1</strong>', '<em>$1</em>', '<u>$1</u>', '<a href="$1">$2</a>', '<img src="$1" alt="$2" class="cadre_image" />', '<span class="float_left">$1</span>', '<span class="float_right">$1</span>', ); $contenu = preg_replace ($simple_search, $simple_replace, $contenu); return $contenu; } // Ce n'est pas une modification, on crée une nouvelle entrée dans la table mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . bbcode_format($contenu) . "', '" . time() . "')") or die(mysql_error()); } else { // On protège la variable "id_news" pour éviter une faille SQL $_POST['id_news'] = addslashes($_POST['id_news']); // C'est une modification, on met juste à jour le titre et le contenu; mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'") or die(mysql_error()); } } //-------------------------------------------------------- // Vérification 2 : est-ce qu'on veut supprimer une news ? //-------------------------------------------------------- if (isset($_GET['supprimer_news'])) // Si on demande de supprimer une news { // Alors on supprime la news correspondant // On protège la variable "id_news" pour éviter une faille SQL $_GET['supprimer_news'] = addslashes($_GET['supprimer_news']); mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\'') or die(mysql_error()); } ?> <table><tr> <th>Modifier</th> <th>Supprimer</th> <th>Titre</th> <th>Date</th> </tr> <?php $retour = mysql_query('SELECT * FROM news ORDER BY id DESC'); while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les éditos { ?> <tr> <td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td> <td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td> <td><?php echo stripslashes($donnees['titre']); ?></td> <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td> </tr> <?php } // Fin de la boucle qui liste les news ?> </table> </body> </html> Et voici rediger_news.php : CODE <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Rédiger une news</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <style type="text/css"> h3, form { text-align:center; } </style> <script type="text/javascript"> <!-- function insertion(repdeb, repfin) { var input = document.forms['formulaire'].elements['contenu']; input.focus(); /* pour l'Explorer Internet */ if(typeof document.selection != 'undefined') { /* Insertion du code de formatage */ var range = document.selection.createRange(); var insText = range.text; range.text = repdeb + insText + repfin; /* Ajustement de la position du curseur */ range = document.selection.createRange(); if (insText.length == 0) { range.move('character', -repfin.length); } else { range.moveStart('character', repdeb.length + insText.length + repfin.length); } range.select(); } /* pour navigateurs plus récents basés sur Gecko*/ else if(typeof input.selectionStart != 'undefined') { /* Insertion du code de formatage */ var start = input.selectionStart; var end = input.selectionEnd; var insText = input.value.substring(start, end); input.value = input.value.substr(0, start) + repdeb + insText + repfin + input.value.substr(end); /* Ajustement de la position du curseur */ var pos; if (insText.length == 0) { pos = start + repdeb.length; } else { pos = start + repdeb.length + insText.length + repfin.length; } input.selectionStart = pos; input.selectionEnd = pos; } /* pour les autres navigateurs */ else { /* requête de la position d'insertion */ var pos; var re = new RegExp('^[0-9]{0,3}$'); while(!re.test(pos)) { pos = prompt("Insertion à la position (0.." + input.value.length + "):", "0"); } if(pos > input.value.length) { pos = input.value.length; } /* Insertion du code de formatage */ var insText = prompt("Veuillez entrer le texte à formater:"); input.value = input.value.substr(0, pos) + repdeb + insText + repfin + input.value.substr(pos); } } //--> </script> </head> <body> <h3><a href="liste_news.php">Retour à la liste des news</a></h3> <?php require ("connect.php"); if (isset($_GET['modifier_news'])) // Si on demande de modifier une news { // On protège la variable "modifier_news" pour éviter une faille SQL $_GET['modifier_news'] = mysql_real_escape_string(htmlspecialchars($_GET['modifier_news'])); // On récupère les infos de la news correspondant $retour = mysql_query('SELECT * FROM news WHERE id=\'' . $_GET['modifier_news'] . '\'') or die(mysql_error()); $donnees = mysql_fetch_array($retour); //------------------------------- // Fonction qui traite le BBcode //------------------------------- $contenu = $donnees['contenu']; function bbcode_format ($contenu) { $simple_search = array( '/\<strong\>(.*?)\<\/strong\>/is', '/\<em\>(.*?)\<\/em\>/is', '/\<u\>(.*?)\<\/u\>/is', '/\<a href="(.*?)"\>(.*?)\<\/a\>/is', '/\<img src="(.*?)" alt="(.*?)" class="cadre_image" \/>/is', '/\<span class="float_left"\>(.*?)\<\/span\>/is', '/\<span class="float_right"\>(.*?)\<\/span\>/is', ); $simple_replace = array( '[g]$1[/g]', '$1', '$1', '$2', '[image]$1[/image_description=$2]', '[image_gauche]$1[/image_gauche]', '[image_droite]$1[/image_droite]', ); $contenu = preg_replace ($simple_search, $simple_replace, $contenu); return $contenu; } // On place le titre et le contenu dans des variables simples $titre = stripslashes($donnees['titre']); $contenu = bbcode_format($contenu); $contenu = stripslashes($contenu); $id_news = $donnees['id']; // Cette variable va servir pour se souvenir que c'est une modification } else // C'est qu'on rédige une nouvelle news { // Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news $titre = ''; $contenu = ''; $id_news = 0; // La variable vaut 0, donc on se souviendra que ce n'est pas une modification } ?> <form action="liste_news.php" method="post" name="formulaire"> <p align="center"><h4>Titre :</h4> <input type="text" size="30" name="titre" value="<?php echo $titre; ?>"/><br /><br /> <h4>Contenu : </h4><input type="button" value="Gras" onClick="insertion('[g]', '[/g]')"/> <input type="button" value="Italique" onClick="insertion('', '')"/> <input type="button" value="Souligné" onClick="insertion('', '')"/> <input type="button" value="Lien" onClick="insertion('', '')"/> <input type="button" value="Image" onClick="insertion('[image]', '[/image_description=]')"/> <input type="button" value="Image alignée à gauche du texte" onClick="insertion('[image_gauche]', '[/image_gauche]')"/> <input type="button" value="Image alignée à droite du texte" onClick="insertion('[image_droite]', '[/image_droite]')"/><br /><br /> <textarea type="text" cols="80" rows="20" name="contenu"><?php echo $contenu; ?></textarea></td> <br /><br /> <input type="submit" value="Envoyer" /></p> </form> </body> </html> Merci d'avance
raptor Posté 14 Avril 2008 Posté 14 Avril 2008 C'est le bronx ton truc m'enfin, rajoute ca dans le formulaire : <input type="hidden" name="id_news" value="<?php echo $id_news; ?>"/> @+
cookie01 Posté 17 Avril 2008 Auteur Posté 17 Avril 2008 (modifié) Merci pour ton aide Le Bronx !!! A ce point là ?! Aurais-tu des conseils à me donner pour optimiser ce code, et le sécuriser ? Merci Modifié 17 Avril 2008 par cookie01
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant