Probleme avec mysql_real_escape_string()

neyka
Invité n'ayant pas de compte PHPfrance

31 mai 2012, 16:41

Bonjour je souhaiterai utiliser la fonction :
mysql_real_escape_string() afin d'echaper les accents et les caracteres speciaux. En effet dans ma base les accents sont mal pris en compte.

Voici mon code :

                    $nom= $_POST["nom"] ;
                    $nomsociete= $_POST["societe"] ;
                    $numtel= $_POST["tel"] ;
                    $marque= $_POST["marque_mat"] ;
                    $nomcontact= $_POST["nomcontact"] ;
                    $emailcontact= $_POST["email"] ;
                    $numserie= $_POST["noserie"] ;
                    $modelmateriel= $_POST["model"] ;
                    $probleme= $_POST["description"] ;
                                
                   // date() permet de permet de recuperer la date sur le SERVEUR
                    $date = date("d"); // Jour
                    $heure = date("i"); // Minutes
                    
                     $num_doss_provisoire = $date.$heure.$seconde; // Numero de dossier provisoire sans les deux premiers chiffres (l'ID)
                       // Insertion du formulaire et d'un numero de dossier sans le dernier ID ajouté dans la BDD
                               
                      $ajoutbdd = mysql_query("INSERT INTO client
                                (nomsociete, nompersonne, numtel, emailcontact, marque, modelmateriel, numserie, etatprobleme, numdossier, descriptifProbleme)
                                VALUES('$nomsociete', '$nom', '$numtel', '$emailcontact', '$marque', '$modelmateriel', '$numserie','en cours','$num_doss_provisoire','$probleme')")  ;
J'ai essayer de faire comme ceci pour chaque variable mais sans succès :

$probleme=mysql_real_escape_string($_POST["description"]);

kny
Eléphanteau du PHP | 47 Messages

31 mai 2012, 16:47

Cf. Documentation PHP
<?php
// Connexion
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());

// Requête
$query = sprintf("SELECT * FROM users WHERE user='%s' AND password='%s'",
mysql_real_escape_string($user),
mysql_real_escape_string($password));
?>

neyka
Invité n'ayant pas de compte PHPfrance

31 mai 2012, 16:54

Bonjour,
J'avais vu ce manuel mais je ne l'ai pas compris. Je n'utilise pas sprintf (j'ai peut être mal appris car sur internet..), et je ne vois absolument pas comment l'ajouté a la fin avec toutes les variables que j'ai, surtout dans un INSERT INTO.

kny
Eléphanteau du PHP | 47 Messages

31 mai 2012, 16:57

Je n'utilise pas personnellement les méthodes mysql, préférant de loin PDO, aussi je ne pourrais pas te renseigner outre mesure.
Je t'invite cependant si cela t'est possible à regarder du côté de PDO.
Les méthodes de bindings sont efficaces et simple à mettre en place. L'abstraction en plus :)

Eléphant du PHP | 343 Messages

31 mai 2012, 17:14

Où est le problème (ça n’insère pas, ça n’échappe pas etc...)?
Je ne vois pas l'utilisation de mysql_real_escape_string sur ton script, fais voir comment tu l'utilises.
Développeur web

Invité
Invité n'ayant pas de compte PHPfrance

31 mai 2012, 17:16

Comme ceci :

$probleme=mysql_real_escape_string($_POST["description"]);

Pour chaque variable récupéré. Et le code du INSERT INTO ne change pas. Mais je dois pas faire comme il faut :(

Invité
Invité n'ayant pas de compte PHPfrance

31 mai 2012, 17:17

Mon code tel qu'il est insert, mais lorsque l'utilisateur tape des caracteres avec des accents, ils sont mal affiché !

Eléphant du PHP | 343 Messages

31 mai 2012, 17:23

Ah mais si le problème sont les accents, ça n'a rien à voir avec l’échappement mais c'est un soucis d'encodage.
En base, il y a bien l’échappement?
Développeur web

neyka
Invité n'ayant pas de compte PHPfrance

31 mai 2012, 17:40

Le truc c'est que rien n'est sécurise =x
Je n'ai rien fait a part passé des paramètres =( Mon gros soucis est l'affichage des accents que je ne sais pas gérer.

ViPHP
AB
ViPHP | 5818 Messages

31 mai 2012, 17:54

Concernant mysql_real_escape_string() la seule condition pour que cela fonctionne est qu'il y ait déjà une connexion bbd ouverte.

Sinon il se pourrait que tu aies un pb avec les magic_quote encore activés sur ton serveur ce qui provoquerait des slashes en trop.

Si c'est uniquement un pb d'accents, c'est un pb d'encodage. Pour l'utf-8 (encodage recommandé) il y a un tuto ici

Eléphant du PHP | 343 Messages

31 mai 2012, 18:15

Si ce n'est pas échappé, c'est que tu utilises au mauvais endroit. Si tu ne fournis pas le code en entier (donc avec les mysql_real_escape_string en fonction), on ne peut pas savoir.
Développeur web