|
Mirdin
149 messages
Carte Graphique 3D
|
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
459 messages
Processeur
En ligne
|
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
149 messages
Carte Graphique 3D
|
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
149 messages
Carte Graphique 3D
|
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
13730 messages
No-Life
Administrateur
|
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:
|
|
Mirdin
149 messages
Carte Graphique 3D
|
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 ^^
|