Probleme addslashes, stripslashes ?

Probleme addslashes, stripslashes ? - Programmation

Marsh Posté le 06-12-2001 à 22:02:09    

Salut !
 
Dans ma table de membres, j'ai un champs surnom.
 
Lorsqu'un membre s'inscrit avec un surnom du type l'enfoire :D, j'ai fais un addslashes pour éviter les erreurs de requetes.
 
Le probleme se situe lorsqu'il s'identifie !
Meme dans phpmyadmin avec la requete suivante, ca ne marche pas  :??:  
 
select * from membre where surnom = 'l\'enfoire'
 
Il ne me retourne aucun résultat alors que la requete est bonne !
Aurais-je omis une fonction php spécifique ?

Reply

Marsh Posté le 06-12-2001 à 22:02:09   

Reply

Marsh Posté le 06-12-2001 à 22:05:14    

ça dépend de ce que tu stockes dans ta bdd. si tu stockes :
 
* l'enfoiré , la requête sera celle que tu as mis : 'l\'enfoiré'
 
* l\'enfoiré, il faudra mettre un truc style 'l\\'enfoiré' ou 'l\\\'enfoiré'

Reply

Marsh Posté le 06-12-2001 à 22:07:16    

c'est l\'enfoire qui est dans ma table vu que je fais un addslashes lorsque le membre s'inscrit.

Reply

Marsh Posté le 06-12-2001 à 22:08:13    

il PHPMyAdmin te retourne 'aucun resultat' c que le pseudo 'l'enfoiré' n'a pas été stocké comme ça dans ta bdd.
 
affiche tous les enregistrements et vérifie tous trouvera peu-etre la réponse tout seul  :D


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 06-12-2001 à 22:09:13    

he bien essaye la deuxième soluce :) le \ devant le ' dit à mysql de ne pas prendre en compte le '. donc l\\'enfoiré revient à chercher l\'enfoiré.
 
après, je ne sais pas s'il faut rajouter un \ devant le premier \, c'est comme ça en C, PHP est plutôt tolérant sur la chose, et mysql je n'en sais rien. essaye les deux.

Reply

Marsh Posté le 06-12-2001 à 22:10:58    

je crois aussi qu'il y a PHP qui rajout des \, j'ai déjà eu le problème  et c super chiant  :pt1cable:


---------------
Tout à commencé par un rêve...
Reply

Marsh Posté le 06-12-2001 à 22:11:11    

bon, dans phpmyadmin me retourne le résultat lorsque je met :
 
select * from membre where surnom = 'l\\\'enfoire'
 
bien vu, youdontcare ! ;)
 
Donc, le prob se situe dans mon script :(

Reply

Marsh Posté le 06-12-2001 à 22:12:24    

Le voilou, si vous voyez une erreur ! :)
 
if(isset($submit)){
$cryptedPwd = md5($pass);
$surnom = addslashes($surnom);
$query = "select * from $table_membre where surnom = '".$surnom."' and pass = '".$cryptedPwd."'";
$req = mysql_query($query);
$result = mysql_fetch_array($req);
if($surnom != $result[surnom] || $cryptedPwd != $result[pass]) {
$non = "<script>
  function redirect()
  {
  window.location.replace(\"?menu=membre&rubriqu
 
e=identification&membre=login&%s\" );
  }
  setTimeout(\"redirect();\", 1250);
  </script>Identification refusée.";
} else {
$email_session = $result[email];
session_register("surnom" );
session_register("email_session" );
$oui = "<script>
  function redirect()
  {
  window.location.replace(\"?menu=membre&rubriqu
 
e=index&membre=membre&%s\" );
  }
  setTimeout(\"redirect();\", 1250);
  </script>Identification réussie.";
}
}

 

[edtdd]--Message édité par kyle--[/edtdd]

Reply

Marsh Posté le 06-12-2001 à 22:14:45    

regarde bien ce que te sort le formulaire lors de l'inscription d'un membre. suivant les versions / options de php, les slashs sont rajoutés ou non. si php les rajoute, tu n'as pas besoin de le faire.  
 
car si tu fais insert .... 'l\'enfoiré' tu te retrouveras avec l'enfoiré dans ta table.
 
là, tu dois sûrement faire un addslashes() en trop, ta requête doit ressembler à 'l\\'enfoiré', et tu te retrouves avec l\'enfoiré dans ta table (ce qui n'est pas nécessaire, et plutôt redondant).

Reply

Marsh Posté le 06-12-2001 à 22:17:17    

pour info, tout ce que je récupère d'un formulaire pour ensuite l'insérer dans mysql subit un stripslashes() puis un addslashes(). ce n'est pas optimal, mais comme je bosse avec deux serveurs différents ça permet de récupérer les mêmes infos sur les deux et de ne pas faire deux scripts différents.

Reply

Marsh Posté le 06-12-2001 à 22:17:17   

Reply

Marsh Posté le 06-12-2001 à 22:22:24    

J'ai essayer avec ou sans addslashes() et bien, meme résultat :(
 
Par ailleur, j'ai tester l'inscription avec un stripslashes puis addslashes, et bien dans ma table, le nom est : l'enfoire et non l\'enfoire... donc a quoi cela peur servir ?

Reply

Marsh Posté le 06-12-2001 à 22:27:45    

kyle a écrit a écrit :

donc a quoi cela peur servir ?  



à quoi quoi peut servir ? :??:

Reply

Marsh Posté le 06-12-2001 à 22:30:25    

de faire un stripslashes() suivit d'un addslashes() !
 
A moins que j'ai mal compris...

Reply

Marsh Posté le 06-12-2001 à 22:33:32    

Bon, je viens de trouver ! :)
 
Manquais bien un addslashes !
 
J'ai rajouter la ligne :
 
$resultsurnom = addslashes($result[surnom]);
 
apres :
 
$result = mysql_fetch_array($req);
 
:)

Reply

Marsh Posté le 06-12-2001 à 22:35:30    

kyle a écrit a écrit :

de faire un stripslashes() suivit d'un addslashes() !
 
A moins que j'ai mal compris...  



à ce que le même code marche sur deux serveurs différents, ie le premier qui ajoute les slash automatiquement, le deuxième qui ne les ajoute pas :D (y'a sûrement plus clean, c'est du vieux code :D)

Reply

Marsh Posté le 06-12-2001 à 22:38:30    

ha, oki boss ! :D
Merci encore !

Reply

Marsh Posté le 06-12-2001 à 22:41:33    

lors de l'envoi d'info avec post/get php rajoute des slashes (il fait addslahes() ) pour éviter cela met "magic_quotse_gpc" à off dans php.ini
 
si tu n'as pas envie ou que tu ne peux pas le faire faudrait tester sans addlashes puisque il les rajoutes automatiquement.
 
ça sert pour la sécurité je pense ;)
et "faciliter" aussi la tâche du programmeur qui ne doit pas s'occuper du contenu de la variable postée
 
-- trop tard ;) --

 

[edtdd]--Message édité par ethernal--[/edtdd]

Reply

Marsh Posté le 06-12-2001 à 22:53:52    

ethernal a écrit a écrit :

lors de l'envoi d'info avec post/get php rajoute des slashes (il fait addslahes() ) pour éviter cela met "magic_quotse_gpc" à off dans php.ini


:jap: effectivement, les deux serveurs ont des valeurs différentes pour magic quotes.
 
on peut le changer en runtime ? ie, est-ce affecté par le safe mode ? (comme set_time_limit())

Reply

Marsh Posté le 07-12-2001 à 00:05:10    

en runtime ? hum je pense pas :(
(je suis en off)
phpmyadmin a dans le script de configuration (dernière ligne)
"set_magic_quotes_runtime(0);" qui semblerait être une option de configuration en runtime.
 
pourtant, il refuse de valider une requête qui contient des ' dans le texte d'une variable même qd je le passe à 1.
 
évite d'y toucher le résultat est grave :D
il met des \ avant tout " ou ' même dans le code html... :lol:

 

[edtdd]--Message édité par ethernal--[/edtdd]

Reply

Marsh Posté le 07-12-2001 à 00:36:59    

houla :D pas touche donc :D

Reply

Marsh Posté le 09-12-2001 à 18:59:45    

article intéressant
http://www.phpinfo.net/?p=articles&rub=magic-quotes
 
le but est d'arriver à des fonctions du style  
function MyStripSlashes( $chaine ) {
  return( get_magic_quotes_gpc() == 1 ?  
          stripslashes($chaine) :  
          $chaine );
}
 
d'après ce qu'ils disent...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed