Transmettre requete SQL via HTTP?

Résolu
saudek -  
 saudek -
Bonjour à tous,

Je suis en présence de deux feuilles PHP.
Un premier fichier, sur lequel les résultats d'une requête SQL dynamiquement crée avec des filtres (via un formulaire basique) s'affichent dans un tableau.
Cette requête j'aimerais l'envoyer vers le deuxième fichier, lequel est un script d'exportation en format XLS.

Seulement le soucis est que l'adresse HTTP qui est envoyée est sous ce format : http://toto.fr/administration/admin-federation/export_XLS.php?export=select%20*%20FROM%20adherents_toto%20WHERE%201=1
(j'ai volontairement changé le nom de domaine).

Le soucis c'est que cette requête est, dans l'état dans lequel je la récupère avec le $_GET['export']=mysql_real_escape_string($_GET['export']);, inutilisable.

Avez vous une astuce à me donner, soit pour transmettre la requête sous une forme utilisable, soit pour décoder la requête envoyée comme ci-dessus?

Merci d'avance.
Cordialement.

9 réponses

  1. saudek
     
    Merci pour vos réponses, je vais investiguer la possibilté de urldecode().
    cet url est envoyé entre deux pages à accès restreint, étant donné que c'est une section admin.
    Aucune malveillance n'est donc à craindre.tout est protégé oar .htaccess.

    De toute façon je vois pas d'autre possibilité plus propre.
    Merci encore.
    0
  2. saudek
     
    Comment passer ma requete en utilisant la methode POST?
    En fait n'étant pas spécialement une lumiière en PHP j'ai fait un code tout simple pour envoyer les données vers le script export_xls
    <?php
    echo "<a href='export_XLS.php?export=".$query."' target=\"_blank\">Exporter en format XLS (Microsoft Excel)</a>"
    ?>

    Puis sur l'autre page je récupère le tour :
    <?
    if (isset($_GET['export']))
    {
    $_GET['export']=mysql_real_escape_string($_GET['export']);
    }
    ?>
    0
  3. saudek
     
    Bon en fait j'ai essayé d'utiliser la fonction urldecode() mais le soucis c'est que les espaces (pour des raisons historiques qu'il disent sur le site php) sont remplacés par des +.
    Donc dans ce cas la fonction explode pourra exploser ma chaine de caractère séparée par des +?
    Pourrais-je ensuite reprendre chacune de mes variables et reconsituer ma requete sur mon deuxieme scipt avant l'envoie en XLS? Si oui comment les déclarer ces variables?

    Merci beaucoup pour votre aide.
    0
  4. saudek
     
    Merci c'est ce que j'ai fait et ça fonctionne.
    Merci beaucoup pour votre aide.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Salut,

    Oui utilise la fonction urldecode()

    Par contre passer une requête comme ça dans une url, ça me semble poser un grave problème de sécurité.
    -1
  7. Utilisateur anonyme
     
    O_o C'est clair !!!! N'utilises surtout pas cette méthode elle est peut s'avérer super dangereuse.
    -1
  8. Utilisateur anonyme
     
    Au lieu d'utiliser la méthode GET, utilises déjà la méthode POST, ca permettra de ne pas voir le paramètre dans la barre d'adresse ;-)
    -1
  9. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Et passe les données indépendamment les unes des autres, du genre id=5 machin=truc etc...
    Ca te permettra d'affiner, plus tard, la sécurité en vérifiant les données une à une.
    -1
  10. kilian Messages postés 8675 Date d'inscription   Statut Modérateur Dernière intervention   1 526
     
    Pourquoi tu ne passes pas tes variables une à une?
    Genre en GET ça donnerait:
    monurl?id=20&machin=truc

    Ensuite dans ton script tu reconstruis ta requête.
    -1