Erreur de syntaxe près de '@hotmail.fr.' à la
lagarkane
-
pyschopathe Messages postés 2053 Statut Membre -
pyschopathe Messages postés 2053 Statut Membre -
Bonjour bonjour,
J'ai un formulaire d'identification qui me pose problème...
Le principe est le suivant: L'utilisateur entre son email et son mot de passe, envoie le formulaire à la page de transfert php qui va vérifier que le mot de passe est valide dans la base de donnée, puis, (si c'est le cas) afficher
un ptit message de bienvenue :]]
Mais voilà, il m'affiche le message d'erreur suivant:
Erreur de syntaxe près de '@hotmail.fr.' à la ligne 1
Le plus drole dans l'histoire, c'est qu'à la ligne 1, il y a le "<! doctype" pompé du net, et qui à mon avis ne contient aucune erreur :°
je vous mets le script de la page de transfert...:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Identification</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Exemple" href="CssFringues.css" />
</head>
<body>
<div id="en_tete">
</div>
<div id="identification">
<?php
include("include/identification.html");
?>
</div>
<div id="menu">
<?php
include("include/menu.html");
?>
</div>
<div id="corps">
<?php
$mail=$_POST['mail'];
$mdp=$_POST['mdp'];
mysql_connect("localhost", "g13", "g13") or die("<h1>Erreur de connexion a la bdd.</h1><br/><a href='fringues.php'>Cliquez ici</a> pour revenir à l'accueil<br/>". mysql_error());
mysql_select_db("g13");
$data= mysql_query("SELECT * FROM client WHERE mailcli= .$mail.") or die ("<h1>Erreur lors de la récupération de vos données sur la Base de donnée</h1><br/>Etes-vous déjà inscrit sur notre site? si non, <a href='formulaire_inscription.php'>Cliquez ici</a> pour accéder au formulaire d'inscription<br/>" .mysql_error());
mysql_close();
$infocli = mysql_fetch_array($data);
if ($infocli['mdpcli']!= $mdp)
{
echo "Mot de passe incorrect! Pas encore Inscrit?<br/>Cliquez <a href='formulaire_inscription.php'>ici</a> pour accéder au formulaire d'enregistrement.";
}
else
{
echo "Bonjour " .$infocli[prenomcli]. " " .$infocli[nomcli]. "!";
echo "Cliquez <a href=\"fringues.php\">ici</a> pour accéder à la page d'accueil du site";
}
?>
</div>
<div id="pied_de_page">
<?php
include("include/copyright.html");
?>
</div>
</body>
</html>
Voilà voilà, pitié aidez moaaa! x]
J'ai un formulaire d'identification qui me pose problème...
Le principe est le suivant: L'utilisateur entre son email et son mot de passe, envoie le formulaire à la page de transfert php qui va vérifier que le mot de passe est valide dans la base de donnée, puis, (si c'est le cas) afficher
un ptit message de bienvenue :]]
Mais voilà, il m'affiche le message d'erreur suivant:
Erreur de syntaxe près de '@hotmail.fr.' à la ligne 1
Le plus drole dans l'histoire, c'est qu'à la ligne 1, il y a le "<! doctype" pompé du net, et qui à mon avis ne contient aucune erreur :°
je vous mets le script de la page de transfert...:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Identification</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Exemple" href="CssFringues.css" />
</head>
<body>
<div id="en_tete">
</div>
<div id="identification">
<?php
include("include/identification.html");
?>
</div>
<div id="menu">
<?php
include("include/menu.html");
?>
</div>
<div id="corps">
<?php
$mail=$_POST['mail'];
$mdp=$_POST['mdp'];
mysql_connect("localhost", "g13", "g13") or die("<h1>Erreur de connexion a la bdd.</h1><br/><a href='fringues.php'>Cliquez ici</a> pour revenir à l'accueil<br/>". mysql_error());
mysql_select_db("g13");
$data= mysql_query("SELECT * FROM client WHERE mailcli= .$mail.") or die ("<h1>Erreur lors de la récupération de vos données sur la Base de donnée</h1><br/>Etes-vous déjà inscrit sur notre site? si non, <a href='formulaire_inscription.php'>Cliquez ici</a> pour accéder au formulaire d'inscription<br/>" .mysql_error());
mysql_close();
$infocli = mysql_fetch_array($data);
if ($infocli['mdpcli']!= $mdp)
{
echo "Mot de passe incorrect! Pas encore Inscrit?<br/>Cliquez <a href='formulaire_inscription.php'>ici</a> pour accéder au formulaire d'enregistrement.";
}
else
{
echo "Bonjour " .$infocli[prenomcli]. " " .$infocli[nomcli]. "!";
echo "Cliquez <a href=\"fringues.php\">ici</a> pour accéder à la page d'accueil du site";
}
?>
</div>
<div id="pied_de_page">
<?php
include("include/copyright.html");
?>
</div>
</body>
</html>
Voilà voilà, pitié aidez moaaa! x]
A voir également:
- Erreur de syntaxe près de '@hotmail.fr.' à la
- Hotmail.fr - Guide
- Erreur 3005 france tv - Forum TV & Vidéo
- Erreur de lecture reconnecté en 3s - Forum TV & Vidéo
- Une erreur s’est produite une erreur s’est produite et il est impossible de charger la page. ✓ - Forum Instagram
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
6 réponses
Bonjour
Le numéro de ligne n'est pas farfelu, c'est une erreur mysql et ta requête mysql est composée d'une seule ligne, l'erreur est forcément sur la ligne 1. Relis le message d'erreur complet et tu verras que le numéro de ligne du script PHP est lui aussi affiché et que ce n'est pas 1
Ton erreur vient de points qui n'ont rien à faire ici.
mysql_query("SELECT * FROM client WHERE mailcli= .$mail.")
en PHP le point sert à concaténer des chaînes quand il est entre deux chaînes, mais ici il est à l'intérieur d'une chaîne, c'est un point, un point c'est tout . si $mail vaut toto@hotmail.fr, ta requête est :
Alors qu'elle devrait être :
remplace les . par des ' ça devrait aller mieux
Le numéro de ligne n'est pas farfelu, c'est une erreur mysql et ta requête mysql est composée d'une seule ligne, l'erreur est forcément sur la ligne 1. Relis le message d'erreur complet et tu verras que le numéro de ligne du script PHP est lui aussi affiché et que ce n'est pas 1
Ton erreur vient de points qui n'ont rien à faire ici.
mysql_query("SELECT * FROM client WHERE mailcli= .$mail.")
en PHP le point sert à concaténer des chaînes quand il est entre deux chaînes, mais ici il est à l'intérieur d'une chaîne, c'est un point, un point c'est tout . si $mail vaut toto@hotmail.fr, ta requête est :
SELECT * FROM client WHERE mailcli= .toto@hotmail.fr.
Alors qu'elle devrait être :
SELECT * FROM client WHERE mailcli= 'toto@hotmail.fr'
remplace les . par des ' ça devrait aller mieux
Merci beaucoup! Donc pas besoin de concaténation dans les requètes sql, les variables doivent être mises entre '' ?
Je retiens ;)
Merci pr le coup de main =)
Je retiens ;)
Merci pr le coup de main =)
Donc pas besoin de concaténation dans les requètes sql
Je n'ai pas dit ça !
Les points qu'il y avait dans ta requête n'étaient PAS des concaténations.
Le point sert à faire des concaténations en PHP, pas en mysql. En mysql, il y a une fonction CONCAT pour ça.
Mais les gens, et tu en fais visiblement partie, confondent presque toujours deux choses qui n'ont rien à voir :
la requête (chaine) qu'il faut passer à mysql pour réaliser une opération sur une base de données
les opérations à faire ne PHP pour obtenir cette chaîne.
Exemple
les variables doivent être mises entre ''
Cette phase mélange quelque chose qui concerne le PHP et une chose qui concerne MySQL :
. la variable PHP $mail n'a aucun besoin de ''
. ta requête ne comporte aucune variable, mysql ne voit JAMAIS $mail car $mail est remplacé par sa valeur avant l'appel à mysql_query. Note que la requête demande bien des '' autour de 'toto@hotmail.fr', mais que ça n'a aucun rapport avec le fait que toi tu as utilisé une variable PHP à cet endroit.
En fait, il est très fréquent qu'on ait besoin de concaténation (en PHP) pour préparer une requête pour mySQL.
Je n'ai pas dit ça !
Les points qu'il y avait dans ta requête n'étaient PAS des concaténations.
Le point sert à faire des concaténations en PHP, pas en mysql. En mysql, il y a une fonction CONCAT pour ça.
Mais les gens, et tu en fais visiblement partie, confondent presque toujours deux choses qui n'ont rien à voir :
la requête (chaine) qu'il faut passer à mysql pour réaliser une opération sur une base de données
les opérations à faire ne PHP pour obtenir cette chaîne.
Exemple
les variables doivent être mises entre ''
Cette phase mélange quelque chose qui concerne le PHP et une chose qui concerne MySQL :
. la variable PHP $mail n'a aucun besoin de ''
. ta requête ne comporte aucune variable, mysql ne voit JAMAIS $mail car $mail est remplacé par sa valeur avant l'appel à mysql_query. Note que la requête demande bien des '' autour de 'toto@hotmail.fr', mais que ça n'a aucun rapport avec le fait que toi tu as utilisé une variable PHP à cet endroit.
En fait, il est très fréquent qu'on ait besoin de concaténation (en PHP) pour préparer une requête pour mySQL.
Ok! Merci bcp pour cette explication, beaucoup de choses m'échappent encore en php et mysql, je n'en fais que depuis quelques mois...
Maintenant, j'ai un autre souci, je ne sais pas si faisable ou pas, mais j'aimerais qu'une fois l'utilisateur inscrit et identifié, il puisse naviguer sur toutes les pages de mon site sans avoir à chaque fois à se ré-identifier
exemple:
l'utilisateur s'identifie, appuye sur le bouton "envoyer", et se retrouve sur la page de transfert (celle qui posait problème avant.) la page lui affiche "bonjour Mr $nom, vous êtes maintenant connecté. cliquez ici pour accéder à la page d'accueil"
Mr $nom clique sur le lien qui l'envoie à la page d'accueil, mais voilà, il n'est plus connecté...
et s'il veut accéder à la boutique en ligne du site par exemple, il ne l'est toujours pas.
J'ai donc pensé à utiliser une variable $GET et récupérer ainsi l'adresse mail qui lui permettait de s'identifier. Mais avec une variable $GET, le contenu de la variable s'affichera dans l'url de la page d'après ce que j'ai compris...
ce qui signifie que n'importe qui peut accéder à la page en modifiant l'adresse mail (bref, aucune sécurité)
J'ai donc pensé à utiliser le mot de passe plutot dans la variable $GET, mais à nouveau, lorsque quelqu'un tombe sur l'URL de la page, il peut en extraire sans problème le mot de passe, et le récupérer...
Bref, la question est:
Comment puis-je récupérer les identifiants de l'utilisateur de manière sécurisée sans utiliser les variables $POST?
Je ne sais pas si j'ai été très clair :S, mais si quelqu'un m'a compris et a une solution... =)
à plouch'
Maintenant, j'ai un autre souci, je ne sais pas si faisable ou pas, mais j'aimerais qu'une fois l'utilisateur inscrit et identifié, il puisse naviguer sur toutes les pages de mon site sans avoir à chaque fois à se ré-identifier
exemple:
l'utilisateur s'identifie, appuye sur le bouton "envoyer", et se retrouve sur la page de transfert (celle qui posait problème avant.) la page lui affiche "bonjour Mr $nom, vous êtes maintenant connecté. cliquez ici pour accéder à la page d'accueil"
Mr $nom clique sur le lien qui l'envoie à la page d'accueil, mais voilà, il n'est plus connecté...
et s'il veut accéder à la boutique en ligne du site par exemple, il ne l'est toujours pas.
J'ai donc pensé à utiliser une variable $GET et récupérer ainsi l'adresse mail qui lui permettait de s'identifier. Mais avec une variable $GET, le contenu de la variable s'affichera dans l'url de la page d'après ce que j'ai compris...
ce qui signifie que n'importe qui peut accéder à la page en modifiant l'adresse mail (bref, aucune sécurité)
J'ai donc pensé à utiliser le mot de passe plutot dans la variable $GET, mais à nouveau, lorsque quelqu'un tombe sur l'URL de la page, il peut en extraire sans problème le mot de passe, et le récupérer...
Bref, la question est:
Comment puis-je récupérer les identifiants de l'utilisateur de manière sécurisée sans utiliser les variables $POST?
Je ne sais pas si j'ai été très clair :S, mais si quelqu'un m'a compris et a une solution... =)
à plouch'
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Ah, ben en réfléchissant encore un peu, je crois avoir trouvé la solution, même si ca me parait un peu foireux... dites moi ce que vous en pensez :]
Je pourrai ajouter à ma BDD une table "CLIENT_CONNECTE" dans laquelle toutes les infos de ma table client(numcli, nomcli, adressecli, mailcli, mdpcli.....) s'inscrirait lors de l'identification de l'utilisateur.
Je vérifie que le client est connecté à l'aide d'une variable $_GET['numcli'] qui est la clé primaire de ma table CLIENT, et qui est auto-increment, et donc unique à chaque client inscrit dans la base.
comme ca, lors du chargement de chaque page de mon site, je vérifie que le client est bien connecté.
Ca vous parait logique? ^^'
Si cette méthode vous parait foireuse et que vous avez plus simple et plus efficace, je suis tout ouïe x]
Je pourrai ajouter à ma BDD une table "CLIENT_CONNECTE" dans laquelle toutes les infos de ma table client(numcli, nomcli, adressecli, mailcli, mdpcli.....) s'inscrirait lors de l'identification de l'utilisateur.
Je vérifie que le client est connecté à l'aide d'une variable $_GET['numcli'] qui est la clé primaire de ma table CLIENT, et qui est auto-increment, et donc unique à chaque client inscrit dans la base.
comme ca, lors du chargement de chaque page de mon site, je vérifie que le client est bien connecté.
Ca vous parait logique? ^^'
Si cette méthode vous parait foireuse et que vous avez plus simple et plus efficace, je suis tout ouïe x]
Foireux ^^, je peux tester tous les numéros de client jusqu'à tomber sur un connecté et usurper son identité très facilement !
La solution passe par l'utilisation de sessions, renseigne-toi là-dessus, cherche sur le forum, googlise, le net regorge d'infos là-dessus. Si tu as besoin de réponses, repasse par ici !
La solution passe par l'utilisation de sessions, renseigne-toi là-dessus, cherche sur le forum, googlise, le net regorge d'infos là-dessus. Si tu as besoin de réponses, repasse par ici !
Ouais, en fait ca, fait que reporter le pblem mon idée...
Ok, ben jvais faire quelques recherches, jvous dirait ce que ca donne après ;)
Ok, ben jvais faire quelques recherches, jvous dirait ce que ca donne après ;)
Une grande règle de programmation Web (et de programmation tout court d'ailleurs) : Never Trust User Input, càd ne jamais faire confiance aux données venant de l'utilisateur. Les sessions sont stockées sur le serveur, ce qui limite leur vulnérabilité. Attention cependant, il y a toujours des risques, renseigne-toi bien sur la manière de les utiliser convenablement afin de les minimiser.