IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Supprimer %20 dans l'URL [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut Supprimer %20 dans l'URL
    Bonsoir,

    J'ai une requête qui fait une recherche selon le mot que clé saisi et fais passée cette requête comme chaîne de caractère dans un lien pour la récupérer dans la page suivante où j'en fait certains traitements. Tput marche parfaitement, jusqu'à ce que je cherche un mot clé commençant par Ba , je me rend compte que dans le lien la requête est transformée par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $RecAdres="SELECT%20*%20FROM%20address%20WHERE%20address.Nom%20LIKE%20'$rech2' OR%20 address.Lieu%20LIKE%20 '$rech2......'";
    En fait il remplace tous les espaces par %20. Et le résultat n'est pas celui attendu.

    Lorsque je fais un echo $RecAdres dans la page de destination il m'affiche ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM address WHERE address.Nom LIKE '�m%' OR address.Lieu LIKE '�m%' OR address.category LIKE '�m%'
    Puisque la variable de recherche est Bam , il remplace Ba par le caractère �.

    Tout ce qui commence par Ba se comporte de cette manière. En passant j'utilise l'encodage utf8. J'essaie de faire un str_replace('%20' ' ' $RecAdres), ça ne donne rien, puisque %20 n’apparaît pas dans le code

    Merci pour vos idées.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    urldecode

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut
    Effectivement je suis tombé sur urldecode, mais je ne vois aucun changement, est ce que je l'utilise mal ? A quel niveau est ce que je le met, voici comment je l'ai utilisé , au moment de passer le paramètre qui est la chaîne de la requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $RecAdres="SELECT *% FROM address WHERE address.Nom LIKE '$rech2' OR address.Lieu LIKE  '$rech2 '";
    
    echo ' <a href="address_view.php?RecAdres='.urldecode($RecAdres).'">Adresses et Numéros Utiles</a>';
    Mais ça ne marche toujours pas.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    si tu veux l'afficher dans un lien il faut faire un urlencode

    par contre je te déconseille vivement de faire ça, c'est plus un trou sécurité c'est un gouffre la

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2010
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 342
    Par défaut
    OK merci, ça marche avec urlencode.

    Par rapport au gouffre de sécurité. Je comprends, mais je veux récupérer automatiquement le résultat de la recherche dans la page de destinaion pour faire des traitement précis, comment puis-je gérer ça ?
    En passant la page de destination se trouve dans un Frame, donc le lien finale ne contient pas le chaine de caractère du SELECT * FROM.... elle n'apparait pas dans l'url physiquement, mon URL reste du genre

    http://localhost/PROJET/index.php?po...t=0&nbrligne=5

    Merci

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 418
    Par défaut
    Il faut mettre ta requête "en dur" dans la page que tu veux. Dans ton lien tu passe juste les variables que tu intègre ensuite dans ta requête. Les variables doivent aussi être protégées par mysql_real_escape_string.

    Le code qui doit faire la requête pourrait ressembler à ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (isset($_GET['recherche']))
    {
    //...
    $req ="SELECT * FROM address WHERE address.Nom LIKE '".mysql_real_escape_string($_GET['recherche'])."' OR address.Lieu LIKE  '".mysql_real_escape_string($_GET['recherche'])."'";
    //...
    }
    Et le lien à ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    //...
    echo '<a href="address_view.php?recherche='.urlencode($recherche).'">Adresses et Numéros Utiles</a>';
    //...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer le nom d'un dossier dans une url
    Par popovitch130 dans le forum Apache
    Réponses: 6
    Dernier message: 06/01/2009, 12h13
  2. Réponses: 12
    Dernier message: 04/07/2008, 09h51
  3. Supprimer une variable GET dans une URL
    Par rophi dans le forum Langage
    Réponses: 2
    Dernier message: 26/02/2008, 01h25
  4. [ Struts ] recuperer une valeur dans une url?
    Par njac dans le forum Struts 1
    Réponses: 2
    Dernier message: 02/06/2004, 14h24
  5. [VB.NET]Recuperation de variable dans un URL...
    Par seb_acsg dans le forum ASP.NET
    Réponses: 11
    Dernier message: 28/01/2004, 14h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo