Page 1 sur 1

requete et encodage url

Posté : 20 janv. 2009, 15:13
par Invité
Bonjour à tous,
j'ai la requete suivante:
$query = "sel * from matable where titre = 'mon titre'";
elle marche très bien. (j'ai mis "sel" à la place de "select" car la structure de la table n'est pas nécessaire ici et le post ne passe pas).

je la passe dans une url comme ceci:
<a href="index.php?query=<?php echo urlencode($query) ?>">Mon lien</a>
Dans une autre page, je recupere la requete et l'execute comme ceci:
$query = urldecode($_GET['query']);   
$requete=@mysql_query($query);
là j'ai une erreur de synataxe me disant que les simple quotes de la requete posent problème:
#1064 - Erreur de syntaxe
Voyez vous d'ou ça peut venir, sachant que la requete fonctionnait avant url encode?
Merci pour vos réponses.

Posté : 20 janv. 2009, 15:20
par zeus
Alors là, je me permet de commencer par te dire que c'est suicidaire ce que tu compte faire.

Il me suffit de créer une page qui contient seulement une ligne
<a href="http://www.tonsite.fr/index.fr?query=<?php echo urlencode("DELETE FROM matable") ?>" />
et je peux vider ta table.
Et ne crois pas que c'est compliqué à faire ;)

Sinon, pour ton soucis, commence par nous montrer le résultat de cette ligne :
$query = urldecode($_GET['query']);
echo $query;

Posté : 20 janv. 2009, 15:57
par Invité
okay. je mets la requete d'origine car j'avais simplifié pour l'exemple.
Je reprécise que la requete fonctionne et l'erreur affichée est a priori dûe à un pb de simple quotes.
Voici la requete après url decode:

Code : Tout sélectionner

SELECT jabd.id as idDemande, DATE_FORMAT(jabd.dateDemande, \'%d-%m-%Y\') AS dateDemande, jabc.* FROM jos_add_bdemandes AS jabd LEFT JOIN jos_add_bcontacts AS jabc ON jabd.idContact = jabc.id WHERE 1 ORDER BY jabd.dateDemande ASC
Et l'url qui envoie la requete dans un lien
<?php
<a href="index2.php?option=com_bcontacts&task=export&app=demandes&q=SELECT+jabd.id+as+idDemande%2C+DATE_FORMAT%28jabd.dateDemande%2C+%27%25d-%25m-%25Y%27%29+AS+dateDemande%2C+jabc.%2A+FROM+jos_add_bdemandes+AS+jabd+LEFT+JOIN+jos_add_bcontacts+AS+jabc+ON+jabd.idContact+%3D+jabc.id+WHERE+1+ORDER+BY+jabd.dateDemande+ASC">
?>

Posté : 21 janv. 2009, 16:14
par zeus
J'insite encore une fois fortement que ta base de données va être vidée rapidement ...

C'est pas pour t'embeter que je dit ça, mais tu auras l'air malin le jour où tu vas voir que tu as perdu tes données. Et encore, c'est le cas où ça ne gène que toi. Certains pourraient même obtenir des informations de ta base et s'en servir pour envoyer du spam.

En tout cas, sans le message d'erreur MySQL, on ne pourra pas t'aider.