Cannot modify header information, headers already sent by
Résolu
MonCplusplus
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
A voir également:
- Cannot modify header information - headers already sent
- Information d'identification réseau - Guide
- Chargeur qui sent le brûlé - Forum Matériel & Système
- L'en-tête du document comporte une information qui n’apparaît pas à l'impression car elle est de couleur blanche. de quelle information s'agit-il ? ✓ - Forum LibreOffice / OpenOffice
- En tête qui n'apparaît pas ✓ - Forum Bureautique
- Gpt header corruption ✓ - Forum Windows 10
3 réponses
1 - peux-tu donner le code de navbar.php lignes 60 à 65 ?
2 - Peux-tu donner le code de connexion_config.php lignes 1 à 18 (en masquant les mots de passe si nécessaire) ?
2 - Peux-tu donner le code de connexion_config.php lignes 1 à 18 (en masquant les mots de passe si nécessaire) ?
Pas de soucis , j'ai supprimé certaines ligne espérant que sa change mais tjrs rien à présent c'est à la ligne 56 qu'il indique un soucis . Par précaution l'indentation n'y est pour rien ?
navbar.php (Error ligne 56)
connexion_config.php (Error ligne 16)
navbar.php (Error ligne 56)
50)</div> 51)</div> 52)</div> 53)</li> 54)</ul> 55)<?php }?> 56)<?php if(isset($_POST['login'])){?> 57)<form class="form-inline ml-auto" action="index.php?choix=connexion_stop.config" method="POST"> 58)<button class="btn btn-success" type="submit">Se déconnecter</button></form> 59)<?php }?> 60)</div> 61)</nav>
connexion_config.php (Error ligne 16)
1)<?php 2)$log = htmlspecialchars($_POST['login']); 3)$mdp = htmlspecialchars($_POST['password']); 4)$request = "SELECT * FROM membres WHERE login=:log"; 5)$result = $database->prepare($request); 6)$result->bindvalue(':log', $log); 7)$result_request = $result->execute(); 8)if(result_request === FALSE){ 9)header("Location:index.php?choix=home"); 10)}else{ 11)$membre = $result->fetch(PDO::FETCH_ASSOC); 12)if(empty($membre)){ 13)header("Location:index.php?choix=home"); 14)}elseif ($mdp === $membre['psw']){ 15)$_SESSION['login'] = $membre['login']; 16)header("Location:index.php?choix=home"); 17)}else{ 18)header("Location:index.php?choix=home"); 19)} 20)} 21)?>
Pour comprendre l'erreur, il faut savoir que l'envoi d'une page du serveur vers le client se déroule en deux temps : l'envoi des en-têtes (headers), puis l'envoi du contenu (le HTML et les echo du PHP). C'est le protocole HTTP qui est comme ça, PHP et HTML n'y peuvent rien.
Quand navbar s'exécute, il y a du HTML qui est envoyé au visiteur. Alors la partie "headers" du protocole HTTP se termine, et on ne peut plus en envoyer. Or, dans connexion_config.php, tu utilises une fonction PHP header qui consiste justement à envoyer des en-têtes HTTP ; mais ce n'est plus possible. Le message te dit qu'il ne peut plus envoyer d'en-têtes ligne 16 de connexion_config.php parce qu'il a déjà commencé les sorties ligne 62 de navbar.php
Ce message montre sans erreur possible que navbar.php s'exécute avant connexion_config.php, ce qui semble contraire à ce qu'on voit dans le code ta page principale, que tu donnes dans la question initiale.
Es-tu sûr que connexion_config.php ou navbar.php ne sont pas inclus plusieurs fois ?
Quand navbar s'exécute, il y a du HTML qui est envoyé au visiteur. Alors la partie "headers" du protocole HTTP se termine, et on ne peut plus en envoyer. Or, dans connexion_config.php, tu utilises une fonction PHP header qui consiste justement à envoyer des en-têtes HTTP ; mais ce n'est plus possible. Le message te dit qu'il ne peut plus envoyer d'en-têtes ligne 16 de connexion_config.php parce qu'il a déjà commencé les sorties ligne 62 de navbar.php
Ce message montre sans erreur possible que navbar.php s'exécute avant connexion_config.php, ce qui semble contraire à ce qu'on voit dans le code ta page principale, que tu donnes dans la question initiale.
Es-tu sûr que connexion_config.php ou navbar.php ne sont pas inclus plusieurs fois ?
Merci pour l’éclaircissement quant au déroulement HTTP mais justement dans mon navbar.php j'ai un formulaire(de connexion) qui redirige vers la pages connexion_config.php (via une URL paramétré) c'est ce qui me permet en autre de pouvoir inclure connexion_config . Donc en gros les seuls fois où j'inclus mes pages navbar.php et config.php sont dans mon index sa donne un truc du genre
index.php
index.php
session_start(); <!-- HMTL , CSS , BOOTSTRAP , jquerry --> include("clientproject/navbar.php"); <!-- test --> if($_GET["choix"] == 'connexion_config'){ include("clientproject/connexion_config.php"); }
Tiens, le contraire de ce que tu avais montré au départ. Ça n'aide pas.
Dans ce sens, ça ne peut pas marcher. Tu essayes d'utiliser 'header' APRES avoir envoyé des données dans navbar.php : c'est interdit par le protocole HTTP.
Il faut que tu ré-organises ton code différemment.
C'est pour ça que d'une manière générale, on fait le maximum de traitement PHP avant la partie HTML.
Dans ce sens, ça ne peut pas marcher. Tu essayes d'utiliser 'header' APRES avoir envoyé des données dans navbar.php : c'est interdit par le protocole HTTP.
Il faut que tu ré-organises ton code différemment.
C'est pour ça que d'une manière générale, on fait le maximum de traitement PHP avant la partie HTML.
Bonjour,
Attention aux commentaires HTML : <!-- ... -->
Même si ce sont des commentaires, ils font partie du code source HTML. Donc, en reprenant l'explication de le père, ils déclenchent la clôture des headers HTTP et le début de l'envoi du corps de la page.
Je ne sais pas si c'est vraiment ça ton problème, vu que ce n'est pas exactement comme ça que ton code est écrit (il est invalide en l'état, les commentaires HTML ne pouvant être placés dans les balises <?php ?>), mais c'est un point à vérifier (quand on traque un bug subtil, c'est plus pratique de voir le vrai code)
Xavier
Attention aux commentaires HTML : <!-- ... -->
Même si ce sont des commentaires, ils font partie du code source HTML. Donc, en reprenant l'explication de le père, ils déclenchent la clôture des headers HTTP et le début de l'envoi du corps de la page.
Je ne sais pas si c'est vraiment ça ton problème, vu que ce n'est pas exactement comme ça que ton code est écrit (il est invalide en l'état, les commentaires HTML ne pouvant être placés dans les balises <?php ?>), mais c'est un point à vérifier (quand on traque un bug subtil, c'est plus pratique de voir le vrai code)
Xavier
Bonjour,
Je précise même...... mettre du HTML directement au milieu de code php génère des erreurs !
Je précise même...... mettre du HTML directement au milieu de code php génère des erreurs !
<?php <!-- fsdgsfsdfsdfsf --> echo " Génère une erreur !"; ?>
<?php // ça c'est un commentaire valide en PHP /* ça c'est un commentaire valide en PHP ou tout un bloc si on le souhaite */ echo " OK... pas de souci !"; ?>
voilà