Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1742 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  valeurs avec slash (\'), comment l'enlever lors de echo() ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

valeurs avec slash (\'), comment l'enlever lors de echo() ?

n°1462737
seozus
Posté le 23-10-2006 à 05:34:20  profilanswer
 

Même si le titre peut porter à confusion, le problème est simple, je veux afficher le 10 derniers message de mon forum sur ma homepage, jusque la, pas de problème, à l'endroit ou sa se complique, c'est que mes valeur du titre de mes messages du forum contiennent de \ lorsqu'il y a des ' ou de " dans le titre, donc, lorsque je fais le echo sur ma homepage, le titre du message s'affiche, mais avec les \ avant le ' et ", comment le enlever à l'affichage seulement.
 
Si sa peut aider, voici mon appel:

Code :
  1. <?
  2.   $req = mysql_query("select id, titre from forum order by id desc limit 0,10" ) or die( 'Erreur '.$req.'<br>'.mysql_error() );
  3. while ( $row = mysql_fetch_assoc( $req ) )
  4. {
  5. echo "$row[id] - $row[titre]<br>";
  6. };
  7. ?>


 
Ce qui me donne comme affiche quelque chose du genre:
 
24 - Re: Testing :-)
23 - Un dernier test, c\'est normal
22 - Un dernier test, c\'est normal
21 - Un dernier test, c\'est normal
20 - Encore des tests :-D
19 - Encore des tests :-D
18 - ,mn,n
17 - ,mn,n
16 - Re: Testing :-)
15 - Re: Testing :-)
 
Observez le 23,22 et 21 ... voila le problème. Je sais que l'on ajoute les \ avec la fonction addslashes, mais pour enlever ??
 
Merci à l'avance


---------------
www.failqc.com : FailBlog québécois
mood
Publicité
Posté le 23-10-2006 à 05:34:20  profilanswer
 

n°1462738
seozus
Posté le 23-10-2006 à 05:59:07  profilanswer
 

ok, j'ai trouvé la fonction stripslashes dans la doc php, mais avec le code que je vous ai donné, je ne sais pas comment m'en servir, j'en aurais besoin sois pour le echo au complet, ou seulement pour le $row[titre], j'ai essayer plusieurs choses, on me renvoi une erreur à chque fois ...
 
comment faire pour que la fonction stripslashes fonctionne dans le code que je vous ai fourni ???


---------------
www.failqc.com : FailBlog québécois
n°1462827
leflos5
On est ou on est pas :)
Posté le 23-10-2006 à 10:22:41  profilanswer
 

Ca vient d'un vilain paramètre du php.ini qui t'échappes certains caractère dans la base :)
 
Mets magic_quotes à off, modifie ta base, et traites ça autrement ;)

n°1462841
FlorentG
Unité de Masse
Posté le 23-10-2006 à 10:39:50  profilanswer
 

Ca peut aussi venir de magic_quotes_runtime, mais très rare

n°1463250
seozus
Posté le 23-10-2006 à 16:30:19  profilanswer
 

je suis en local, mais une fois sur mon hébergeur, probablement que lui, la fonction magicquotes, il le na désactive pas ... Que dois-je donc faire ??


---------------
www.failqc.com : FailBlog québécois
n°1463562
sigmar_
Posté le 23-10-2006 à 21:42:28  profilanswer
 

Salut,
Tu peux savoir l'utilisation ou non des magic quotes avec la fonction get_magic_quotes_gpc.
Par exemple dans ton cas:

Code :
  1. if (get_magic_quotes_gpc()){
  2.    $row['titre'] = stripslashes( $row['titre'] );
  3. }


 
edit:je me rends compte que la suite est hors sujet mais je la laisse quand même :d.
 
Tu dois savoir que ca pose un probleme de sécurité si tu ne vérifies pas les variables provenant de l'utilisateur avant de les passer à mysql.
Regarde ici pour une bonne pratique pour "quoter" tes variables.
Le code qu'ils proposent:

Code :
  1. <?php
  2. // Protège la variable
  3. function quote_smart($value)
  4. {
  5.    // Stripslashes
  6.    if (get_magic_quotes_gpc()) {
  7.      $value = stripslashes($value);
  8.    }
  9.    // Protection si ce n'est pas une valeur numérique ou une chaîne numérique
  10.    if (!is_numeric($value)) {
  11.      $value = "'" . mysql_real_escape_string($value) . "'";
  12.    }
  13.    return $value;
  14. }
  15. // Connexion
  16. $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
  17. OR die(mysql_error());
  18. // Fabrication d'une requête sécurisée
  19. $query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
  20. quote_smart($_POST['username']),
  21. quote_smart($_POST['password']));
  22. mysql_query($query);
  23. ?>


Message édité par sigmar_ le 23-10-2006 à 22:52:10

---------------
programming cookbook
n°1463580
seozus
Posté le 23-10-2006 à 22:02:03  profilanswer
 

J'Ai essayé ta premiere portion de code, les slashes restent ... sa ne fonctionne pas, peut être je les ai mal placées. Où dois-je le mettre dans ce code poru que cela fonctionne:
 

Code :
  1. <?
  2.             $req = mysql_query("select id, titre from forum order by id desc limit 0,10" ) or die( 'Erreur '.$req.'<br>'.mysql_error() );
  3.      
  4.       while ( $row = mysql_fetch_assoc( $req ) )
  5.       {
  6.       echo "$row[id] - $row[titre]<br>";
  7.       };
  8.       ?>


Message édité par seozus le 23-10-2006 à 22:02:39

---------------
www.failqc.com : FailBlog québécois
n°1463585
sigmar_
Posté le 23-10-2006 à 22:11:37  profilanswer
 

Juste avant l'echo, mais essaie

Code :
  1. if (get_magic_quotes_gpc()){ $row['titre'] = stripslashes( $row['titre'] ); }
  2. echo "$row[id] - $row[titre]<br>";


Maintenant je ne sais pas quel forum tu utilises, c'est peut-être lui aussi qui ajoute les quotes..
Essaie ca dans ce cas:

Code :
  1. echo $row['id'].' - '.stripslashes($row['titre']).'<br />';

n°1463599
seozus
Posté le 23-10-2006 à 22:25:26  profilanswer
 

Sa fonctionne!!!!! Voici mon code final:

Code :
  1. <?
  2.   $req = mysql_query("select id, titre, nom from CSForum order by id desc limit 0,5" ) or die( 'Erreur '.$req.'<br>'.mysql_error() );
  3. // Affiche : Avez-vous l'oreille dure?
  4. while ( $row = mysql_fetch_assoc( $req ) )
  5. {
  6. echo '<a href=read.php?id='.$row[id].'>'.stripslashes($row['titre']).'</a> (par <i>'.$row[nom].'</i> )<br>';
  7. };
  8. ?>


 
Je te dois un infini merci, tu es excellent, ton aide a vraiment été utile! Merci d'avoir pris le temps, c'est super apprécié!
 
Es-tu dans un projet? Car si tu veux, je peux te proposer de joindre le mien, si tu veux savoir ce que c'est, MP moi, le principe et les attentes sont immenses, tu verras!
 
Encore merci! :D


---------------
www.failqc.com : FailBlog québécois
n°1463601
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 23-10-2006 à 22:27:03  profilanswer
 

Quand tu sors une variable directement de la BDD , je te conseille de faire un stripslashes puis un htmlspecialchars($tavar, ENT_QUOTES) afin de pallier au problème des failles XSS possibles.

mood
Publicité
Posté le 23-10-2006 à 22:27:03  profilanswer
 

n°1463678
leflos5
On est ou on est pas :)
Posté le 24-10-2006 à 03:50:43  profilanswer
 

Plutot que faire un truc à la cradingue, t'auras pas un petit phpinfo() à nous balancer ;)

n°1463684
seozus
Posté le 24-10-2006 à 04:52:58  profilanswer
 

C'est résolu, héhé! :)


---------------
www.failqc.com : FailBlog québécois

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  valeurs avec slash (\'), comment l'enlever lors de echo() ?

 

Sujets relatifs
afficher les 3 plus grandes valeurs dans une tablehtaccess: récupérer les valeurs entrées
Interdire des valeurs[FORTRAN90]Remplissage d'un tableau avec des valeurs aléatoires
récupérer les valeurs d'un Formulaire (UserForm) dans une macrogroup by sur un champ contenant des valeurs null sous oracle
parcourire un tableau et compter le nombre de valeurs d'une clérécupérer les valeurs d'un id
echo vs printf[bash] enlever les questions dans la completion automatique ?
Plus de sujets relatifs à : valeurs avec slash (\'), comment l'enlever lors de echo() ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR