Accents et caractères spéciaux PHP
Fermé
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
-
7 juil. 2010 à 16:43
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 10 juil. 2010 à 00:15
avion-f16 Messages postés 19249 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 15 juin 2024 - 10 juil. 2010 à 00:15
A voir également:
- Accents et caractères spéciaux PHP
- Caractères spéciaux clavier azerty - Guide
- Caractere speciaux - Guide
- Caractères ascii - Guide
- Caractères spéciaux mac - Guide
- Easy php - Télécharger - Divers Web & Internet
6 réponses
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 503
Modifié par avion-f16 le 8/07/2010 à 17:15
Modifié par avion-f16 le 8/07/2010 à 17:15
C'est pour ça que PHP a une option "magic_quote_gpc".
Cette directive permet d'appliquer la fonctiona addslashes sur toutes les données GPC (GET, POST, COOKIE), donc tu devras quand même faire un stripslashes. Le gros désavantage, c'est que tous les serveurs n'ont pas cette option activée, et toutes les données GPC n'ont pas forcément besoin d'être enregistrées dans une base SQL. Dans ce cas, le développeur doit faire des stripslashes. Cette fonction est obsolète depuis PHP 5.3.0 et sera supprimée en PHP6, je te conseil donc de travailler sans cette option, et annuler son effet si ton serveur l'a activé (cf. ici).
Avec la méthode PDO::quote, tu n'as pas besoin de faire un stripslashes, ni de mettre des guillemets dans tes requêtes.
Exemple :
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
Cette directive permet d'appliquer la fonctiona addslashes sur toutes les données GPC (GET, POST, COOKIE), donc tu devras quand même faire un stripslashes. Le gros désavantage, c'est que tous les serveurs n'ont pas cette option activée, et toutes les données GPC n'ont pas forcément besoin d'être enregistrées dans une base SQL. Dans ce cas, le développeur doit faire des stripslashes. Cette fonction est obsolète depuis PHP 5.3.0 et sera supprimée en PHP6, je te conseil donc de travailler sans cette option, et annuler son effet si ton serveur l'a activé (cf. ici).
Avec la méthode PDO::quote, tu n'as pas besoin de faire un stripslashes, ni de mettre des guillemets dans tes requêtes.
Exemple :
<?php $pdo = new PDO('mysql:host=localhost;dbname=ta_base','root',''); $nom = $pdo->quote($_POST['nom']); $prenom = $pdo->quote($_POST['prenom']); $age = (int) $_POST['age']; $sql = 'INSERT INTO membres( nom, prenom, age ) VALUES( '.$nom.', '.$prenom.', '.$age.')'; $pdo->exec($sql); ?>
Ton ordinateur ne fait pas ce que tu veux ... mais ce que tu lui dis de faire.
cddu33
Messages postés
1269
Date d'inscription
vendredi 11 janvier 2008
Statut
Membre
Dernière intervention
8 septembre 2015
256
7 juil. 2010 à 16:47
7 juil. 2010 à 16:47
on utilise addslach pour eviter l'insertion de code malveillant dans la base de donné.
donc
avant l'envoi des donné a la base de donné, on met addslah puis quand tu veu recupérer les donné tu met stripslach
donc
avant l'envoi des donné a la base de donné, on met addslah puis quand tu veu recupérer les donné tu met stripslach
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 503
7 juil. 2010 à 17:37
7 juil. 2010 à 17:37
Salut.
addslahes est à utiliser lors d'une requête "INSERT INTO", pour éviter les injections SQL.
Lorsque tu veux afficher le contenu (SELECT champs FROM table), tu dois utiliser stripslashes qui annule l'effet d'addslashes et htmlspecialschars pour éviter les failles XSS.
Perso j'utiliser la classe PDO et la méthode PDO::quote() pour éviter les injections SQL. Je n'ai même pas besoin de faire un stripslashes et dans la requête "INSERT INTO" je ne dois pas mettre de guillemets autour des chaines.
Ton problème d'accent ne vient peut-être pas de là. Vérifie que l'encodage de tes scripts, celui indiqué dans la meta (mets-la si tu n'en as pas) et celui de tes tables soient les mêmes.
addslahes est à utiliser lors d'une requête "INSERT INTO", pour éviter les injections SQL.
Lorsque tu veux afficher le contenu (SELECT champs FROM table), tu dois utiliser stripslashes qui annule l'effet d'addslashes et htmlspecialschars pour éviter les failles XSS.
Perso j'utiliser la classe PDO et la méthode PDO::quote() pour éviter les injections SQL. Je n'ai même pas besoin de faire un stripslashes et dans la requête "INSERT INTO" je ne dois pas mettre de guillemets autour des chaines.
Ton problème d'accent ne vient peut-être pas de là. Vérifie que l'encodage de tes scripts, celui indiqué dans la meta (mets-la si tu n'en as pas) et celui de tes tables soient les mêmes.
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
283
8 juil. 2010 à 10:15
8 juil. 2010 à 10:15
Ok mais je trouve ça très lourd et contraignant de devoir faire des addslashes sur chaque données postées lorsqu'on fait un INSERT ou un UPDATE, et de faire des stripslashes à chaque fois qu'on veut afficher des données provenant d'une requête SELECT.
Concernant mes problèmes d'accents je ne comprends absolument pas d'où vient ce problème puisque mes fichiers sont en ISO, la balise meta également...
Concernant mes problèmes d'accents je ne comprends absolument pas d'où vient ce problème puisque mes fichiers sont en ISO, la balise meta également...
cddu33
Messages postés
1269
Date d'inscription
vendredi 11 janvier 2008
Statut
Membre
Dernière intervention
8 septembre 2015
256
8 juil. 2010 à 12:11
8 juil. 2010 à 12:11
essai de tout codé en utf8
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
283
8 juil. 2010 à 14:34
8 juil. 2010 à 14:34
Non je ne vais pas changer tout l'encodage de mon site... Ce n'est pas une solution.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Sandriine
Messages postés
1255
Date d'inscription
samedi 9 décembre 2006
Statut
Membre
Dernière intervention
18 août 2010
283
9 juil. 2010 à 10:04
9 juil. 2010 à 10:04
Ok merci je vais me renseigner sur cette méthode.
Avec cette méthode, il faut également désactiver l'option "magic_quote_gpc" ?
Avec cette méthode, il faut également désactiver l'option "magic_quote_gpc" ?
avion-f16
Messages postés
19249
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
15 juin 2024
4 503
10 juil. 2010 à 00:15
10 juil. 2010 à 00:15
Si ton hébergeur te le permet, il vaut mieux.
https://www.php.net/manual/fr/security.magicquotes.disabling.php
https://www.php.net/manual/fr/security.magicquotes.disabling.php