merci beaucoup. je tiens à présenter mes excuses je passe pour quelqu'un qui ne cherche pas ses erreurs tout seul.
Version imprimable
merci beaucoup. je tiens à présenter mes excuses je passe pour quelqu'un qui ne cherche pas ses erreurs tout seul.
Pas de soucis ;)
Le problème est corrigé, je peux passer en :resolu: ?
La documentation php est ton ami mais sinon n'hésites pas à poster tes questions si tu ne comprends pas la doc :)
pas encore^^ . je dois encore commenter le code source.
peux t'être que j'aurai besoin de votre aide. Là je commence un formulaire de connexion.
OK, pas de soucis, n'hésites pas à demander ;)
pour ce projet, ne serait-il pas plus pratique de passer par un framework ?
[mode auto promo]
note:
Quelques tutos vidéos sur le mkframework: http://mkdevs.com/screencasts.html
Et un article ici: http://imikado.developpez.com/tutori...n-mkframework/
[/mode auto promo]
quand je regarde ma base de données de type texte en tapant une date au hazard dans le deroulant j'ai ce chiffre 1358290800Code:$date_de_naissance=mktime(0, 0, 0, $_POST['mois'], $_POST['jour'], $_POST['annees']);
au lieu de la forme jj/mm/aaaa. dois je modifier le type dans la base de données?
la fonction mktime retourne un timestamp
pour avoir une date au format Ymd, il faut faire
Code:date('Ymd',mktime(0, 0, 0, $_POST['mois'], $_POST['jour'], $_POST['annees']));
j'ai un problème au niveau du code
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 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html" charset=iso-8859-1" name="projet" content="projet"> <link rel="stylesheet" href="style_projet.css"> <title> Société Autolib' </title> </head> <body> <p> <h2>Connexion</h2> <form action="login.php" method="post"> <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> <a href="Formulaire_final.php">Pas encore inscrit </a> <?php { $adresse_mail=$_POST['adresse_mail']; $mot_de_passe=$_POST['mot_de_passe']; if(empty($adresse_mail)); { echo "Veuillez saisir votre adresse mail"; } else { // Ici on se connecte à la base de données mysql $bdd = new PDO('mysql:host=localhost;dbname=autolib', 'root', ''); } catch(Exception $e) { // Lorsqu'il y a un erreur, on affiche un méssage d'erreur puis on stoppe tout die('Erreur : '.$e->getMessage()); } $adresse_mail=mysql_query("SELECT * FROM base_de_donnees WHERE adresse_mail=('$adresse_mail') AND mot_de_passe=('$mot_de_passe')"); $rows=mysql_num_rows($adresse_mail); if($rows==1) { echo " Bienvenue ". $adresse_mail; }else echo"Adresse mail ou mot de passe incorrect" } ?> </body> </html>
Citation:
Parse error: syntax error, unexpected 'else' (T_ELSE) in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 34
help svp
Elevez le ; à la fin du if, ligne 30 :)
corrigé:
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 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html" charset=iso-8859-1" name="projet" content="projet"> <link rel="stylesheet" href="style_projet.css"> <title> Société Autolib' </title> </head> <body> <p> <h2>Connexion</h2> <form action="login.php" method="post"> <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> <a href="Formulaire_final.php">Pas encore inscrit </a> <?php { $adresse_mail=$_POST['adresse_mail']; $mot_de_passe=$_POST['mot_de_passe']; if(empty($adresse_mail)) { echo "Veuillez saisir votre adresse mail"; } else { try { // Ici on se connecte à la base de données mysql $bdd = new PDO('mysql:host=localhost;dbname=autolib', 'root', ''); } catch(Exception $e) { // Lorsqu'il y a un erreur, on affiche un méssage d'erreur puis on stoppe tout die('Erreur : '.$e->getMessage()); } $adresse_mail=mysql_query("SELECT * FROM base_de_donnees WHERE adresse_mail=('$adresse_mail') AND mot_de_passe=('$mot_de_passe')"); $rows=mysql_num_rows($adresse_mail); if($rows==1) { echo " Bienvenue ". $adresse_mail; } }else echo"Adresse mail ou mot de passe incorrect" )); } ?> </body> </html>
En fait le but c'est de me connecter après avoir saisie mes données dans le formulaire d'inscription. le but étant d'afficher un message d'erreur le mot de passe est incorrect, ou l'adresse mail est incorrect ou bien si on a rien saisie.Citation:
Parse error: syntax error, unexpected 'else' (T_ELSE) in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 54
voila
Euh... il y a quand même un moment où il faudrait te prendre un peu en main, que tu lises les messages d'erreur et que tu corriges toi-même ton code...
Deux choses:
1. pourquoi utiliser à la fois pdo et mysql_query ?
2. tu as une faille tres grave (sql injection)
Il vaut mieux passé par les prepares statement de pdo ;)Code:mysql_query("SELECT * FROM base_de_donnees WHERE adresse_mail=('$adresse_mail') AND mot_de_passe=('$mot_de_passe')"
là j'essaie de corriger j'ai supprimé les ligne d'après.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 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html" charset=iso-8859-1" name="projet" content="projet"> <link rel="stylesheet" href="style_projet.css"> <title> Société Autolib' </title> </head> <body> <p> <h2>Connexion</h2> <form action="login.php" method="post"> <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> <a href="Formulaire_final.php">Pas encore inscrit </a> <?php { $adresse_mail=$_POST['adresse_mail']; $mot_de_passe=$_POST['mot_de_passe']; if(empty($adresse_mail)) { echo "Veuillez saisir votre adresse mail"; } else { try { // Ici on se connecte à la base de données mysql $bdd = new PDO('mysql:host=localhost;dbname=autolib', 'root', ''); } catch(Exception $e) { // Lorsqu'il y a un erreur, on affiche un méssage d'erreur puis on stoppe tout die('Erreur : '.$e->getMessage()); } mysql_query("SELECT * FROM base_de_donnees WHERE adresse_mail=('$adresse_mail') AND mot_de_passe=('$mot_de_passe')"); )); } ?> </body> </html>
Il faudrait remplacer
parCode:mysql_query("SELECT * FROM base_de_donnees WHERE adresse_mail=('$adresse_mail') AND mot_de_passe=('$mot_de_passe')");
Code:
1
2
3
4
5 $bdd = new PDO('mysql:host=localhost;dbname=autolib', 'root', ''); $bdd->prepare("SELECT * FROM base_de_donnees WHERE adresse_mail=? AND mot_de_passe=? "); $bdd->execute(array($adresse_mail,$mot_de_passe));
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 <?php // On démarre la session session_start(); ?> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html" charset=iso-8859-1" name="projet" content="projet"> <link rel="stylesheet" href="style_projet.css"> <title> Société Autolib' </title> </head> <body> <p> <h2>Connexion</h2> <form action="login.php" method="post"> <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> <a href="Formulaire_final.php">Pas encore inscrit </a> <?php { $adresse_mail=$_POST['adresse_mail']; $mot_de_passe=$_POST['mot_de_passe']; if(empty($adresse_mail)) { echo "Veuillez saisir votre adresse mail"; } else { try { // Ici on se connecte à la base de données mysql $bdd = new PDO('mysql:host=localhost;dbname=autolib', 'root', ''); } catch(Exception $e){ die('Erreur : ' . $e->getMessage()); } $bdd->prepare("SELECT * FROM base_de_donnees WHERE adresse_mail=? AND mot_de_passe=? "); $bdd->execute(array($adresse_mail,$mot_de_passe)); } ?> </body> </html>
je viens d'ajouter session start apres je vois pas comment faire après, j'ai beaucoup chercher, pour info..Citation:
Parse error: syntax error, unexpected end of file in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 59
Ligne 30 il y aen trop ;)Code:{
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 <?php $adresse_mail = $_POST['adresse_mail']; $mot_de_passe = $_POST['mot_de_passe']; if(empty($adresse_mail)) { echo "Veuillez saisir votre adresse mail"; }else 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=localhost;dbname=autolib', 'root', ''); } catch(Exception $e){ die('Erreur : ' . $e->getMessage()); } $mot_de_passe=md5($mot_de_passe); $bdd->prepare("SELECT * FROM base_de_donnees WHERE adresse_mail=? AND mot_de_passe=? "); $bdd->execute(array($adresse_mail,$mot_de_passe)); $rows=mysql_num_rows($adresse_mail); if($rows == 1) { echo"Bienvenue"; }else echo"Nom d'utilisateur ou mot de passe incorrect"; } ?>
=====> variable définie pourtantCitation:
Notice: Undefined index: adresse_mail in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 27
Notice: Undefined index: mot_de_passe in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 28
Veuillez saisir votre adresse mail
et lorsque je saisie les infos dans connexions précédemment saisie dans le formulaire voici l'erreur que j'obtiens :
Citation:
Fatal error: Call to undefined method PDO::execute() in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 49
Franchement, tu ne sembles pas faire beaucoup d'efforts pour lire et comprendre les messages d'erreur et essayer de corriger ton code !
Si l'on en croit ton précédent message, la page login.php sert en même temps à afficher le formulaire et à le traiter. Donc quand tu arrives dessus la première fois et que tu affectes
il se trouve que l'utilisateur n'a pas encore pu remplir ces champs et encore moins te les envoyer par POST. Fatalement, les indices adresse_mail et mot_de_passe du tableau $_POST n'existent pas, ce qui explique les erreursCode:
1
2 $adresse_mail = $_POST['adresse_mail']; $mot_de_passe = $_POST['mot_de_passe'];
Maintenant, encore une fois, merci de faire un minimum de débogage avant de poster chaque message d'erreur rencontré !Citation:
Notice: Undefined index: adresse_mail in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 27
Notice: Undefined index: mot_de_passe in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 28
Veuillez saisir votre adresse mail
Vous ne pouvez pas utiliser "mysql_num_rows" avec pdo c'est soit mysql_* soit pdo ;)
Pour votre cas, pour récupérer le nombre de ligne:
Plus d'infos sur pdo ici:http://php.net/manual/fr/book.pdo.phpCode:
1
2
3
4
5 $bdd->prepare("SELECT * FROM base_de_donnees WHERE adresse_mail=? AND mot_de_passe=? "); $bdd->execute(array($adresse_mail,$mot_de_passe)); $rows= $bdd->fetch(PDO::FETCH_OBJ)->rows;
login.php
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 <h2>Connexion</h2> <form action="login.php" method="post"> <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> <a href="Formulaire_final.php">Pas encore inscrit </a> <?php session_start(); if(isset($_POST['submit'])) { $adresse_mail = $_POST['adresse_mail']; $mot_de_passe = $_POST['mot_de_passe']; if(empty($adresse_mail)) { echo "Veuillez saisir votre adresse mail"; }else 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=localhost;dbname=autolib', 'root', ''); } catch(Exception $e){ die('Erreur : ' . $e->getMessage()); } $mot_de_passe=md5($mot_de_passe); $bdd->prepare("SELECT * FROM base_de_donnees WHERE adresse_mail=? AND mot_de_passe=? "); $bdd->execute(array($adresse_mail,$mot_de_passe)); $rows= $bdd->fetch(PDO::FETCH_OBJ)->rows; if ($rows == 1); { $_SESSION['adresse_mail'] = $adresse_mail; header('Location':membre.php) }else echo"Nom d'utilisateur ou mot de passe incorrect"; ?>
membre.phpCitation:
Parse error: syntax error, unexpected ':' in I:\EasyPHP-DevServer-13.1VC9\data\localweb\projects\BAC\login.php on line 52
logout.phpCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?php session_start(); if(isset($_SESSION['$adresse_mail'])) echo "Bonjour" .$_SESSION['$adresse_mail']; ?> <br/><br><a href="logout.php">Déconnexion</a> <?php }else{ header('Location:login.php'); } ?>
vos impressions?Code:
1
2
3
4
5
6
7
8
9 <?php session_start(); session_destroy(); header('Location:login.php'); ?>