Gecko64 Posté 12 Septembre 2008 Posté 12 Septembre 2008 Bonjour Voilà j'ai un code et comme il est stipulé dans le sujet de mon post, j'ai un souci avec des formulaires et des <br />. Vous avez tous surement déjà eu la surprise du /n dans un formulaire a remettre en <br /> (ce qui va pour moi), et inversement pour le ré afficher dans une zone d'édition (ce qui ne va pas chez moi ) Bref, j'ai essayé par plusieurs méthodes mais rien a faire donc voilà la raison de mon post... Bon pour vous ennuyer deux plus qu'une j'ai un souci aussi avec les ' qui se mettent dans mon SQL. Exemple: je veux mettre dans le champ d'une table le tête :j'ai faim, ben ca merdouille... (sur l'idée de l'injection SQL si je ne m'abuse...) Bref, je sais que je dois convertir le ' en caractère ou plutôt code HTML depuis mon formulaire mais la aussi, n'étant pas encore un grand habitué du PHP (vous m'en verrez désolé mais on commence tous un jour), voilà pourquoi j'ai besoin d'aide... Le code de ma page qui est une page administration servant a gérer un contenu sur un site: <html><head><title>Contenu du site - Admin</title> <style type="text/css"> table { border-collapse:collapse; border: 2px solid blue; margin: auto; } th,td { border: 1px solid blue; } body { background-color:#bbd3c7; color:black; } h1 { color: Blue; } </style></head><body><?php include("_protect.php");//Version privée de la pageif($isOK) { include("connexion_BD.php");$retour = mysql_query("SELECT * FROM informations WHERE id='0'");$retour = mysql_fetch_array($retour);$societe = $retour['accueil_societe'];$mission = $retour['accueil_mission'];$adressepostale = $retour['nouscontacter_adressepostale'];$email = $retour['nouscontacter_email'];$telephone = $retour['nouscontacter_telephone'];$gsm = $retour['nouscontacter_gsm'];// elimination des <br />$societe = str_replace("<br />","",$societe);// soucis ici !!$mission = str_replace("<br />","",$mission);$adressepostale = str_replace("<br />","",$adressepostale);$email = str_replace("<br />","",$email);$telephone = str_replace("<br />","",$telephone);$gsm = str_replace("<br />","",$gsm);if (isset($_POST['societe']) or isset($_POST['mission'])or isset($_POST['adressepostale'])or isset($_POST['email'])or isset($_POST['telephone'])or isset($_POST['gsm'])) // vrai si le champ societe existe { if ( (($_POST['societe'])!=Null) and (($_POST['mission'])!=Null) and (($_POST['adressepostale'])!=Null)and (($_POST['email'])!=Null)and (($_POST['telephone'])!=Null)and (($_POST['gsm'])!=Null)) // vrai si le champs societe est complété { // detecter code HTML malveillant eventuel $societe = htmlentities($_POST['societe']); $mission = htmlentities($_POST['mission']); $adressepostale = htmlentities($_POST['adressepostale']); $email = htmlentities($_POST['email']); $gsm = htmlentities($_POST['gsm']); $telephone = htmlentities($_POST['telephone']); // mise en place des retours à la ligne $societe= NL2BR($societe); $mission= NL2BR($mission); $adressepostale = NL2BR($adressepostale); $email = NL2BR($email); $gsm = NL2BR($gsm); $telephone = NL2BR($telephone); $id=0; mysql_query("UPDATE informations SET id='" .$id."',accueil_societe='" . $societe."', accueil_mission='". $mission."',nouscontacter_telephone='" . $telephone. "', nouscontacter_gsm='" . $gsm."', nouscontacter_adressepostale='". $adressepostale."', nouscontacter_email='". $email."' WHERE id='0'"); } }?><center>Gestion du contenu textuel du site:<hr/><form action="contenu_admin.php" method="post"><p> Société : <textarea name="societe" cols="60" rows="5"><?php echo $societe;?> </textarea><br/> Mission :<textarea name="mission" cols="60" rows="5"><?php echo $mission;?> </textarea><br/> Téléphone:<input type="text" size="28" name="telephone" value="<?php echo $telephone; ?>"/> </br> Gsm:<input type="text" size="28" name="gsm" value="<?php echo $gsm; ?>"/> </br> Addresse postale:<textarea name="adressepostale" cols="25" rows="4"><?php echo $adressepostale;?> </textarea><br/> Email:<input type="text" size="28" name="email" value="<?php echo $email; ?>"/> </br> <input type="submit" value="Envoyer" /></p></center><?phpmysql_close();} else { //Version publique de la page?><center><h1>L'accès à cette page nécessite une identification préalable...</h1><a href="admin.php"> S'identifier </a></center><?php} ?></body></html> et pour la table de ma base de données s'y attachant: create table `informations` (`id` int(4) NOT NULL,`accueil_societe` TEXT NOT NULL,`accueil_mission` TEXT NOT NULL,`nouscontacter_telephone` TEXT NOT NULL,`nouscontacter_gsm` TEXT NOT NULL,`nouscontacter_adressepostale` TEXT NOT NULL,`nouscontacter_email` TEXT NOT NULL); Précision sur la DB, je me base sur un ID dedans qui doit être inséré et qui est mis a 0 (Merise inspired...) Ca me permet de savoir ce que je dois éditer et ou le réécrire dans ma table Un grand merci d'avance pour votre aide. Gecko64 (Marc)
Portekoi Posté 12 Septembre 2008 Posté 12 Septembre 2008 Bonjour, Pour les "'", utilise la fonction addslashes et stripslashes Pour les Br, utilise nl2br Et l'inverse de nl2br pour l'affichage en édition : function br2nl($text) { return preg_replace('/<br\\s*?\/??>/i', '', $text);} Portekoi
Gecko64 Posté 12 Septembre 2008 Auteur Posté 12 Septembre 2008 Ok merci je vais essayer d'implémenter tout ca dans mon code sans me planter EDIT: Bon voila j'ai changé et le souci des ' est totalement résolu Par contre pour le <br />, j'ai créé la fonction mais il ne semble pas le remettre en /n après l'insertion des données dans la DB <html><head><title>Contenu du site - Admin</title> <style type="text/css"> table { border-collapse:collapse ; border: 2px solid blue ; margin: auto ; } th,td { border: 1px solid blue ; } body { background-color:#bbd3c7 ; color:black ; } h1 { color: Blue ; } </style> </head><body><?php include("_protect.php");//Version privée de la pageif($isOK) { include("connexion_BD.php") ;$retour = mysql_query("SELECT * FROM informations WHERE id='0'") ;$retour = mysql_fetch_array($retour) ;$societe = $retour['accueil_societe'];$mission = $retour['accueil_mission'];$adressepostale = $retour['nouscontacter_adressepostale'];$email = $retour['nouscontacter_email'];$telephone = $retour['nouscontacter_telephone'] ;$gsm = $retour['nouscontacter_gsm'];//Mise a jour des informations ici en testant si c'est bien complete.if (isset($_POST['societe']) or isset($_POST['mission'])or isset($_POST['adressepostale'])or isset($_POST['email'])or isset($_POST['telephone'])or isset($_POST['gsm'])) // vrai si le champ societe existe { if ( (($_POST['societe'])!=Null) and (($_POST['mission'])!=Null) and (($_POST['adressepostale'])!=Null)and (($_POST['email'])!=Null)and (($_POST['telephone'])!=Null)and (($_POST['gsm'])!=Null)) // vrai si le champs societe est complété { // detecter code HTML malveillant eventuel $societe = htmlentities($_POST['societe']); $mission = htmlentities($_POST['mission']); $adressepostale = htmlentities($_POST['adressepostale']); $email = htmlentities($_POST['email']); $gsm = htmlentities($_POST['gsm']); $telephone = htmlentities($_POST['telephone']); // mise en place des retours à la ligne $societe= NL2BR($societe); $mission= NL2BR($mission); $adressepostale = NL2BR($adressepostale); $email = NL2BR($email); $gsm = NL2BR($gsm); $telephone = NL2BR($telephone); //On ajoute des \ devant les ' pour pas que le SQL foire. $societe = addslashes($societe); $mission = addslashes($mission); $adressepostale = addslashes($adressepostale); $email = addslashes($email); $gsm = addslashes($gsm); $telephone = addslashes($telephone); $id=0 ; //On insere les donnees dans la DB. mysql_query("UPDATE informations SET id='" .$id."',accueil_societe='" . $societe."', accueil_mission='". $mission."',nouscontacter_telephone='" . $telephone. "', nouscontacter_gsm='" . $gsm."', nouscontacter_adressepostale='". $adressepostale."', nouscontacter_email='". $email."' WHERE id='0'"); //Apres insertion des données, on les retraite pour les afficher correctement dans le formulaire. //Fonction qui elimite les <br />. function br2nl($texte) { return preg_replace('/<br\\s*?\/??>/i', '', $texte); } // Traitements pour l'elimination des <br /> $societe = br2nl($societe); $mission = br2nl($mission); $adressepostale = br2nl($adressepotale); $email = br2nl($email); $telephone = br2nl($telephone); $gsm = br2nl($gsm); //On vire les \ mis dans la DB pour resoudre les soucis avec des ' (ICI on a bien le texte sans les \ Teste en debug avec un echo) $societe= stripslashes($societe); $mission = stripslashes($mission); $adressepostale = stripslashes($adressepostale); $email = stripslashes($email); $telephone = stripslashes($telephone); $gsm = stripslashes($gsm); } }?><center>Gestion du contenu textuel du site:<hr/><form action="contenu_admin.php" method="post"><p> Société : <textarea name="societe" cols="60" rows="5"><?php echo $societe;?> </textarea><br/> Mission :<textarea name="mission" cols="60" rows="5"><?php echo $mission;?> </textarea><br/> Téléphone:<input type="text" size="28" name="telephone" value="<?php echo $telephone; ?>"/> </br> Gsm:<input type="text" size="28" name="gsm" value="<?php echo $gsm; ?>"/> </br> Addresse postale:<textarea name="adressepostale" cols="25" rows="4"><?php echo $adressepostale;?> </textarea><br/> Email:<input type="text" size="28" name="email" value="<?php echo $email; ?>"/> </br> <input type="submit" value="Envoyer" /></p></center><?phpmysql_close() ;} else { //Version publique de la page?><center><h1>L'accès à cette page nécessite une identification préalable...</h1><a href="admin.php"> S'identifier </a></center><?php} ?></body></html> Quelqu'un a une idée pcq ca me semble logique? EDIT2: Ok j'ai trouvé, j'avais inséré ca dans une fonction et au rechargement, ben ne passant pas dedans, le traitement pour la suppression des <BR> n'était pas exécuté Un grand merci !
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant