Supprimer les quotes autour de l'affichage d'une chaîne

Théophile
Invité n'ayant pas de compte PHPfrance

30 juil. 2006, 08:41

Bonjour,

Sur une page de traitement, je protège l'injection MySql en protégeant mes variables de session avec
quote_smart
.

Mon souci est le suivant. Lorsque je veux rappeler sur une deuxième page une variable de session, celle-ci est entourée de quotes (par exemple : 'variable') ? Comment supprimer ces quotes inesthétiques ?
Stripslashes
ne fonctionne pas pour les quotes...

Certes, un moyen de contourner la difficulté serait sur la première page de créer de nouvelles variables sans les protéger pour les rappeler sur la deuxième page... Mais procéder ainsi relèverait selon moi d'un bidouillage éhonté.

Merci beaucoup.

Cordialement,

Théo

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

30 juil. 2006, 09:23

Bonjour,

A ma connaissance, quote_smart() n'est pas une fonction du langage PHP (en tout cas la doc ne la trouve pas ;) )
Quand tout le reste a échoué, lisez le mode d'emploi...

Théophile
Invité n'ayant pas de compte PHPfrance

30 juil. 2006, 11:23

Re..

Je veux bien ne pas me servir de quote_smart :lol: mais :

1. Comment protéger mes données de l'injection ?

2. J'ai l'impression (comme je débute, je n'affirme rien !) que mes requêtes ne fonctionnent pas lorsque je ne protège pas mes données avec quote_smart.

Ainsi, sans quote_smart, la requête suivante ne marche pas :

Code : Tout sélectionner

$verif = "SELECT (nom && adeli) FROM presc_fr WHERE (nom = $_SESSION[pcnom] && adeli = $_SESSION[pcidentification])"; $reqverif = mysql_query($verif); $resverif = mysql_num_rows($reqverif);
que j'applique ou non mysql_real_escape_string à mes variables de session.

Le navigateur m'indique :
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in ... on line ...
En revanche, si au préalable, j'écris :
function quote_smart($value) 
{ 
if (get_magic_quotes_gpc()) { 
$value = stripslashes($value); 
} 
if (!is_numeric($value)) { 
$value = "'" . mysql_real_escape_string($value) . "'"; 
} 
return $value; 
}
$_SESSION['pcnom'] = quote_smart($_SESSION['pcnom']);
$_SESSION['pcidentification'] = quote_smart($_SESSION['pcidentification']);
ma requête fonctionne...

Naturellement, avant mes requêtes (je ne l'indique pas pour ne pas alourdir le "post'" figurent mes identifiants de connexion à la base de données).

Pourquoi ??? Je suis un peu perdu... :cry:

Merci pour votre aide.

Amitiés,

Théo

Mammouth du PHP | 19672 Messages

30 juil. 2006, 11:29

Tu devrais lire attentivement un excellent tuto sur le sujet
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: