Aller au contenu

Souci avec des BR et des ' dans un fomulaire...


Sujets conseillés

Posté

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 :P 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 page
if($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>


<?php
mysql_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)

Posté

Ok merci je vais essayer d'implémenter tout ca dans mon code sans me planter ^^:P

EDIT: Bon voila j'ai changé et le souci des ' est totalement résolu :D

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 page
if($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>


<?php
mysql_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 !

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...