les codes paraissent bon ? pour le echo $_SESSION['nom']& co , je crois que j'ai deja mis sa dans le code non?
Version imprimable
les codes paraissent bon ? pour le echo $_SESSION['nom']& co , je crois que j'ai deja mis sa dans le code non?
oui, ca fonctionne ?
Quel message ? un champ manquant, mot de passe incorrect ?
voila pour la page login.phpCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 <?php session_start(); if(isset($_POST['connexion'])){ $adresse_mail = htmlspecialchars(trim($_POST['adresse_mail'])); $mot_de_passe = htmlspecialchars(trim($_POST['mot_de_passe'])); $nom = htmlspecialchars(trim($_POST['nom'])); // ajoutée $prenom = htmlspecialchars(trim($_POST['prenom'])); // ajoutée if(empty($adresse_mail) && empty($mot_de_passe)){ echo "Veuillez saisir les champs"; }else{ // si le champs adresse mail est vide, on affiche le message : "Veuillez saisir votre adresse mail" if(empty($adresse_mail)){ echo "Veuillez saisir votre adresse mail"; }else{ // si le champs adresse mail est vide, on affiche le message : "Veuillez saisir votre mot de passe" if(empty($mot_de_passe)){ echo "Veuillez saisir votre mot de passe"; }else{ try{ // Ici on se connecte à la base de données mysql $bdd = new PDO('mysql:host=127.0.0.1;dbname=autolib', 'root', ''); }catch(Exception $e){ die('Erreur : ' . $e->getMessage()); } // Cryptage du mot de passe $mot_de_passe=md5($mot_de_passe); // on exécute la requete pour pouvoir se connecter $prepare=$bdd->prepare("SELECT count(*) as total FROM base_de_donnees WHERE adresse_mail=? mot_de_passe=? nom=? AND prenom=?"); // ajoutée $prepare->execute(array($adresse_mail,$mot_de_passe)); $result=$prepare->fetch(PDO::FETCH_OBJ); //on va afficher ce qui est retourne //var_dump($result); //debug //print "user: '$adresse_mail' mot de passe:'$mot_de_passe' ";exit; $rows= $result->total; if ($rows == 1){ $_SESSION['adresse_mail'] = $adresse_mail; $_SESSION['nom'] = $nom; // ajoutée $_SESSION['prenom'] = $prenom; // ajoutée //echo "redirection member.php";exit; header('Location:membre.php'); }else{ echo"Nom d'utilisateur ou mot de passe incorrect"; } } } } } ?> <br><br> <a href="Formulaire_final.php">Pas encore inscrit </a>
et membre.php
non maintenant je ne peux plus me connecter sur l'espace membre.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php session_start(); if(isset($_SESSION['adresse_mail'])) { echo "Bonjour ".$_SESSION['nom']&&$_SESSION['prenom']; ?> <br/><br><a href="logout.php">Déconnexion</a> <?php }else{ header('Location:login.php'); } ?>
lorsque je me connecte avec les bon identifiants j'ai sa :
quand je clique sur conecter sans rien saisir j'ai sa :Citation:
Notice: Undefined index: nom in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 22
Notice: Undefined index: prenom in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 23
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 50
Notice: Trying to get property of non-object in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 59
Nom d'utilisateur ou mot de passe incorrect
Citation:
Notice: Undefined index: nom in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 22
Notice: Undefined index: prenom in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 23
Veuillez saisir votre adresse mail et votre mot de passe
Essayez ce code pour login: on recupere le nom,prenom en base ;)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 <?php session_start(); ?> <h2>Connexion</h2> <form action="login.php" method="post"> <!-- formulaire de connexion --> <label for="login"><strong>Adresse mail</strong></label><br> <input type="text" name="adresse_mail"/><br> <label for="pass"><strong>Mot de passe</strong></label><br> <input type="password" name="mot_de_passe"/><br><br> <input type="submit" name="connexion" value="Se connecter"/> </form> <br><br> <a href="Formulaire_final.php">Pas encore inscrit </a> <?php if(isset($_POST['connexion'])){ $adresse_mail = htmlspecialchars(trim($_POST['adresse_mail'])); $mot_de_passe = htmlspecialchars(trim($_POST['mot_de_passe'])); // si le champs adresse mail est vide, on affiche le message : "Veuillez saisir votre adresse mail" if(empty($adresse_mail)){ echo "Veuillez saisir votre adresse mail"; }else{ // si le champs adresse mail est vide, on affiche le message : "Veuillez saisir votre mot de passe" if(empty($mot_de_passe)){ echo "Veuillez saisir votre mot de passe"; }else{ try{ // Ici on se connecte à la base de données mysql $bdd = new PDO('mysql:host=127.0.0.1;dbname=developpezDotCom', 'root', ''); }catch(Exception $e){ die('Erreur : ' . $e->getMessage()); } // Cryptage du mot de passe $mot_de_passe=md5($mot_de_passe); // on exécute la requete pour pouvoir se connecter $prepare=$bdd->prepare("SELECT nom,prenom,adresse_mail FROM base_de_donnees WHERE adresse_mail=? AND mot_de_passe=? "); $prepare->execute(array($adresse_mail,$mot_de_passe)); $oAccount=$prepare->fetch(PDO::FETCH_OBJ); //on va afficher ce qui est retourne //var_dump($result); //debug //print "user: '$adresse_mail' mot de passe:'$mot_de_passe' ";exit; if ($oAccount){ //remplissage des champs en session $_SESSION['adresse_mail'] = $oAccount->adresse_mail; $_SESSION['nom'] = $oAccount->nom; $_SESSION['prenom'] = $oAccount->prenom; //echo "redirection member.php";exit; header('Location:member.php'); }else{ echo"Nom d'utilisateur ou mot de passe incorrect"; } } } } ?>
Objet non trouvé!
L'URL demandée n'a pas pu être trouvée sur ce serveur. La référence sur la page citée semble être erronée ou perimée. Nous vous prions d'informer l'auteur de cette page de cette erreur.
Si vous pensez qu'il s'agit d'une erreur du serveur, veuillez contacter le webmestre.
Error 404
127.0.0.1
Apache/2.4.4 (Win32) PHP/5.4.14
j'ai mis dans le code dans membre.php:
le but est seulement d'afficher sur la page membre: bienvenue nom prenomCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <?php session_start(); if(isset($_SESSION['adresse_mail'])) { echo "Bonjour ".$_SESSION['nom'],$_SESSION['prenom']; ?> <br/><br><a href="logout.php">Déconnexion</a> <?php }else{ header('Location:login.php'); } ?>
Ca doit etre au niveau de la redirection
j ai mis
la page membre s'appelle member.php ou membre.php ?Code:header('Location:member.php');
membre.php
imikado : taidasuke est là pour recevoir des conseils, ce serait à lui de vérifier ce genre de choses !
Copier / coller benoitement des portions de code sans même regarder s'il y a des fautes de frappe ou des nommages erronés, c'est loin d'être la bonne façon de procéder !
@Bovino c'est vrai
@taidasuke changer l'adresse de la redirection member.php par membre.php
Bovino a raison, lorsque l'on apprend un langage une grosse partie nécessaire est de comprendre les erreurs et apprendre à debuger, ici la page redirige sur une page non trouvé (404)
Vous devriez regarder l'adresse, voir que vous etes redirigé sur member.php à la place de membre.php, chercher dans le code où est indiqué "member.php" pour remplacer par "membre.php
@imikado
purée presque 200 posts dans le fil : tu as toute mon admiration ;)
rawsrc, je remarque une légère ironie dans ton commentaire et ça me semble quelque peu sévère. Il y a quand même des difficultés techniques assez complexes à résoudre comme insérer un espace entre deux mots, corriger un nom de fichier, fermer une accolade dans un if, vérifier le nombre et le format des paramètres d'une fonction...
Bref, du haut niveau ! :mouarf:
@Bovino @rawsrc je confirme que ce ne sont pas des questions php complexe, le plus difficile: debuger à l'aveugle, j'ai créé la même base que taidasuke pour trouver le probleme de double hashage...
pour l'espace, c'est Séb qui a répondu ;)
Pour le nom de fichier c'est uniquement la, au départ son fichier membre s'appelait member.php ;)
je vois que sa se moque de moi , j'ai quand même chercher avant de demander ...Même si vous avez l'impression que je cherche pas
Je vous remercie à tous de m'avoir aidé. Là je m'occupe de commenter le code de chaque page et j'essaye de résoudre un problème lorsque je suis connecté sur la page membre.
J'ai réussie à mettre l'espace entre nom et prénom tout fonctionne maintenant j'essaie de personnaliser les bouton connexion et déconnexion.
Là j'ai commenté mon code , vous pouvez me donnez vos impressions ^^
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 <?php // on demarre la session session_start(); // on se connecte à la page membre lorsqu'on a entré les bon identifiants if(isset($_SESSION['adresse_mail'])) { // affiche la perssonne qui est connecté echo "Bonjour ".$_SESSION['prenom']; echo " ".$_SESSION['nom']; // ajout d'un espace entre le prénom et nom ?> <br/><br><a href="logout.php">Déconnexion</a> <?php // Permet d'éviter que l'on change l'url de la page }else{ // redirection sur la page login.php header('Location:login.php'); } ?>
Juste penser à indenter le code c'est plus lisible pour vous et pour nous ;)
Je commente les commentaires :
Les commentaires doivent apporter des explications, traduire les instructions PHP en français est inutile.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 <?php // on demarre la session // => commentaire inutile, session_start( ) parle de lui-même session_start(); // on se connecte à la page membre lorsqu'on a entré les bon identifiants // => ici le if( ) ne vérifie pas si les bons ids ont été entrés et ne connecte pas if(isset($_SESSION['adresse_mail'])) { // affiche la perssonne qui est connecté // => commentaire inutile, les instructions parlent d'elles-mêmes echo "Bonjour ".$_SESSION['prenom']; echo " ".$_SESSION['nom']; // ajout d'un espace entre le prénom et nom ?> <br/><br><a href="logout.php">Déconnexion</a> <?php // Permet d'éviter que l'on change l'url de la page // => j'aurais mis "redirige le visiteur non authentifié" }else{ // redirection sur la page login.php // => commentaire inutile, l'instruction parle d'elle-même header('Location:login.php'); } // Tu peux supprimer le ?> final, inutile en bas de page // et évite ainsi quelques problèmes si retours à la ligne résiduels ?>
Au final tu as 2 espaces. Une espace normale " " et une espace insécable " ".Code:
1
2 echo "Bonjour ".$_SESSION['prenom']; echo " ".$_SESSION['nom'];
Si une espace normale suffit, au choix :
Si tu veux de l'insécable :Code:
1
2
3 echo "Bonjour $_SESSION[prenom] $_SESSION[nom]" ; echo "Bonjour {$_SESSION['prenom']} {$_SESSION['nom']}" ; echo 'Bonjour ', $_SESSION['prenom'], ' ', $_SESSION['nom'] ;
Tu peux aussi sortir le HTML du PHP (préférable) :Code:
1
2
3 echo "Bonjour $_SESSION[prenom] $_SESSION[nom]" ; echo "Bonjour {$_SESSION['prenom']} {$_SESSION['nom']}" ; echo 'Bonjour ', $_SESSION['prenom'], ' ', $_SESSION['nom'] ;
Code:
1
2
3
4
5
6
7 ?> Bonjour <?php echo $_SESSION['prenom'] ?> <?php echo $_SESSION['nom'] ?> Bonjour <?php echo $_SESSION['prenom'] ?> <?php echo $_SESSION['nom'] ?> <?php