Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/10/2006, 11h07   #1
Invité de passage
 
Inscription : août 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 4
Points : 2
Points : 2
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 :
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 :
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.
resterzen est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 11h12   #2
Expert Confirmé
 
Avatar de KiLVaiDeN
 
Inscription : octobre 2003
Messages : 2 714
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 2 714
Points : 2 689
Points : 2 689
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 :
WHERE chiffre = 463

Et si tu veux un intervalle :

Code SQL :
WHERE chiffre BETWEEN 460 AND 470

A+
__________________
K
KiLVaiDeN est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 13h05   #3
Expert Confirmé Sénior
 
Avatar de Mr N.
 
Inscription : septembre 2004
Messages : 5 421
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 5 421
Points : 5 835
Points : 5 835
A quoi servent tes serialize/unserialize ?
En tout cas je viens de tester et je n'ai pas de problème :
Code :
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.)
Mr N. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 13h11   #4
Candidat au titre de Membre du Club
 
Inscription : octobre 2006
Messages : 34
Détails du profil
Informations forums :
Inscription : octobre 2006
Messages : 34
Points : 14
Points : 14
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.
Jérémy51 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2006, 15h37   #5
Invité de passage
 
Inscription : août 2006
Messages : 4
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 4
Points : 2
Points : 2
merci pour vos réponses
resterzen est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h49.


 
 
 
 
Partenaires

Hébergement Web