Page 1 sur 1

Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 16:41
par neyka
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"]);

Re: Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 16:47
par kny
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));
?>

Re: Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 16:54
par neyka
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.

Re: Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 16:57
par kny
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 :)

Re: Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 17:14
par sam12
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.

Re: Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 17:16
par Invité
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 :(

Re: Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 17:17
par Invité
Mon code tel qu'il est insert, mais lorsque l'utilisateur tape des caracteres avec des accents, ils sont mal affiché !

Re: Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 17:23
par sam12
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?

Re: Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 17:40
par neyka
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.

Re: Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 17:54
par AB
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

Re: Probleme avec mysql_real_escape_string()

Posté : 31 mai 2012, 18:15
par sam12
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.