une erreur que j'avais jamais vu - PHP - Programmation
Marsh Posté le 17-03-2007 à 18:20:27
il manque un ; a la ligne 38.
Plus sérieusement, sans le code, on pourra pas te dire.
Marsh Posté le 17-03-2007 à 18:54:06
le code est sur un autre ordi, je l'uploaderai demain
mais a la ligne 1 y'a juste
Citation : <?php |
j'ai sauté une ligne avant de commencer a ecrire le reste
edit :
Code :
|
Marsh Posté le 19-03-2007 à 11:38:28
euuuuuuuu
y a des truc etranges dans ton code.
Déja il est complet? parceque dans se cas tu le ferme ou le premier <?php??
Ensuite pourquoi tu ferme une balise php pour afficher du texte un simple echo "<p>montexte</p>"; suffit
Marsh Posté le 19-03-2007 à 12:07:15
AND, ça existe ça, dans un test php normalement, c'est && qu'il faut utiliser...
if ( (isset($_POST['pseudo'])) && (isset($_POST['pass'])) ) {
...
}
Marsh Posté le 19-03-2007 à 12:20:07
Euh, l'erreur de syntaxe est évaluée avant l'éxécution du script donc je vois pas trop comment le azerty viendrait de $_POST.
A mon avis tu dois avoir la chaine azerty qui traine quelque part dans du code php...
Marsh Posté le 19-03-2007 à 12:26:49
Code :
|
Code :
|
serait mieux à mon avis...
Marsh Posté le 19-03-2007 à 13:50:45
RiderCrazy a écrit :
serait mieux à mon avis... |
Pas d'accord. On est pas obligé de fermé la balise PHP à la fin du fichier.
Au contraire, ca évite les erreurs de type 'cannot send header... already send...'
Genre qu'on on oublis des sauts de ligne à la fin du fichier
Marsh Posté le 19-03-2007 à 13:55:51
nORKy a écrit : Pas d'accord. On est pas obligé de fermé la balise PHP à la fin du fichier. |
du grand art ...
Marsh Posté le 19-03-2007 à 14:23:33
nORKy a écrit : Pas d'accord. On est pas obligé de fermé la balise PHP à la fin du fichier. |
Ok lol
Marsh Posté le 19-03-2007 à 14:29:30
thomas0302 a écrit :
|
Genre c'est dure de préciser que c'est une erreur mysql ?
Une apostrophe est manquante à la fin de la requête, et tu le verrais de suite si tu affichais, en plus de l'erreur sql, la requête elle-même, dans le die().
Marsh Posté le 19-03-2007 à 14:33:42
Master p a écrit : Genre c'est dure de préciser que c'est une erreur mysql ? |
Presque ca, je dirais même qu'il manque également, au vu de la façon dont c'est écrit, un inhibiteur.
Code :
|
Marsh Posté le 19-03-2007 à 14:56:46
thomas0302 : quant tu auras corrigé l'erreur de syntaxe, prend le temps de te renseigner sur les "injections sql"
Marsh Posté le 19-03-2007 à 20:37:01
rufo a écrit : AND, ça existe ça, dans un test php normalement, c'est && qu'il faut utiliser... |
bah j'ai deja vu des AND (chez des pros (enfin normalement ^^)) alors je fais pareil
anapajari a écrit : Euh, l'erreur de syntaxe est évaluée avant l'éxécution du script donc je vois pas trop comment le azerty viendrait de $_POST. |
bah non pourtant
RiderCrazy a écrit :
serait mieux à mon avis... |
en fait j'ai ajouté le commentaire après, pas fais gaffe
Master p a écrit : Genre c'est dure de préciser que c'est une erreur mysql ? |
et comment je sais que c'est une erreur sql alors qu'il me dit erreur a la ligne 1 et qu'a la ligne 1 y'a pas de sql
Marsh Posté le 19-03-2007 à 20:47:54
thomas0302 a écrit : et comment je sais que c'est une erreur sql alors qu'il me dit erreur a la ligne 1 et qu'a la ligne 1 y'a pas de sql |
Réfléchis un peu à ce que tu fais. Tu arrêtes le script si la requête SQL provoque une erreur. Au lieu d'indiquer juste le contenu de l'erreur mysql, tu fais une jolie concaténation genre 'Erreur SQL : '.$sql.'<br />'.mysql_error()
Ça t'inspirera peut-être un peu plus...
Marsh Posté le 20-03-2007 à 16:22:28
soju a écrit : thomas0302 : quant tu auras corrigé l'erreur de syntaxe, prend le temps de te renseigner sur les "injections sql" |
+1
Marsh Posté le 20-03-2007 à 16:35:48
malgré tous vos conseils, j'ai toujours la meme erreur
Code :
|
Marsh Posté le 20-03-2007 à 16:49:30
Parce que t'as toujours pas rajouté l'apostrophe manquante...
Et +1 pour les injections SQL (mysqli's your friend).
Marsh Posté le 20-03-2007 à 16:51:47
nORKy a écrit : Presque ca, je dirais même qu'il manque également, au vu de la façon dont c'est écrit, un inhibiteur.
|
j'ai recopié ce qu'on m'a dit ici
Marsh Posté le 20-03-2007 à 16:53:21
Il en manque une autre, ouvre un peu les yeux ou affiche la requête avec un echo, je sais pas... :x
Marsh Posté le 20-03-2007 à 16:54:16
Voilà ce que donne ta requête :
Code :
|
Elle est où l'erreur à ton avis?
En passant comme ca t'as déjà été signalé plus haut sous le terme d' "injection sql" je peux modifier ta requette comme je veux en mettant des mots de passe ou des peudos bidons. En fait, je peux même me conecter sans conaitre le moindre mot de passe et donc me faire passer pour n'importe qui (y compris l'admin)
Exemple :
pseudo saisie = "admin"
mot de passe saisie = " ' or 1=1 or 'pass=' "
ce qui donnera comme requette (quand t'auras corrigé ton erreur) :
Code :
|
Et voilà, je suis connecté et pourtant je ne conais pas le mot de passe.
PS : Dans l'exemple présent, c'est de l'injection sql assez gentille et pourtant potentiellement trés dangeureuse vu que ca permet à n'importe qui de modifier ce qu'il veut dans les limites du systémes d'administration du site. Cependant si la personne s'amuse à faire des requettes imbriqués, (mettre des requettes dans une requette) elle peut bloquer ton serveur sql en saturant le processeur et elle pourrait également modifier les données stockés dans la base.
PS2 : En php5 et php6 (le 4 il me semble aussi mais je ne suis pas sur) on peut mettre indifferament "&&" et "AND" ainsi que "||" et "OR". Par contre, "&&" et "||" ont un niveau de priorité différent de "AND" et "OR" ce qui fait que ca peut entrainer des résultats différents dans certains cas.
Marsh Posté le 20-03-2007 à 16:55:37
thomas0302 a écrit : j'ai recopié ce qu'on m'a dit ici |
C'est pour ça que je ne t'ai pas donné pas la réponse directement. On t'a dit le problème, tu le résouds, ou sinon tu reviendras une heure après nous dire que t'as une nouvelle erreur.
Marsh Posté le 20-03-2007 à 16:56:03
thomas0302 a écrit :
|
Ton test est foireux là... enfin, ça veut rien dire. $donnees n'est pas initialisé et reponse c'est juste la référence de ta requête.
Sinon, faudrait revoir ta requête, l'erreur vient de là
Code :
|
juste en corrigeant, pas d'amélioration
edit: Overburned... poster en bossant, caimal. et gros +1 pour les injections
Marsh Posté le 20-03-2007 à 16:57:50
omega2 a écrit : PS2 : En php5 et php6 (le 4 il me semble aussi mais je ne suis pas sur) on peut mettre indifferament "&&" et "AND" ainsi que "||" et "OR". Par contre, "&&" et "||" ont un niveau de priorité différent de "AND" et "OR" ce qui fait que ca peut entrainer des résultats différents dans certains cas. |
Ce langage est une vaste blague
Marsh Posté le 20-03-2007 à 16:59:25
C'est pareil en Ruby, donc ça peut pas être un défaut de PHP.
Marsh Posté le 20-03-2007 à 17:00:07
omega2 a écrit : Voilà ce que donne ta requête :
|
Marsh Posté le 20-03-2007 à 17:05:44
sielfried a écrit : C'est pareil en Ruby, donc ça peut pas être un défaut de PHP. |
En y repensant, c'est vrai que c'est une fonctionnalité très intéressante
Marsh Posté le 20-03-2007 à 20:31:04
Citation : comment faire pour l'empecher alors ? |
http://fr.php.net/manual/fr/functi [...] repare.php
Marsh Posté le 20-03-2007 à 20:55:04
merci pour le lien (meme si je comprends rien, je relirai ça demain a tête reposée)
Marsh Posté le 17-03-2007 à 17:20:59
bonjour,
pour le nouveau site que je suis en train de créer, j'ai mis un système de membres.
mais quand j'essaye de me conncter, je remplis le formulaire de connexion, je valide et j'ai une erreur bizzare :
Erreur de syntaxe près de 'azerty' à la ligne 1.
(azerty est mon passe pour mes tests)
je viens de passer 2 heures a chercher d'où cela pouvait provenir et je voit pas du tout
je mettrai mes fichiers demain (et si il y a besoin)