addslashes

Eléphant du PHP | 155 Messages

10 juin 2005, 12:06

Ma requete générée sans le addslashes, c'est extactement la mê qu'avec.

SELECT DISTINCT id_service FROM phpgw_workf_services WHERE nom_service = 'CONCESSION de DISTRIBUTION PUBLIQUE d'

Ca bloque au '

Mammouth du PHP | 1776 Messages

10 juin 2005, 12:08

Ma requete générée sans le addslashes, c'est extactement la mê qu'avec.

SELECT DISTINCT id_service FROM phpgw_workf_services WHERE nom_service = 'CONCESSION de DISTRIBUTION PUBLIQUE d'

Ca bloque au '
petite question toute bête: c'est bien le même fichier que tu mets à jour? car moi ca m'est arrivé de plancher là dessus pendant des heures alors que c t pas le bon...affiche un tit texte en plus pur vérifier que c bien le bon... :roll:

Eléphant du PHP | 155 Messages

10 juin 2005, 12:11

oui c'est le bon fichier.

Mammouth du PHP | 1776 Messages

10 juin 2005, 12:12

oui c'est le bon fichier.
et ton code revu et corrigé sans addslashes donne quoi?

Eléphant du PHP | 155 Messages

10 juin 2005, 12:13

Ca done la mê chose qu'avec.

Mammouth du PHP | 1776 Messages

10 juin 2005, 12:18

http://lvf59.free.fr/perso/phpfrance/renatane.php
avec en code:
$service = "CONCESSION de DISTRIBUTION PUBLIQUE d\'argent"; 
echo $service."<br>";
echo "SELECT DISTINCT id_service FROM phpgw_workf_services WHERE nom_service = '".$service."'";

Eléphant du PHP | 155 Messages

10 juin 2005, 12:37

Je comprend pas trop là,
Il faudrait taper les \
Je ne veux pas que mes utilisateurs soient contraints de taper eux mê les \.

Punaise, il doit bien y avoir une solution!

Mammouth du PHP | 1776 Messages

10 juin 2005, 12:45

non, ca ajoute automatiquement, ce n'était qu'une simulation...
après $servic =$_POST['nom_service'];
echo $servic;

et donne nous le resultat lorsque tu l'envoi par ton formulaire :wink:

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

10 juin 2005, 16:57

note : j'ai pas lu les deux pages : j'ai pas le courage :lol:

Correction :
$service = "CONCESSION de DISTRIBUTION PUBLIQUE d\\'argent";
Y'a 2 \ en tout (qui n'en feront plus qu'un dans la chaine en memoire) pour proteger le ' dans la requete SQL

sinon, magic_quotes_gpc, add_slashes et strip_slashes c'est de la m3rd3 :
The winner is mysql_real_escape_string

Code : Tout sélectionner

string mysql_real_escape_string ( string unescaped_string [, resource link_identifier]) mysql_real_escape_string() protège les caractères spéciaux de la chaîne unescaped_string, en prenant en compte le jeu de caractères courant. Le résultat peut être utilisé sans problème avec la fonction mysql_query(). Note : mysql_real_escape_string() ne remplace ni %, ni _. [...] Voir aussi mysql_escape_string() et mysql_character_set_name().

Mammouth du PHP | 1776 Messages

10 juin 2005, 17:00

note : j'ai pas lu les deux pages : j'ai pas le courage :lol:

Correction :
$service = "CONCESSION de DISTRIBUTION PUBLIQUE d\\'argent";
Y'a 2 \ en tout (qui n'en feront plus qu'un dans la chaine en memoire) pour proteger le ' dans la requete SQL
justement non, \\ revient à nul :roll:

Mammouth du PHP | 19672 Messages

10 juin 2005, 17:03

Note : en option, en SQL (y compris avec MySQL), on peut échapper une apostrophe en la doublant, donc, si on veut pas utiliser addslashes, on peut faire un
str_replace("'", "''", $requete);
et on aura la paix, mais faudra faire l'opération inverse pour l'affichage.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1776 Messages

10 juin 2005, 17:09

Note : en option, en SQL (y compris avec MySQL), on peut échapper une apostrophe en la doublant, donc, si on veut pas utiliser addslashes, on peut faire un
str_replace("'", "''", $requete);
et on aura la paix, mais faudra faire l'opération inverse pour l'affichage.
donc au final c'est tjr autant le bazar :lol:

Eléphant du PHP | 155 Messages

13 juin 2005, 16:30

C'est bien beau et merci a tous pour vos "solution", mais ce n'est pas résolu, j'ai essayer un peu tout, et rien ne resout le problème.

Quelle est la meilleure solution suceptible de me permettre de transmettre et d'afficher ma valeur contenant ' ?

Administrateur PHPfrance
Administrateur PHPfrance | 430 Messages

14 juin 2005, 11:18

Peut être l'as-tu déjà tenté, mais essaye ca :
$service =$_POST['nom_service'];
if(get_magic_quotes_gpc())
    $service=stripslashes($service);
}
$service=mysql_real_escape_string($service);
$s = "SELECT DISTINCT  id_service FROM phpgw_workf_services WHERE nom_service = '$service'";
$results = mysql_query($s);
$ser=mysql_fetch_array($results, MYSQL_ASSOC);
$idservice=$ser['id_service'];

Eléphant du PHP | 155 Messages

14 juin 2005, 12:24

j'ai utilisé ta methode
J' affiche $service juste avant la requete $s, et c'est encore la mê chose, bloqué au '

Le problème doit venir peut etre de la récuperation de variable, du passage du formulaire a la page d'enregistrement.