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 :

[SQL] Pb avec des requêtes SQL passer en GET


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut [SQL] Pb avec des requêtes SQL passer en GET
    Bonjour,

    Je dois passer une requête créée dynamiquement (suivant un formulaire de recherche) par un lien...

    J'ai une 1ère page qui crée cette requête puis propose un lien "export" qui va traiter cette requêtre... Bref, tout marche sauf par ex lorsque dans le formulaire de recherche on indique un numéro !!!!!!

    Je pense que ce qui pose problème c'est que dans la requête ça se présente ainsi : ... where numero like '%430%' ...
    Je pense que les % avec les chiffres ça lui embrouille les pédales...

    Ma 1ère page avec le lien est ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // $req contient la requête 
    $sql=base64_encode(serialize($req));
    echo "<a href=\"export.php?req=$sql\" > Export </a>";
    Ma 2ème page (export.php) qui reçoit la requête est ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if (isset($_GET['req'])) {$req=unserialize(base64_decode(stripslashes(stripslashes($_GET['req']))));}
    // traitement avec la requête
    Pourtant, ça marche dans la plupart des cas

    Sauriez vous comment résoudre ce problème ? Peut être auriez vous une solution plus simple pour passer du SQL en GET ??

    Merci d'avance.

  2. #2
    Membre expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 860
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 860
    Points : 3 445
    Points
    3 445
    Par défaut
    Salut,

    Je te déconseille VIVEMENT de passer des requêtes en GET ( ou même en POST ). Tes requêtes ne doivent JAMAIS être visibles par un utilisateur du site, car si c'était le cas, il pourrait passer la requête de son choix, et inclure des DELETE FROM par exemple, ou des DROP TABLE si l'envie lui dirait... Ou pire encore : il pourrait faire un SELECT sur tes tables contenant des données sensibles ! Bref, c'est à proscrire totalement.

    Le mieux, et de générer ta requête dynamiquement, et de ne passer en GET ou POST que les éléments nécessaires à sa construction.

    Ensuite, en ce qui concerne ton problème de '%463%', sache qu'une colonne de type chiffre n'accepte pas ce genre d'arguments. Seules les colonnes de type CHAR peuvent les accepter. Si tu as envie de récupérer la valeur, fait directement un :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE chiffre = 463

    Et si tu veux un intervalle :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE chiffre BETWEEN 460 AND 470

    A+

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    A quoi servent tes serialize/unserialize ?
    En tout cas je viens de tester et je n'ai pas de problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
    if (isset($_GET['req'])) var_dump(base64_decode($_GET['req']));
     
     
    $req = "WHERE ID LIKE '%430%'";
    $sql = base64_encode($req);
    echo '<a href="?req='. $sql .'" > Export </a>';
    ?>
    (testé aussi avec serialize, meme resultat.)

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    KiLVaiDeN a raison, il ne faut pas que tes membres puissent voir, ne serait-ce qu'une partie de tes requêtes, c'est une question de sécurité.

    Mais si tu veux vraiment passer par l'URL, je te conseille de crypter ta requête avec un fonction de cryptage déjà existante en PHP ou alors crées-en une.

    Sur ta page d'affichage de la requête, il te suffira alors de décrypter ta requête avec la fonction inverse.

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    merci pour vos réponses

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/04/2015, 13h27
  2. Réponses: 1
    Dernier message: 23/02/2015, 15h31
  3. Exécuter des requête SQL (avec ou sans PHP) dans javascript
    Par mir540 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/11/2009, 10h03
  4. pagination avec des requêtes sql sous access
    Par zalalus dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/11/2007, 23h14
  5. [SQL] Problème avec une requête sql
    Par bodysplash007 dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 11/05/2007, 17h30

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