schats Posté 19 Janvier 2007 Posté 19 Janvier 2007 bonjour, j'ai un petit problème avec le header . l'erreur: Warning: Cannot modify header information - headers already sent by (output started at /data/users/t/toutetrien/menu.php:6) in /data/users/t/toutetrien/menu.php on line 94 la ligne 94 et environs <?php?><br/><br/><br/><br/><br/><br/><br/><img src="http://toutetrien.redby.info/image/mascote.jpeg" border="0" width="150" height="150" alt="" ><?phpmysql_connect("sql.redby.info","toutetrien3","874419666");mysql_select_db("toutetrien3");if ($_SESSION['logged'] === false){ if (isset($_COOKIE['pseudo'], $_COOKIE['pass'])) { //Vérification du pseudo. $pseudo = htmlspecialchars($_COOKIE['pseudo']); $pass = htmlspecialchars($_COOKIE['pass']); //Requête comptant le nombre de pseudos $_POST['pseudo'] $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'"); //Si le pseudo existe. if (mysql_result($sql,0,'nb_pseudo') == 1) { //Vérification du mot de passe //Information sur le compte du membre. $sql_infos = mysql_query("SELECT id, pass, confirmation FROM membres WHERE pseudo='".$pseudo."'") or die (mysql_error()); $donnees = mysql_fetch_array($sql_infos); //Comparaison du mot de passe et vérification que le compte est confirmé. if ($pass == $donnees['pass'] && $donnees['confirmation'] == 1) { //Tout est bon, on connecte le membre. $_SESSION['logged'] = true; //Création de 2 variables de sessio, contenant des informations sur le membre. $_SESSION['id'] = $donnees['id']; //Id du membre. $_SESSION['pseudo'] = $pseudo; //Pseudo du membre. //Redirection vers la page membre. header("location: toutetrien.redby.info/espace_membre/index.php"); } } }}//Si la variable $_POST['connexion'] (bouton submit du formulaire) et la variable $_SESSION['logged'] vaut false (déconnecté) existent.if (isset($_POST['connexion']) && $_SESSION['logged'] === false){ //Vérification des autres variables. if (!empty($_POST['pseudo']) && !empty($_POST['pass'])) { //Vérification du pseudo. $pseudo = htmlspecialchars($_POST['pseudo']); $pass = htmlspecialchars($_POST['pass']); //Requête comptant le nombre de pseudos $_POST['pseudo'] $sql = mysql_query("SELECT COUNT(*) AS nb_pseudo FROM membres WHERE pseudo='".$pseudo."'")or die (mysql_error()); //Si le pseudo existe. if (mysql_result($sql,0,'nb_pseudo') == 1) { //Vérification du mot de passe //Information sur le compte du membre. $sql_infos = mysql_query("SELECT id, pass, confirmation FROM membres WHERE pseudo='".$pseudo."'")or die (mysql_error()); $donnees = mysql_fetch_array($sql_infos); //Hashage du mot de passe. $passhash = md5(sha1($_POST['pass'])); //Comparaison du mot de passe. if ($passhash == $donnees['pass']) { //On vérifie que le compte est confirmé. //Si $donnees['confirmation'] vaut 1. if ($donnees['confirmation'] == 1) { if (isset($_POST['souvenir']) && $_POST['souvenir'] == 'on') { mysql_query("UPDATE membres SET statut ='1' WHERE id=".$donnees_info['id']."") OR die(mysql_error()); //Temps d'expiration des cookies (1 an). $expire = time() + 3600 * 24 * 365; setcookie('pseudo', $pseudo, $expire); setcookie('pass', $passhash, $expire); } //Tout est bon, on connecte le membre. $_SESSION['logged'] = true; //Création de 2 variables de session, contenant des informations sur le membre. $_SESSION['id'] = $donnees['id']; //Id du membre. $_SESSION['pseudo'] = $pseudo; //Pseudo du membre. //Redirection vers la page membre. header("location: toutetrien.redby.info/espace_membre/index.php"); } else echo 'Erreur : le compte n\'est pas confirmé !'; } else echo 'Erreur : le mot de passe est incorrect !'; } else echo 'Erreur : le pseudo n\'existe pas !'; } else echo 'Erreur : veuillez remplir tous les champs !';}?><div id="menu"><div class="element">Le site Web<form method="post" action=""><label>Pseudo : <input type="text" name="pseudo" /></label><br/><label>Mot de passe : <input type="password" name="pass" /></label><br/><input type="submit" name="connexion" value="Se connecter" /><br/><input type="checkbox" name="souvenir" > se souvenir de moi</form> <li><a href="inscription.php" target="_top">inscription</a></li> <li><a href="index.html" target="_top">accueil</a></li> <li><a href="forum.php" target="_top">le forum</a></li> <li><a href="tchat.html" target="_top">le tchat</a></li> <li><a href="livreor.php" target="_top"> le livre d'or</a></li> <li><a href="reference.php" target="_top"> vous aimmez se site faite le partager ici</a></li> </ul> Les espaces merci de me répondre s'il vous manque des informations merci de me le dire par la messagerie personel ou en répondant aux forum
theonlydrayk Posté 19 Janvier 2007 Posté 19 Janvier 2007 (modifié) La commande php header(); doit etre la premiere a etre envoyer. Sit tu envoit du html le php envoit les header apres il envoit ton html. A ce moment la il est impossible d'envoyer les headers ils sont deja clos. Tu peut utiliser la commande headers_sent() pour savoir si les headers ont ete envoyer ou pas. http://www.php.net/manual/fr/function.headers-sent.php if (!headers_sent()){ header("location: toutetrien.redby.info/espace_membre/index.php"); exit;} else{ /* On ne peut plus rediriger la page les headers sont envoyer */ echo '<a href="toutetrien.redby.info/espace_membre/index.php">Cliquer Ici</a>'; exit;} Mais le mieux je crois serait d'envoyer ton code dans le haut de la page en premier. N'envoye aucun html ou espace, aucun caractere, fait le test de sessions et envoye tes headers, apres tu t'occupe du html. Modifié 19 Janvier 2007 par theonlydrayk
Dan Posté 19 Janvier 2007 Posté 19 Janvier 2007 Mais le mieux je crois serait d'envoyer ton code dans le haut de la pageen premier. N'envoye aucun html ou espace, aucun caractere, fait le test de sessions et envoye tes headers, apres tu t'occupe du html. Tu penses juste ! Il ne faut AUCUNE sortie vers le navigateur avant d'envoyer une entête ou un cookie, sinon on a ce type d'erreur. Un seul caractère, même un espace ou un retour chariot, provoque l'envoi d'entêtes automatiques. C'est ce qui donne ensuite le message d'erreur "headers already sent" Dan
schats Posté 19 Janvier 2007 Auteur Posté 19 Janvier 2007 mouai le seul problème c'est que mes header sont obliger d'être la .... car sinon .... ben sa l'enverra sur la page même s'il n'est pas membre les session marche car quand je vais sut http://toutetrien.redby.info/espace_membre/index.php ben ça me met les bonne donner et l'acess est accepter .... ( quand je suis connecter bien sur )
schats Posté 19 Janvier 2007 Auteur Posté 19 Janvier 2007 (modifié) ça marche mais comment faire pour le code html qu'il y avait avant ...... je le met juste après le php ou plutôt dans le css ??? désoler pour le double post Modifié 19 Janvier 2007 par schats
Mikiman Posté 19 Janvier 2007 Posté 19 Janvier 2007 Bonsoir, Juste un commentaire au passage, la fonction setcookie() nécessite aussi d'être placé avant la sortie du navigateur. Place ton code html après le php Cordialement, Mikiman
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant