Ma session_start ne fonctionne pas
Résolu
mobrobot
Messages postés
173
Date d'inscription
Statut
Membre
Dernière intervention
-
Mobrobot -
Mobrobot -
Bonsoir a tous le monde j'ai une erreur qui ma trop fatigue durent la semaine là
j'ai mis la session_start dans ma page menu du site dont j'ai nommé codemenu.php
quand je l'inclus dans une des mais page au début du code php on m'affiche l'erreur suivant:
Warning: cannot modify header information-headers already sent by (output started at C:\wamp\www\projet\codemenu.php\234) in C:\wamp\www\projet\recuperation_mdp.php on line 70
et si je l'inclus en bas dans le HTML la première erreur disparais et une autre s'affiche en me disant que la variable n'est pas définit
j'ai mis la session_start dans ma page menu du site dont j'ai nommé codemenu.php
quand je l'inclus dans une des mais page au début du code php on m'affiche l'erreur suivant:
Warning: cannot modify header information-headers already sent by (output started at C:\wamp\www\projet\codemenu.php\234) in C:\wamp\www\projet\recuperation_mdp.php on line 70
et si je l'inclus en bas dans le HTML la première erreur disparais et une autre s'affiche en me disant que la variable n'est pas définit
A voir également:
- 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.
- Http - Guide
- Nommez une application d'appel vidéo ou de visioconférence - Guide
- Fonction si et - Guide
- Prix d'un appel local - Forum Mobile
- Cette photo n’a pas été prise cette année. trouvez la date, l'heure et avec quel modèle d'appareil photo elle a été prise. - Forum Réseaux sociaux
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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.
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
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 )
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