Rechercher : dans
Par :

[PHP] Apostrophe et addslashes

Dernière réponse le 29 jun 2009 à 12:21:20 Jo$$, le 28 jun 2009 à 19:35:50 
 Signaler ce message aux modérateurs

Bonjour,
J'ai du mal a gerer les apostrophe avec php dans mon formulaire ... je sais qu'il faut utiliser addslashes mais je sais pas vraiment ou ...

J'ai :




<?php
if (isset($_POST['titre'])  ) // Si les variables existent
{

        // D'abord, on se connecte à MySQL
		include("connexion.php"); 
 
       

        $titre = mysql_real_escape_string(htmlspecialchars($_POST['titre']));
    
        // Ensuite on enregistre le message
        mysql_query("INSERT INTO moi VALUES('', '$titre' )");
 
        // On se déconnecte de MySQL
        mysql_close();



et donc mon probleme est que je ne sais pas ou mettre precisement le addslashes car pour l'instant, le rendu des apostrophes est : \'


Merci de m'aider
Configuration: Windows XP
Firefox 3.0.7

Meilleures réponses pour « [PHP] Apostrophe et addslashes » dans :
[PHP] Les ressemblances à ne pas confondre VoirIntroduction Concaténation ou paramètres ? Guillemets/Apostrophe Structure require/include isset vs empty htmlentities ou htmlspecialchars ? Nombre de signes égal Introduction Cette astuce présente plusieurs fonction ou astuces en php...
Les guillemets, apostrophes et les chaînes VoirComment jouer avec les guillemets et les apostrophes dans les chaînes 1. Préambule 2. Éviter une coupure dans la chaîne 3. Ajouter un guillemet dans la chaîne 3.1 Avec l'apostrophe 3.2 Avec l'ASCII 3.3 Directement 3.3.1 Méthode...
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des...
Télécharger PHP FTP Synchronizer VoirLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
Introduction à PHP VoirQu'est-ce que PHP? PHP est un langage interprété (un langage de script) exécuté du côté serveur (comme les scripts CGI, ASP, ...) et non du côté client (un script écrit en Javascript ou une applet Java s'exécute sur votre ordinateur...). La...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

Mimiste, le 28 jun 2009 à 20:56:03
  • +1

Salut

Je pense que t'a pas bien saisi l'interet de addslashes

Cette fonction permet d'ajouter un \ devant les caracteres speciaux, pas de l'enlever ! Mais tu utilise mysql_real_escape_string donc tu n'a pas besoin d'un addslashes, ce serai redondant...

Ton code la est tout a fais correct
Ce que tu doit faire c'est lors de l'affichage des données, supprimer le \ grace a la fonction stripslashes.
Si ce message vous a aidé n'oubliez pas de dire MERCI ;)
La sportivité commence là où le diesel s'arrête !
You can still watch this ? Wait until the Vtec kick in !

Répondre à Mimiste

2

Jo$$, le 29 jun 2009 à 10:33:03

Bonjour,

Merci de ta réponse mais , maintenant , quand je rentre un titre avec une apostrophe, ça n'eregistre pas ...

J'ai peut etre pas mis au bon endroit le "stripslashes"

j'ai :


<?php
if (isset($_POST['titre'])  ) // Si les variables existent
{

        // D'abord, on se connecte à MySQL
		include("connexion.php"); 
 
       

        $titre =  stripslashes($_POST['titre']);
    
        // Ensuite on enregistre le message
        mysql_query("INSERT INTO moi VALUES('', '$titre' )");
 
        // On se déconnecte de MySQL
        mysql_close();





merci de m'ader a trouver une solution ....

Répondre à Jo$$

3

nEm3sis, le 29 jun 2009 à 10:40:42

Lis bien ce qu'il a dit avant ...

Ton code la est tout a fais correct
Ce que tu doit faire c'est lors de l'affichage des données, supprimer le \ grace a la fonction stripslashes. 

donc ton code était correct avant que tu mette stripslashes

il faut que tu utilise stripslashes quand tu lis le message dans la base et non quand tu l'ecris

Répondre à nEm3sis

4

le père, le 29 jun 2009 à 10:48:20
  • +1

Bonjour

Il ne faut pas utiliser addslashes pour insérer tes données dans la base, ni stripslahes pour les afficher.
Il faut peut-être utiliser stripslashes pour récupérer les informations par POST ou GET, ça dépend de la configuration de ton serveur.
Il faut utiliser mysql_real_escape_string pour enregistrer les informations dans la base
Il faut utiliser (si tu ne l'as pas fait à l'enregistrement) htmlspecialchars ou htmlentities pour les afficher

Lis la doc de ces fonctions dans le manuel PHP, c'est beaucoup plus fiable que les conseils qu'on trouve sur ce forum

Répondre à le père

5

Jo$$, le 29 jun 2009 à 11:26:07

Il n'y aurait pas une autre solution ? parce que la vous voulez que je change l'affichage sur toutes mes pages !
je n'ai pourtant pas de problème avec les apostrophes quand j'écris directement dans phpmyadmin .... le problème doit certainement venir du formulaire ....

si y'a pas d'autres solution que celle que vous me proposé , j'ai fait ça :

  <?php  $reponse = mysql_query("SELECT * FROM moi WHERE id='".$_GET['var']."'"); $donnees = mysql_fetch_array($reponse)  ?>
		

<?php echo stripslashes($donnees['titre'] ); ?>



et en effet ça marche bien, MERCI :) , mais si je doit me le taper sur toute mes pages Oo

Répondre à Jo$$

6

nEm3sis, le 29 jun 2009 à 11:48:38

Ben le fait d'échapper les caractère c'est pour la sécurité
pour éviter les injections sql par exemple

donc question sécurité mieux vaut l'écrire sur chaque page plutôt que de risquer que quelqu'un prenne le contrôle du site

après peut être qu'en utilisant dans include tu pourrais éviter de l'écrire à chaque fois non ?
enfin ça dépend de pourquoi tu t'en sert aussi

tu peux aussi faire une fonction ( ou une classe ) qui te servirai a récupérer les info de la bdd et de les échapper
comme ça tu a juste la fonction à appeler et hop =)

Répondre à nEm3sis

7

Jo$$, le 29 jun 2009 à 12:08:49

Ok nEm3sis , mais ce que tu me raconte a l'air un peut trop dur pour moi ^^.
De toute façon mon formulaire est dans un dossier protégé par htaccess (ya que moi qui utilise le formulaire)

donc finallement j'ai fait :

¤ page formulaire :
$titre = mysql_real_escape_string(htmlspecialchars($_POST['titre']));­

¤ page d'affichage :
<?php echo stripslashes($donnees['titre']) ?>



et ça marche bien :)
_________________________________
et j'ai une autre p'tite question concernant mon formulaire :
c'est le "htmlspecialchars" qui m'empêche de mettre des codes html ?

Répondre à Jo$$

8

le père, le 29 jun 2009 à 12:09:58

je n'ai pourtant pas de problème avec les apostrophes quand j'écris directement dans phpmyadmin C'est parce que phpmyadmin fait tout le boulot à ta place. Mais il le faite

Si ton script marche tel quel, c'est que la configuration de ton serveur s'y prête : si tu peux enregistrer les données en mettant directement $_GET['var'] dans une requête, c'est que magic_quotes_gpc est actif, mais tu peux être sûr que tu auras de mauvaises surprises en changeant de serveur.

Répondre à le père

9

enox, le 29 jun 2009 à 12:15:10

Effectivement, htmlspecialchars et htmlentities t'empêchent d'insérer des codes html en transformant les < et > en & lt; et & gt; (sans les espaces)

Répondre à enox

10

 Jo$$, le 29 jun 2009 à 12:21:20

Très bien, Merci a tous pour votre aide =)

________________
je peut plus mettre mon poste en résolut ...

Répondre à Jo$$
Collection CommentÇaMarche.net