Bonjours à tous.
Débutant en php : j'utilisaissur mon site un systeme d'identification par session.
J'ai voulus ajouter une fonction "mémoriser mon mot de passe" en utilisant les cookies.
Cependant , lorsque je coche cette case (donc le serveur essaye de créer le cookie) sur ma page de login j'obtiens l'erreur suivante :
Si je comprend bien : il me signale qu'un en tête est déja envoyé par la page header.php à la ligne 19 ? Je n'ai rien trouvé d'anormal ... (je met le code à la fin de mon post).Warning: Cannot modify header information - headers already sent by (output started at /home/host/playz.kappatau.fr/public_html/include/header.php:19) in /home/host/playz.kappatau.fr/public_html/login.php on line 79
Warning: Cannot modify header information - headers already sent by (output started at /home/host/playz.kappatau.fr/public_html/include/header.php:19) in /home/host/playz.kappatau.fr/public_html/login.php on line 80
J'utilise sur chaque page de mon site une méthode d'include qui inclus toutes les pages nécessaires (barre de navigation, scripts, etc...).
Dans cette partie d'inclusion : j'ai ajouter une page "checkcookies" qui vérifie si un cookie existe et, le cas échéant, créé la session de connexion utilisateur.
Voici mes codes :
include.php :
login.php :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <?php include('include/server.php'); //CONNEXION SERVEUR include('include/checkcookies.php'); //SCRIPT VERIFICATION COOKIES include('include/header.php'); //BARRE NAVIGATION SUPERIEURE include('include/loading.php'); //BARRE DE CHARGEMENT include('include/script.php'); //SCRIPTS ?> <link rel="icon" type="image/png" href="image/favicon.png" /> <!--FAVICON --> <LINK rel="stylesheet" type="text/css" href="include/theme.css"> <!-- PARAMETRES GRAPHIQUES -->
checkcookies.php (/include/checkcookies.php) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121 <?php include('include.php')?> <meta http-equiv="Content-Type" content="text/html;" /> <meta charset="utf-8"/> <LINK rel="stylesheet" type="text/css" href="css/login.css"> <title>Connexion - Playz</title> </head> <center> <?php //Si lutilisateur est connecte, on le deconecte if(isset($_SESSION['login'])) { //On le deconecte en supprimant simplement les sessions username et userid unset($_SESSION['login'], $_SESSION['userid']); if (isset($_COOKIE['mail'], $_COOKIE['pswd'])) { setcookie('mail', '', time()-100); setcookie('pswd', '', time()-100); } ?> <title>Déconnexion - Playz</title> <div id="logoutmessage" class="windowdefault"> Déconnexion... </div> <script> window.setTimeout("location=('/');",2000) </script> <?php } else {?> <div id="loginpagetable" class="windowdefault"> <form action="login.php" method='post'> Adresse mail d'inscription :<br> <input type="text" name="email" maxlength="250"><br> Mot de passe :<br> <input type="password"name="password" maxlength="10"><br> Conserver la connexion :<input type="checkbox" name="memorize" id="memorize" value="1" /> <input type="submit" value="Connexion" class="button" style="width:50%;"><br> </form></center> </div> <?php //On verifie si le formulaire a ete envoye if(isset($_POST['email'], $_POST['password'])) { //On echappe les variables pour pouvoir les mettre dans des requetes SQL if(get_magic_quotes_gpc()) { $email = mysql_real_escape_string(stripslashes($_POST['email'])); $password = stripslashes(md5($_POST['password'])); } else { $email = mysql_real_escape_string($_POST['email']); $password = $_POST['password']; } //On recupere le mot de passe de lutilisateur $req = mysql_query('select password,id from users where email="'.$email.'"'); $dn = mysql_fetch_array($req); //On le compare a celui quil a entre et on verifie si le membre existe if($dn['password']==$password and mysql_num_rows($req)>0) { //Si le mot de passe es bon, on ne vas pas afficher le formulaire //On enregistre son pseudo dans la session username et son identifiant dans la session userid $_SESSION['login'] = $_POST['email']; $_SESSION['userid'] = $dn['id']; $id = $_SESSION['userid']; if(isset($_POST['memorize']) and $_POST['memorize']=='1') { $one_year = time()+(60*60*24*365); setcookie('mail', $_POST['email'], $one_year); setcookie('pswd', sha1($password), $one_year); } ?> <title>Connexion - Playz</title> <div id="loginmessage" class="windowdefault"> Connexion... </div> <script> window.setTimeout("location=('/');",2000) </script> <script> $("document").ready(function () { $("#logintable").hide(); }); </script> <?php } else {?> <div id="loginpageerror" class="windowdefault"> <font color="#700000">Combinaison incorrecte</font><br> <a href="index.php">Retour a l'accueil</a> </div> <?php } } ?> <?php } ?> </center> <?php include('include/footer.php'); //BARRE NAVIGATION INFERIEUR ?>
Et la page header.php d'ou semble venir l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 <?php //Cette page permet d'initialiser le site en verifiant par exemple si le membre est connecté if(!isset($_SESSION['login']) and isset($_COOKIE['mail'], $_COOKIE['pswd'])) { $cnn = mysql_query('select password,id from users where email="'.$_COOKIE['mail'].'"'); $dn_cnn = mysql_fetch_array($cnn); if(sha1($dn_cnn['password'])==$_COOKIE['pswd'] and mysql_num_rows($cnn)>0) { $_SESSION['login'] = $_COOKIE['mail']; $_SESSION['userid'] = $dn_cnn['id']; } } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93 <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <html> <LINK rel="stylesheet" type="text/css" href="include/css/header.css"> </head> <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script> <BODY> <!-- DEBUT BARRE --> <div id="bar"> <!-- LOGO --> <a href="index.php?src=logo"> <div id="logo"> <img src="image/logo.png" class="logo"> </div> </a> <!-- SI UTILISATEUR CONNECTE --> <?php if(isset($_SESSION['login'])) { $dbar = mysql_query('select * from users where id = '. intval($_SESSION['userid'])); $ddbar = mysql_fetch_array($dbar); ?> <div id="userbutton"> <img src="<?php echo($ddbar['avatar']); ?>" class="userbutton"> </div> <div id="userpanel" class="windowdefault"> <center> <b><?php echo($ddbar['prenom']); ?> <?php echo($ddbar['nom']); ?></b><br> (<?php echo($ddbar['pseudo']); ?>) <br> <a href="profil?id=<?php echo($ddbar['id']); ?>"><input type="button" value="Mon profil" class="button" style="width:80%;"/></a><br> <a href="edit_profil"><input type="button" value="Modifier mon profil" class="button" style="width:80%;"/></a><br> <a href="login"><input type="button" value="Se déconnecter" class="button" style="width:80%;"/></a> </center> </div> <?php } else { //SI UTILISATEUR NON CONNECTE ?> <div id="login"> <div id="loginbutton"> <center> <img src="image/loginbutton.png" class="login"> </center> </div> <div id="loginpanel" class="windowdefault"> <center> <b>Connexion</b><br> <form action="login.php" method='post'> Adresse mail d'inscription :<br> <input type="text" name="email" maxlength="250"><br> Mot de passe :<br> <input type="password"name="password" maxlength="10"><br><br> Conserver la connexion :<input type="checkbox" name="memorize" id="memorize" value="1" /> <input type="submit" value="Connexion" class="button" style="width:80%;"><br> </form></center> </div> </div> <?php } ?> <!--SCRIPTS--> <script> $("#loginbutton").click(function () { $("#loginpanel").slideToggle("fast"); }); $("#userbutton").click(function () { $("#userpanel").slideToggle("fast"); }); </script> <!-- FIN BARRE --> </div>
Voilà : les cookies sont bien appelés avant tout code html ou autre : je ne comprend pas pourquoi j'ai ce message (uniquement lors d'une connexion en cochant la case, de plus , la session est tout de même créée).
... Quelqu'un pourrais-t-il m'apporter son aide ?
Merci d'avance
Partager