Rechercher : dans
Par :

Problème d'injection sql

Dernière réponse le 1 mar 2009 à 22:25:32 vagner, le 1 mar 2009 à 20:19:46 
 Signaler ce message aux modérateurs

Bonjour,

J'essais sans relache depuis plus d'un jour cette requette sql :

if (empty($_POST["joureven"]))
else 
	{
$retour = mysql_query("SELECT * FROM evenements WHERE debut LIKE ("$_POST['joureven']%") ORDER BY debut DESC");
	}

Mais php me retourne :
Parse error: syntax error, unexpected T_VARIABLE in /homez.109/poocovtn/www/calendrier/index.php on line 39


Pourant une requete du même type marche sur un autre de mes sites, que faire ?     Envie de futurama ?
-> www.futuramatube.fr
Configuration: Windows XP
Firefox 3.0.6

Meilleures réponses pour « Problème d'injection sql » dans :
Sauvegarde automatique d'une BDD sous SQL EXPRESS 2005 VoirSi vous vous voulez automatiser une sauvegarde d'une base de données sous SQL server express, il existe une solution simple grâce à un fichier .bat. Créez un nouveau fichier texte. Ce fichier doit contenir les informations suivantes: SET...
Gestion des paramètres SQL VoirSQL présente un certain nombre de paramètres au niveau d'Oracle qu'il est possible de visualiser à travers la commande : SHOW ALL Pour modifier la valeur d'un paramètre il suffit d'utiliser la commande : SET NOM_PARAM VALEUR
Attaques par injection de commandes SQL VoirInjection de commandes SQL Les attaques par injection de commandes SQL sont des attaques visant les sites web s'appuyant sur des bases de données relationnelles. Dans ce type de sites, des paramètres sont passés à la base de données sous forme...
Le langage SQL VoirQu'appelle-t-on SQL? SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage de définition de données (LDD, ou en anglais DDL Data Definition Language), un langage de manipulation de données (LMD, ou en anglais DML,...
SQL - Création de table VoirLe SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. La création de tables Le création de tables se fait à l'aide du couple de mots-clés CREATE...

1

Lapinkiller, le 1 mar 2009 à 20:32:39

Bonjour

à quoi correspond la ligne 39 parmi les lignes de code que tu nous as donné ? Lapinkiller, étudiant en Licence Pro informatique
"La fin du monde n'est pas pour demain, elle est arrivée hier" (Lapinkiller)

Répondre à Lapinkiller

2

le père, le 1 mar 2009 à 20:47:52

Bonjour

$retour = mysql_query("SELECT * FROM evenements WHERE debut LIKE '$_POST['joureven']%' ORDER BY debut DESC");

Ta chaîne de requête commençait par ", elle finissait donc par le premier " , celui qu'il y avait avant $_POST...
Ce qu'il y avait après ne voulait plus rien dire

Répondre à le père

3

vagner, le 1 mar 2009 à 21:04:47

Syntax error, unexpected T_ENCAPSED_AND_WHITESPACE ...
et la ligne 39 en fait c'est la requète sql.     Envie de futurama ?
-> www.futuramatube.fr

Répondre à vagner

4

le père, le 1 mar 2009 à 21:08:03
  • +1

Pardon...
$retour = mysql_query("SELECT * FROM evenements WHERE debut LIKE '$_POST[joureven]%' ORDER BY debut DESC");
pas d'apostrophes autour des index de tableaux à l'intérieur de chaînes entre double quotes

Répondre à le père

5

vagner, le 1 mar 2009 à 21:11:43

Ouu très bon à savoir ça,
Merci la syntaxe est correct et mon script fonctionne,
bonne soirée !     Envie de futurama ?
-> www.futuramatube.fr

Répondre à vagner

6

vagner, le 1 mar 2009 à 21:33:24

Hum j'ai encore un petit soucis :

		$retour = mysql_query("SELECT * FROM evenements WHERE valide='1' AND debut LIKE '$_POST[joureven]%' ORDER BY debut DESC";

		while ($donnees = mysql_fetch_array($retour))
		{


Me retourne ça :

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL


dur : (     Envie de futurama ?
-> www.futuramatube.fr

Répondre à vagner

7

le père, le 1 mar 2009 à 21:55:49

Il devrait surtout te dire qu'il te manque une parenthèse après le DESC" mais je suppose que c'est une faute de recopie...
Ajour or die (mysql_error()) à la fin :
$retour = mysql_query("SELECT * FROM evenements WHERE valide='1' AND debut LIKE '$_POST[joureven]%' ORDER BY debut DESC") or die (mysql_error());

Ça ne va pas réparer le problème, mais ça va sortir un message d'erreur qui nous donnera quelques précisions sur la cause.

Répondre à le père

8

vagner, le 1 mar 2009 à 22:10:01

Hum alors voila en plus claire ce que j'essais :

		$query  =	'SELECT * FROM evenements
					WHERE valide=1
					AND debut LIKE $_POST[joureven]%
					ORDER BY debut DESC';
		
		$retour = mysql_query($query) or die (mysql_error());


et mysql me renvoit :

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[joureven]% ORDER BY debut DESC' at line 3


    Envie de futurama ?
-> www.futuramatube.fr

Répondre à vagner

9

 le père, le 1 mar 2009 à 22:25:32

Encore un qui n'a rien compris à la différence entre les chaînes entre " et les chaînes entre ' en PHP

Si tu mets ta requête entre ', le $_POST[joureven] à l'intérieur NE REPRESENTE PAS la variable $_POST['joureven'], il représente juste la suite de caractères $,_,P,_ etc...
Il FAUT le mettre entre " pour qu'il soit considéré comme une variable.
De plus, au passage tu as fait disparaitre les ' qui entouraient la valeur du LIKE, ce qui va te donner une autre cause d'erreur.

Répondre à le père