Php Warning: Cannot modify header information
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
je suis entrain de faire mon site et j'ai un problème:
Voilà alors j'ai fait un menu qui est composé de ce code :
Qui permet aux membres de se connecter depuis ce menu et comme vous avez vu action se fait directement depuis cette page grace à ce code :
et quand je me connecte ça m'affiche ça :
Warning: Cannot modify header information - headers already sent by (output started at /mnt/159/sdc/9/d/nom_de_mon_site/beta/include/connec.php:4) in /mnt/159/sdc/9/d/nom_de_mon_site/beta/include/connec.php on line 25
Voilà merci d'avance !
je suis entrain de faire mon site et j'ai un problème:
Voilà alors j'ai fait un menu qui est composé de ce code :
<?php
if (isset ($_SESSION['login'])) {
echo 'Bienvenue ici!</h4>
<li>
<a href="messagerie.php">Messagerie</a>
</li>
<li>
<a href="prop_news.php">Proposez une News</a>
</li>
<li>
<a href="forum/ucp.php?mode=register&sid=0b40018937c8f5d85ea482a0d1d62341">Inscription au Forum</a>
</li>
<li>
<a href="astuces.php">Astuces</a>
</li>
<li>
<a href="livre_or.php">Livre D\'or</a></li>
<br />
<a href="deconnexion.php">Déconnexion </a>
';
}
else if (!isset ($_SESSION['login'])){
echo '<center>
<h4>Connexion l\'espace membres :</h4>
<form action="" method="post">
Login : <input type="text" name="login"><br />
Mot de passe : <input type="password" name="pass"><br />
<input type="submit" name="connexion" value="Connexion">
</center>';
}
?>
Qui permet aux membres de se connecter depuis ce menu et comme vous avez vu action se fait directement depuis cette page grace à ce code :
<?php
session_start();
?>
<?php
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
$base = mysql_connect ('mystère', 'et boule', 'de');
mysql_select_db ('gomme', $base);
$sql = 'SELECT id FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);
if ($nb == 1) {
$data = mysql_fetch_array($req);
session_start();
$_SESSION['login'] = $_POST['login'];
$_SESSION['id'] = $data['id'];
mysql_free_result($req);
mysql_close();
header('Location: index.php');
exit();
}
elseif ($nb == 0) {
$erreur = 'Compte non reconnu.';
}
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
mysql_free_result($req);
mysql_close();
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>
et quand je me connecte ça m'affiche ça :
Warning: Cannot modify header information - headers already sent by (output started at /mnt/159/sdc/9/d/nom_de_mon_site/beta/include/connec.php:4) in /mnt/159/sdc/9/d/nom_de_mon_site/beta/include/connec.php on line 25
Voilà merci d'avance !
A voir également:
- Php Warning: Cannot modify header information
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Warning zone telechargement - Accueil - Outils
- Symbole warning word ✓ - Forum Word
- Warning battery is low ✓ - Forum Matériel & Système
8 réponses
Tu ne peux plus modifier les entêtes HTTP une fois qu'un caractère de la apge a été envoyé au client.
Donc avant le premier "<?php", il ne doit y avoir aucun caractère (espace compris), et tu ne dois faire aucun echo/print(f) avant la fonction header().
Tu peux utiliser la tamporisation de sortie si tu ne veux pas être ennuyé avec ça :
http://www.siteduzero.com/tutoriel-3-38102-la-tamporisation-de-sortie-en-php.html
Donc avant le premier "<?php", il ne doit y avoir aucun caractère (espace compris), et tu ne dois faire aucun echo/print(f) avant la fonction header().
Tu peux utiliser la tamporisation de sortie si tu ne veux pas être ennuyé avec ça :
http://www.siteduzero.com/tutoriel-3-38102-la-tamporisation-de-sortie-en-php.html
tu as mis sur ton deuxieme code deux fois session_start;
1 en premiere ligne et l' autre plus bas.
Il ne faut en mettre qu' un et il doit etre avant tout code html.
Supprime celui-ci (juste session_start)
session_start();
$_SESSION['login'] = $_POST['login'];
$_SESSION['id'] = $data['id'];
1 en premiere ligne et l' autre plus bas.
Il ne faut en mettre qu' un et il doit etre avant tout code html.
Supprime celui-ci (juste session_start)
session_start();
$_SESSION['login'] = $_POST['login'];
$_SESSION['id'] = $data['id'];
Tu as aussi au début :
Ca va envoyer un retour à la ligne au navigateur et tu ne pourras plus faire d'header après, et ca ne sert à rien de fermer le bloc php pour le rouvrir tout de suite.
?> <?php
Ca va envoyer un retour à la ligne au navigateur et tu ne pourras plus faire d'header après, et ca ne sert à rien de fermer le bloc php pour le rouvrir tout de suite.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
non c'est que je n'est pas pu aller sur mon ordinateur cette semaine !
je vais tester ça !
merci d'avance !
je vais tester ça !
merci d'avance !
je viens de tester j'ai modifier mon code comme ça :
<?php
session_start();
if (isset($_POST['connexion']) && $_POST['connexion'] == 'Connexion') {
if ((isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass']))) {
$base = mysql_connect ('mystère', 'et boule', 'de');
mysql_select_db ('gomme', $base);
$sql = 'SELECT id FROM membre WHERE login="'.mysql_escape_string($_POST['login']).'" AND pass_md5="'.md5(mysql_escape_string($_POST['pass'])).'"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);
if ($nb == 1) {
$data = mysql_fetch_array($req);
$_SESSION['login'] = $_POST['login'];
$_SESSION['id'] = $data['id'];
mysql_free_result($req);
mysql_close();
header('Location: index.php');
exit();
}
elseif ($nb == 0) {
$erreur = 'Compte non reconnu.';
}
else {
$erreur = 'Probème dans la base de données : plusieurs membres ont les mêmes identifiants de connexion.';
}
mysql_free_result($req);
mysql_close();
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
?>