headers already sent

Forum informatique > Support & Utilisation > headers already sent

<<<1>>>

[Page 1 sur 1 - 6 messages]
Informations Messages

Mirdin

Avatar de Mirdin
149 messages
Carte Graphique 3D
Carte Graphique 3D

Lien direct Le 21 Juillet 2009 à 21h37

Bonjour a vous, j'espère ne pas m'être tromper de section,

Voici mon problème:
je travail actuellement sur un petit site se basant en grande partie sur le forum phpbb 3 et sa base de donnée.
Après avoir réaliser le site en local ( où tout fonctionnait parfaitement), je viens de le mettre en ligne et la, un bug apparait!

il n'apparait en faite que lorsque je m'identifie/me déconnecte sur le site et se signale par se magnifique message que voici:

Citation


[phpBB Debug] PHP Notice: in file /includes/session.php on line 990: Cannot modify header information - headers already sent by (output started at /homez.231/datascho/www/index.php:26)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 990: Cannot modify header information - headers already sent by (output started at /homez.231/datascho/www/index.php:26)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 990: Cannot modify header information - headers already sent by (output started at /homez.231/datascho/www/index.php:26)



si je me connecte sur le forum et viens sur le site, pas de probleme :s

si vous voulez voir, vous pouvez vous identifier sur DataSchool.be
login: test
pass: test123

voici mon code:

Code


<?php
define('IN_PHPBB', true);
$phpbb_root_path = './forum/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
require($phpbb_root_path . 'includes/functions_user.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
$user->session_begin();
$auth->acl($user->data);
$user->setup();
$forum_id = request_var('forum_id', '0');
$where = ($forum_id) ? " WHERE forum_id=$forum_id" : '';
$sql = 'SELECT forum_id,topic_id, topic_time, topic_title, topic_views, topic_replies, topic_poster, topic_first_poster_name, topic_first_poster_colour, topic_last_post_id, topic_last_poster_id, topic_last_poster_name, topic_last_poster_colour, topic_last_post_time
FROM ' . TOPICS_TABLE .
$where .
' ORDER BY topic_time DESC ' .
' LIMIT 0 , 10 ';
$result = $db->sql_query($sql);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans nom</title>
<link href="design.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="center">

<div id="header">
</div>

<div id="log">
<?php
include("menu.php");
?>
</div>

<div id="corps">
<div id="menu">
<img src="menuh.png" />

<?php
if (isset($_GET['logout']))
{
$user->session_kill();
$user->session_begin();
}
if (isset($_POST['login']))
{
$username = request_var('username', '', true);
$password = request_var('password', '', true);
$autologin = (!empty($_POST['autologin'])) ? true : false;
$viewonline = (!empty($_POST['viewonline'])) ? 0 : 1;
$admin = 0;
$result = $auth->login($username, $password, $autologin, $viewonline, $admin);
if ($result['status'] != LOGIN_SUCCESS)
{
$err = $user->lang[$result['error_msg']];
if ($result['error_msg'] == 'LOGIN_ERROR_USERNAME' || $result['error_msg'] == 'LOGIN_ERROR_PASSWORD')
{
$err = (!$config['board_contact']) ? sprintf($user->lang[$result['error_msg']], '', '') : sprintf($user->lang[$result['error_msg']], '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>');
}
}
else
{
$auth->acl($user->data);
}
}
if ($user->data['user_id'] != ANONYMOUS)
{
$avatar = $user->data['user_avatar'];
$posts = $user->data['user_posts'];
echo '<span class="Pseudo"><a href="forum/ucp.php">' . $user->data['username'] . '</a></span>';
if($posts>1){ $s='s';}
echo '' . $posts . ' Message' . $s . '';
if($upload > 1){ $s='\'s';}
if($upload == 0 ){ $upload = 0; }
echo '' . $upload . ' Upload' . $s . '';
echo '<a href="' . append_sid('index.php?logout=true') . '">Déconnexion</a>';
}
else
{
if($err)
{
echo "<font color=red><b>$err</b></font>";
}
?>
<form method="post">
<table width="160" >
<tr>
<td align="right">Pseudo:</td>
<td><input name="username" type="text" class="formu" tabindex="1" size="9" /></td>
</tr>
<tr>
<td align="right">Mot de passe:</td>
<td><input name="password" type="password" class="formu" tabindex="2" size="9" /></td>
</tr>
<tr>

</tr>
<tr>
<td colspan="2" align="center"><input type="submit" name="login" tabindex="5" value="Connexion" /></td>
</tr>
</table>
<a href="inscriptio.php">Inscription</a> - <a href="<?php echo append_sid("{$phpbb_root_path}ucp.$phpEx?mode=sendpassword"); ?>">Un oubli?</a>
</form>
<?php
$autologin = 'on';
}
?>

<img src="menuinter.png" />
<a href="site.php">Site</a>
<a href="site.php">Contact</a>
<a href="site.php">Annonceur</a>
<img src="menub.png" />
</div>

<div id="contenu">
</div>
</div>

<div id="footer">
</div>

</div>
</body>
</html>



J'espère que vous pourrez m'aider

Amicalement Mirdin

 

TheFanatics

Avatar de TheFanatics
459 messages
Processeur
Processeur
En ligne

Lien direct Le 22 Juillet 2009 à 01h59

Normal que cela te mette ça.

Tu utilise les sessions de phpBB sur une page externe au forum, ok. Mais il te renvoit cette erreur, car cela fonctionne comme ceci :

Le script regarde si tu es identifié, si tu l'est, il affiche ton login, déconnexion, etc. Si tu ne l'est pas, il affiche le formulaire d'identification.

Une fois les cases remplies, tu appuies sur le bouton "Connexion", et renvois la même page. La est le problème.

En faite "Cannot modify header - headers already sent by (output started at /homez.231/datascho/www/index.php:26)" signifie que ton header a déjà été envoyé. En faite, il a été envoyé une premiere fois lors de l'affichage de la page, puis il se réaffiche une fois appuyé sur le bouton.

Pour un meilleur support phpBB, rien de mieux que phpBB-fr, voici le post spécifique à l'utilisation des sessions :

http://forums.phpbb-fr.com/coding-webma ... y%20header

 

Mirdin

Avatar de Mirdin
149 messages
Carte Graphique 3D
Carte Graphique 3D

Lien direct Le 22 Juillet 2009 à 11h51

et dire que cela marchait en local :s

Je vais suivre ton conseil et aller demander de l'aide sur le forum.

Merci quand même!

Mirdin

 

Mirdin

Avatar de Mirdin
149 messages
Carte Graphique 3D
Carte Graphique 3D

Lien direct Le 22 Juillet 2009 à 14h20

Problème réglé, il suffisait de mettre

Code


if (isset($_GET['logout']))
{
$user->session_kill();
$user->session_begin();
}
if (isset($_POST['login']))
{
$username = request_var('username', '', true);
$password = request_var('password', '', true);
$autologin = (!empty($_POST['autologin'])) ? true : false;
$viewonline = (!empty($_POST['viewonline'])) ? 0 : 1;
$admin = 0;
$result = $auth->login($username, $password, $autologin, $viewonline, $admin);
if ($result['status'] != LOGIN_SUCCESS)
{
$err = $user->lang[$result['error_msg']];
if ($result['error_msg'] == 'LOGIN_ERROR_USERNAME' || $result['error_msg'] == 'LOGIN_ERROR_PASSWORD')
{
$err = (!$config['board_contact']) ? sprintf($user->lang[$result['error_msg']], '', '') : sprintf($user->lang[$result['error_msg']], '<a href="mailto:' . htmlspecialchars($config['board_contact']) . '">', '</a>');
}
}
else
{
$auth->acl($user->data);
}
}



dans la 1ere balise php en haut de page

 

Pouzy

Avatar de Pouzy
13730 messages
No-Life
No-Life
Administrateur
Administrateur

Lien direct Le 22 Juillet 2009 à 14h27

Voilà, j'ai pas eu le temps de le dire, mais c'est ça en effet.

Pour te conseiller pour la suite, il ne faut jamais déclarer un cookie, une authentification ou autre après avoir affiché du HTML. Tous ces trucs là se font toujours tout en haut de la page car, comme le message d'erreur t'a affiché, les headers sont modifiés mais ont déjà été déclarés par le HTML statique :spamoi:

N'oubliez pas de cliquer sur [Résolu] une fois votre problème réglé, et de choisir les meilleures réponses !
 

Mirdin

Avatar de Mirdin
149 messages
Carte Graphique 3D
Carte Graphique 3D

Lien direct Le 23 Juillet 2009 à 01h57

Bah le truc en faite, c'est qu'en local avec easyphp, pas de problème! ca marchait nickel!
Et dés la mise en ligne, plantouillage ^^

 

<<<1>>>

[Page 1 sur 1 - 6 messages]

Forum informatique > Support & Utilisation > headers already sent