Ma session_start ne fonctionne pas
Résolu/Fermé
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
-
30 déc. 2017 à 20:33
Mobrobot - 31 déc. 2017 à 22:06
Mobrobot - 31 déc. 2017 à 22:06
A voir également:
- Ma session_start ne fonctionne pas
- Problème session_start ✓ - Forum PHP
- Notice: session_start(): ignoring session_start() because a session is already active in ✓ - Forum PHP
- Warning: session_start(): cannot send session cache limiter - headers already sent - Forum PHP
- Session_start() headers already sent ✓ - Forum Webmastering
- Une session php a été créée par un appel de fonction session_start(). cela interfère avec l’api rest et les requêtes de boucle (loopback). la session devrait être fermée par session_write_close() avant d’effectuer toute requête http. - Forum Programmation
4 réponses
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
30 déc. 2017 à 21:14
30 déc. 2017 à 21:14
bonsoir,
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include ou require, et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée.
le message d'erreur est très clair:
je pense que tu appelles la fonction header dans recuperation_mdp.php, en ligne 70
alors que tu avais commencé à envoyer des infos dans C:\wamp\www\projet\codemenu.php\234
partage ton code si tu souhaites une assistance plus précise.
N'oubliez jamais que header() doit être appelée avant que le moindre contenu ne soit envoyé, soit par des lignes HTML habituelles dans le fichier, soit par des affichages PHP. Une erreur très classique est de lire un fichier avec include ou require, et de laisser des espaces ou des lignes vides, qui produiront un affichage avant que la fonction header() ne soit appelée.
le message d'erreur est très clair:
je pense que tu appelles la fonction header dans recuperation_mdp.php, en ligne 70
alors que tu avais commencé à envoyer des infos dans C:\wamp\www\projet\codemenu.php\234
partage ton code si tu souhaites une assistance plus précise.
jordane45
Messages postés
38144
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
21 avril 2024
4 650
30 déc. 2017 à 20:45
30 déc. 2017 à 20:45
Bonjour,
Sans voir ton code il sera difficile de te répondre...
Mais tu peux déjà t'assurer que ton fichier est bien encodé en utf8 sans bom (voir chapitre 1 de ce lien : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Sans voir ton code il sera difficile de te répondre...
Mais tu peux déjà t'assurer que ton fichier est bien encodé en utf8 sans bom (voir chapitre 1 de ce lien : https://forums.commentcamarche.net/forum/affich-37584944-php-html-caracteres-accentues-et-l-utf8
NB : Pour poster du code sur le forum.. merci d'utiliser la coloration syntaxique (les balises de code).
Explications disponibles ici : https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
NHenry
Messages postés
15113
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
22 avril 2024
331
30 déc. 2017 à 20:45
30 déc. 2017 à 20:45
Il faut que le "session_start" soit la première instruction à être executée, sans autres caractère avant (genre un retour à la ligne ou un espace devant le <?php )
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
Modifié le 30 déc. 2017 à 21:57
Modifié le 30 déc. 2017 à 21:57
Je vous remercie tous de m'avoir apporter votre aide
au fiat voici mon code du menu du site codemenu.php
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
et voici le code de la page de recuperation_mdp.php
je vous remercie
au fiat voici mon code du menu du site codemenu.php
<?php //Demarrage de la SESSION session_start(); //connexion à la base de donnees require 'dbconnectM.php'; error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); if(isset($_POST['formconnex'])) { $pseudoconnect = htmlspecialchars($_POST['pseudo']); $mdpconnect = sha1($_POST['pass']); if(!empty($pseudoconnect) AND !empty($mdpconnect)) { $requser = $bdd->prepare('SELECT * FROM membres WHERE pseudo = ? AND pass = ?'); $requser->execute(array($pseudoconnect, $mdpconnect)); $userexist = $requser->rowCount(); $user = $requser->fetch(); if($userexist == 1) { $reqconfirme = $bdd->prepare("SELECT * FROM membres WHERE pseudo = ? AND confirmekey = ? AND confirmer = ? "); $reqconfirme->execute(array($user['pseudo'],$user['confirmekey'],$user['confirmer'])); $confirme = $reqconfirme->fetch(); if($confirme['confirmer'] == 1) { $_SESSION['id'] = $user['id']; $_SESSION['pseudo'] = $user['pseudo']; header('Location:userprofil.php?id=' .$_SESSION['id']); }else{ $err = "Veuillez confirmer votre compte "; } } else { $err = "Mauvais identifiant ou mot de passe"; } } else { $err = "Tous les champs doivent être complétes "; } } ?> <div class="pagemenu"> <div class="header"> <div class="page_titre"> <h1>Sitename</h1> <?php error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_starup_errors', TRUE); require_once 'dbconnectM.php'; //------------- functions ---------------/ //functions //------------------------------/ /*Fair une requete SELECT et retoune 1 ligne */ function querySelectOneRow($sql,$datas=NULL){ global $bdd; $result = NULL; try{ $req = $bdd->prepare($sql); $req->execute($datas); $result = $req->fetch(); }catch(Exception $e){ echo 'Error : ' .$e->getMessage(); echo "Les datas"; print_r($datas); } return $result; } /* Recuper les info d'un user en fonction de son ID */ function getUserInfosByID($id){ $sql = "SELECT * FROM membres WHERE id = ?"; $datas = array($id); return querySelectOneRow($sql,$datas); } $id = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL; if($id){ $result = getUserInfosByID($id); if(!empty($result)){ echo '<span class="Userpseudo">'.$result['pseudo'].'</span><a class="Userprofil" href="userprofil.php?id='.$id.'"> Mon profil</a>'; echo '<span class="userdeconnect" id="userdeconnect"><a href="deconnection.php">Se deconnecter</a></sapn>'; } }else{ echo '<div class="logine"> <b><a href="inscription.php">Inscription</a></b> </div>'; echo '<div class="Divlogin"> <b><a href="connecter.php">Connexion</a></b> <div class="login"> <form method="POST" action=""> <tr> <td> <label for="pseudo">Pseudo :</label> </td> <td> <input type="text" name="pseudo" id="pseudo" placeholder="pseudo" /> </td> </tr> <tr> <td> <label for="mdp">Mot de passe :</label> </td> <td > <input id="mdp" type="password" name="pass" placeholder="mot de passe" /> </td> </tr> </table> <hr> <input type="submit" name="formconnex" value="se connecter"> </form> </div> </div>'; } ?> </div> <nav id=sidenave class="sidenav"> <a href="javascript: void(0)" class="closebtn" onclick="closeNav()">×</a> <ul class="menu_drow"> <li class="navi"><i class="fa fa-home" aria-hidden="true" id="awesome"></i><a href="datamee.php">site</a></li> <li class="navi"><i class="fa fa-gamepad" aria-hidden="true" id="awesome"></i><a href="a2jeux.php">site</a> <ul class="apps_drow"> <li><i class="fa fa-android" aria-hidden="true" id="awesome"></i><a href="#">site</a></li> <li><i class="fa fa-apple" aria-hidden="true" id="awesome"></i><a href="#">site</a></li> <li><i class="fa fa-windows" aria-hidden="true" id="awesome"></i><a href="#">site</a></li> </ul> </li> <li class="navi"><i class="fa fa-rocket" aria-hidden="true" id="awesome"></i><a href="a3apps.php">site</a> <ul class="apps_drow"> <li><i class="fa fa-android" aria-hidden="true" id="awesome"></i><a href="#">site</a></li> <li><i class="fa fa-apple" aria-hidden="true" id="awesome"></i><a href="#">site</a></li> <li><i class="fa fa-windows" aria-hidden="true" id="awesome"></i><a href="#">site</a></li> </ul> </li> <li class="navi"><i class="fa fa-mobile" aria-hidden="true" id="awesome"></i><a href="a4phone.php">Phone</a></li> <li class="navE"><a href="#">site</a></li> <li class="navE"><a href="#">site</a></li> <li class="navE"><a href="#">site</a></li> <li class="navE"><a href="#">site</a></li> <li class="navE"><a href="#">site</a></li> <li class="navE"><a href="#">site</a></li> </ul> </nav> <span style="font-size: 30px;cursor: pointer" id="bars" onclick="openNav()"><i class="fa fa-bars" aria-hidden="true"></i></span> <div id="main"> </div> <!-- voici la bare de recherche --> <div class="search_"> <form class="search_q" method="GET" action="resultat_recherche.php"> <input type="hidden" name="search" value="s"> <input type="search" name="g" placeholder="Recherche" /><button name="submit" onclick="valid(this, 'resutats-search');" >Go</button> </form> </div> <?php if(isset($msg)){ echo '<b style="color:darkred">' .$msg. '</b>'; } ?> <!-- Le Menu de deroule telephone--> <div id="menu"> <ul> <li id="menue"><a href="#">site</a></li> <li id="menuee"><a href="#">site</a> <ul> <li><a href="#">site</a></li> <li><a href="#">site</a></li> <li><a href="#">site</a></li> <li><a href="#">site</a></li> <li><a href="#">site</a></li> </ul> </li> <li><div id="btnsearh"></div><button id="btsh" onclick="srhBtn()">search</button></li> </ul> </div> </div> </div>
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
et voici le code de la page de recuperation_mdp.php
<?php include_once "codemenu.php"; //connextion require_once 'dbconnectM.php'; if(isset($_GET['section'])){ $section = htmlspecialchars($_GET['section']); } else{ $section = ""; } if(isset($_POST['recup_submit'],$_POST['recup_mail'])){ if(!empty($_POST['recup_mail'])){ $recup_mail = htmlspecialchars($_POST['recup_mail']); if(filter_var($recup_mail,FILTER_VALIDATE_EMAIL)){ $mailexist = $bdd->prepare('SELECT id, pseudo FROM membres WHERE email = ? '); $mailexist->execute(array($recup_mail)); $mailexist_count = $mailexist->rowCount(); if($mailexist_count == 1){ $pseudo = $mailexist->fetch(); $pseudo = $pseudo['pseudo']; $_SESSION['recup_mail'] = $recup_mail; $recup_code = ""; for ($i=0; $i < 8; $i++) { $recup_code .= mt_rand(0,9); } $mail_recup_exist = $bdd->prepare("SELECT id FROM recuperation WHERE email = ?"); $mail_recup_exist->execute(array($recup_mail)); $mail_recup_exist = $mail_recup_exist-> rowCount(); if($mail_recup_exist == 1){ $recup_insert = $bdd->prepare("UPDATE recuperation SET code = ? WHERE email = ?"); $recup_insert->execute(array($recup_code,$recup_mail)); } else{ $recup_insert = $bdd->prepare("INSERT INTO recuperation(email,code) VALUES(?,?)"); $recup_insert->execute(array($recup_mail,$recup_code)); } $header="MIME-Version: 1.0\r\n"; $header.='From:\'Datamobmee\'<datamobmee12@gmail.com>'."\n"; $header.='Content-Type:text/html; charset="uft-8"'."\n"; $header.='Content-Transfer-Encoding: 8bit'; $message=' <html> <body> <font color="#aaa";> <div align="center"> blabla de Gmail... </div> </font> </body> </html> '; mail($recup_mail, "Recuperation de mot de passe !", $message, $header); header("Location:http://localhost/datamobmee/recup_mdp.php?section=code"); $errore = '<span id="errr">Votre compts a été bien crée<a href="connecter.php"> Me connecter</a></span><br/><br/> <span id="errr1">Un message de confirmation a été envoyé a votre boite e-mail</span> '; } else{ $msg_errer = "Cette adresse mail n'est pas enregistrée"; } } else{ $msg_errer = "Adresse mail invalide"; } } else{ $msg_errer = "Veuillez entre votre adresse mail"; } } if(isset($_POST['verif_submit'],$_POST['verif_code'])){ if(!empty($_POST['verif_code'])){ $verif_code = htmlspecialchars($_POST['verif_code']); $verif_req = $bdd->prepare("SELECT id FROM recuperation WHERE email = ? AND code = ?"); $verif_req->execute(array($_SESSION['recup_mail'],$verif_code)); $verif_req = $verif_req->rowCount(); if($verif_req == 1){ $del_req = $bdd->prepare("DELETE FROM recuperation WHERE email = ?"); $del_req->execute(array($_SESSION['recup_mail'])); header("Location:http://localhost/datamobmee/recup_mdp.php?section=changemdp"); } else{ $msg_errer = "Code invalide"; } } else{ $msg_errer = "Veuillez entre votre code de verification"; } } if(isset($_POST['change_submit'])){ if(isset($_POST['change_mdp'],$_POST['change_mdpc'])){ $mdp = htmlspecialchars($_POST['change_mdp']); $mdpc = htmlspecialchars($_POST['change_mdpc']); if(!empty($mdp) AND !empty($mdpc)){ if($mdp == $mdpc){ $mdp = sha1($mdp); $ins_mdp = $bdd->prepare('UPDATE membres SET pass = ? WHERE email = ?'); $ins_mdp->execute(array($mdp,$_SESSION['recup_mail'])); header("Location:http://localhost/datamobmee/connecter.php"); } else{ $msg_errer = "Vos deux mot de passes ne correspondent pas"; } } else{ $msg_errer = "Veuillez remplir tous les champs"; } } else{ $msg_errer = "Veuillez remplir tous les champs"; } } ?> <!DOCTYPE html> <html> <head> <title>Recuperation de mot de passe</title> <meta charset="utf-8"> <link rel="stylesheet" type="text/css" href="style.css"> </head> <body> <div class="page_principal1"> <div class="recup"> <?php if($section == 'code') { ?> <p>Un code de verifcation a eté envoyer a cette adresse <b><?= $_SESSION['recup_mail'] ?></b> </p> <h4>Entrez votre code de verification : </h4> <form method="post" class="default-form"> <p> <input type="text" name="verif_code" placeholder="Code de verification" size="30"> </p> <p> <input type="submit" id="mitsub" name="verif_submit" value="Valide"> </p> </form> <?php } elseif($section == 'changemdp'){ ?> <h4>Nouveau de mot de passe pour : </h4><b><?= $_SESSION['recup_mail'] ?></b> <form method="post" class="default-form"> <p> <input type="password" name="change_mdp" placeholder="Nouveau mot de passe" size="30"> </p> <p> <input type="password" name="change_mdpc" placeholder="Confirmation du mot de passe" size="30"> </p> <p> <input type="submit" id="mitsub" name="change_submit" value="Valide"> </p> </form> <?php } else { ?> <h2>Recuperation de mot de passe</h2> <form method="post" class="default-form"> <p> <input type="email" name="recup_mail" placeholder="Votre adresse mail" size="30"> </p> <p> <input type="submit" id="mitsub" name="recup_submit" value="Valide"> </p> </form> <?php } ?> <?php if(isset($msg_errer)) { echo '<font color="red">'.$msg_errer.'</font>';} ?> </div> </div> </body> </html>
je vous remercie
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
Modifié le 30 déc. 2017 à 23:24
Modifié le 30 déc. 2017 à 23:24
eh bien, cela confirme que tu fais des
tu dois organiser l'ensemble de ton code pour éviter cela.
je ne sais pas si c'est une bonne idée, mais il est possible de mettre
echoavant l'instruction
header, ce qui est interdit.
tu dois organiser l'ensemble de ton code pour éviter cela.
je ne sais pas si c'est une bonne idée, mais il est possible de mettre
session_start()au début de recuperation_mdp.php
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
31 déc. 2017 à 17:11
31 déc. 2017 à 17:11
J'ai déjà essayer de mettre la
session_start()au début de la page recuperation_mdp.php acune erreur s'affiche si je fait sa. Mais quand j'inclus la page codemenu.php l'erreur s'affiche maintenant
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
>
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
31 déc. 2017 à 18:44
31 déc. 2017 à 18:44
tu fais des echo avant l'instruction header, ce qui est interdit.
tu dois organiser l'ensemble de ton code pour éviter cela.
tu dois organiser l'ensemble de ton code pour éviter cela.
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
1
31 déc. 2017 à 19:10
31 déc. 2017 à 19:10
tu peu bien me détailler comment l'organiser s'il te plait, ou un exemple.
yg_be
Messages postés
22720
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 avril 2024
1 476
>
mobrobot
Messages postés
173
Date d'inscription
vendredi 13 janvier 2017
Statut
Membre
Dernière intervention
8 mai 2023
31 déc. 2017 à 19:31
31 déc. 2017 à 19:31
comment en es-tu arrivé à faire un include de codemenu dans le code de récupération du mot de passe?
est-ce toi qui a écrit tout le code? le comprends-tu?
est-ce toi qui a écrit tout le code? le comprends-tu?