<form action="validation-reponse.php" method="post">
<input name="titre" type="text" id="titre" />
<textarea name="description" rows="10" id="description"></textarea>
<input name="submit" type="submit" value="Valider" />
</form>
qui envoie les données dans ma base :
<?PHP
include("../connexion-sql.php");
$titre = $_POST['titre'];
$description = $_POST['description'];
$sql = "INSERT INTO IWantenne(id, titre, description) VALUES('','$titre','$description'')"; mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error());
//si les données son biens enregistrées dans la base :
echo 'L\'info a bien été enregistrée.';
mysql_close();
?>
Comment j'intégre le mysql_real_escape_string() sachant que dans ce cas je n'ai que 2 infos mais je peu en avoir une quinzaine ? <?PHP
include("../connexion-sql.php");
$titre = $_POST['titre'];
$description = $_POST['description'];
mysql_real_escape_string($titre ));
mysql_real_escape_string($description ));
$sql = "INSERT INTO IWantenne(id, titre, description) VALUES('','$titre','$description'')"; mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error());
//si les données son biens enregistrées dans la base :
echo 'L\'info a bien été enregistrée.';
mysql_close();
?>
<?PHP
include("../connexion-sql.php");
$titre = $_POST['titre'];
$description = $_POST['description'];
mysql_real_escape_string($titre ));
mysql_real_escape_string($description ));
non comme ça : $titre = mysql_real_escape_string($_POST['titre']); <?PHP
include("../connexion-sql.php");
$titre =mysql_real_escape_string(strip_tags( $_POST['titre']));
$description = mysql_real_escape_string(strip_tags($_POST['description']));
$sql = "INSERT INTO IWantenne(id, titre, description) VALUES('','$titre','$description'')"; mysql_query($sql) or die('Erreur SQL !'.$sql.' '.mysql_error());
//si les données son biens enregistrées dans la base :
echo 'L\'info a bien été enregistrée.';
mysql_close();
?>
En affectant ton $_POST['titre'] et $_POST['description'] sous cette forme tu fais un nettoyage des tags HTML dans ce que l'on t'envoi via le formulaire et ensuite tu protége tes valeurs pour l'envoi à la base de données.<textarea name="description" rows="10" id="description"></textarea>
j'utilise tinymce est ce qu'a l'affichage je ne risque pas d'avoir par exemple le code qui s'affiche au lieu de la mise en page qui aura été faite avec tinymce ?
Ben non car comment ferait-on pour afficher des extraits de code comme par exemple dans ce forum ?Je te dirai d'ajouter strip_tags
Dans le cas présent, je doute qu'il s'agisse d'un forum où l'on soumette du code. Il suffit de voir le nom des champs utilisés. "Titre" et "Description", peut importe ce que cela décrit, mais je ne penses pas qu'on souhaite se retrouver avec des tags HTML polluant le titre et la description (corriges moi fabrice si jamais). A moins bien sur qu'il utilise un éditeur en JS du genre CKEditor ou TinyMCE.Ben non car comment ferait-on pour afficher des extraits de code comme par exemple dans ce forum ?Je te dirai d'ajouter strip_tags
C'est l'affichage que l'on protège avec htmlentities ou htmlspecialchars (et éventuellement strip_tags dans des circonstances particulières), mais la bdd doit être en mesure d'enregistrer tous les caractères.
Mon message c'est croisé avec le tien, en effet dans ce cas, il y aura un problème avec strip_tags. C'est sûr.OK MERCI.
Maintenant striptags() ou htmlentities().
si j'utilise un editeur wyswyg comme tinymce celà ne risque t'il pas de poser probleme ?
si sur mon champj'utilise tinymce est ce qu'a l'affichage je ne risque pas d'avoir par exemple le code qui s'affiche au lieu de la mise en page qui aura été faite avec tinymce ?<textarea name="description" rows="10" id="description"></textarea>
Mais ce que tu dis pour htmlentities est également valable pour strip_tags .... Son utilisation lors de la génération de la page HTML suffit.Dans le cas présent, je doute qu'il s'agisse d'un forum où l'on soumette du code. Il suffit de voir le nom des champs utilisés. "Titre" et "Description", peut importe ce que cela décrit, mais je ne penses pas qu'on souhaite se retrouver avec des tags HTML polluant le titre et la description (corriges moi fabrice si jamais). A moins bien sur qu'il utilise un éditeur en JS du genre CKEditor ou TinyMCE.Ben non car comment ferait-on pour afficher des extraits de code comme par exemple dans ce forum ?Je te dirai d'ajouter strip_tags
C'est l'affichage que l'on protège avec htmlentities ou htmlspecialchars (et éventuellement strip_tags dans des circonstances particulières), mais la bdd doit être en mesure d'enregistrer tous les caractères.
En plus d'une sécurité c'est un bon nettoyage. Rien n'empêche d'ajouter html_entities après le strip_tags pour obtenir un affichage correct du contenu de ces champs dans une page avec un bon encodage des caractères spéciaux et que le W3C soit fier de vous.
Et en général, il est préférable d'éviter de faire un htmlentities pour le stockage si on ne veut pas de code HTML, car cela est assez embêtant lorsque l'on fait une sortie des données vers un fichier CSV par exemple. On est obligé de se farcir un script maison au lieu d'utiliser un simple client MySQL ou PostgreSQL. Son utilisation lors de la génération de la page HTML suffit.
Pour les éditeurs WYSWYG tu as ceci : http://www.bioinformatics.org/phplabwar ... YSIWYG.htmbon alors comme mon champ description est lié a un editeur wyswyg (tinymce) si je met un htmlentities() j'ai tout le code qui apparait.
si je comprend bien il n'y a donc pas moyen de protéger le champ description afin d'evité que certaine personnes ajoute des script ou autre qui poluraient mon site.
Si mets htmlentities() où ?bon alors comme mon champ description est lié a un editeur wyswyg (tinymce) si je met un htmlentities() j'ai tout le code qui apparait.
<?PHP echo htmlentities($result['description']); ?>
du coup au lieu d'avoir par exemple :<SCRIPT language="Javascript">
<!--
alert("Voici un message d\'alerte!");
// -->
</SCRIPT>
et j'ai le code qui s'affiche et le script ne s'execute pas.