headers already sent by...sessions.php

Forum consacré à phpBB2. Comment tirer le meilleur de ce puissant forum.

Modérateur: Modérateurs

headers already sent by...sessions.php

Messagede nexius2 » Mar Déc 19, 2006 10:25 am

Bonjour à tous...

je fais appel a vous car j'ai un petit souci que je n'arrive pas a resoudre.
sur la page web du site, j'essai d'afficher les derniers post du forum ( situé dans /forum/). jusqu'a la, je pense mettre pas trop mal debrouillé grace a ce forum.
cependant, j'ai parfois cette erreur:

Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp17\www\planete-pocket\index.php:10) in c:\easyphp17\www\planete-pocket\forum\includes\sessions.php on line 256

Warning: Cannot modify header information - headers already sent by (output started at c:\easyphp17\www\planete-pocket\index.php:10) in c:\easyphp17\www\planete-pocket\forum\includes\sessions.php on line 257


si je dit parfois, c'est tout simplement parsque cette erreur apparait tant que je ne suis pas allé sur le forum....une fois le forum visité, cette erreur disparait....porqué???

voici mon code:
Code: Tout sélectionner
<p><span class="subHeader">Les dérniers posts du forum</span><br />

<?php
// Last XX Active Topics outside phpBB - dcz - www.phpBB-SEO.com
// License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
//
// Basic Configuration
// How Many Topics you want to display?
$topicnumber = 10;
// Scrolling towards up or down?
$scroll = "up";
// Change this to your phpBB URL
$urlPath = "http://127.0.0.1/planete-pocket/forum";
// Change this to your phpBB path
$phpbb_root_path = 'forum/';
// Exclude forums, forum id in this array will not be listed
$exclude_forum = array (
//1 => 31,
//2 => 5,
//3 => 10,
);

define('IN_PHPBB', true);

include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

// Start session management
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
// End session management



// Let's do it now 
$sql = "SELECT t.topic_poster,t.topic_views,t.topic_replies,t.topic_id, t.topic_title, t.topic_last_post_id, t.forum_id, p.post_id, p.poster_id, p.post_time, u.user_id, u.username
FROM ".TOPICS_TABLE." t, " . POSTS_TABLE . " p, " . USERS_TABLE . " u
WHERE t.topic_id = p.topic_id
AND t.topic_status <> 2
AND p.post_id = t.topic_last_post_id
AND p.poster_id = u.user_id
ORDER BY p.post_id DESC LIMIT $topicnumber";
//Begin sql cache
if ( !($result = $db->sql_query($sql)) )
//if ( !($result = $db->sql_query($sql, false, 'posts_')) )
//End sql cache
{
message_die(GENERAL_ERROR, 'Could not obtain Last topics info', '', __LINE__, __FILE__, $sql);
}
$last_topic_data = array();
while( $row = $db->sql_fetchrow($result) )
{
$last_topic_data[] = $row;
}
$db->sql_freeresult($result);
unset($row);

// Handle the not topics case, if you want 
if ( !($total_topics = count($last_topic_data)) )
{
$message = 'Something you want to say here ';
message_die(GENERAL_MESSAGE, $message);
}

//
// Find which forums are visible for this user
//
$is_auth_ary = array();
$is_auth_ary = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata, $last_topic_data);

// here I keep the basic html output
// Outcome of the HTML
// Be carefull when you edit these!
// echo "<marquee dir=\"rtl\" align=\"center\" id=\"recent_topics\" behavior=\"scroll\" direction=\"$scroll\" height=\"150\" width=\"100%\" scrolldelay=\"100\" scrollamount=\"2\" onMouseOver=\"stop()\" onMouseOut=\"start()\">";
echo "<div align=\"left\">";
echo "<table cellpadding='3' cellSpacing='2'";

for ($i = 0; $i < $total_topics; $i++ )
{
if (($userdata['user_level'] == ADMIN) || $is_auth_ary[$last_topic_data[$i]['forum_id']]['auth_view'] && !in_array($last_topic_data[$i]['forum_id'], $exclude_forum)) 
{
// phpBB-SEO.com SEO TOOLKIT BEGIN
$seo_forum_name = $last_topic_data[$i]['forum_name'];
$seo_topic_name = $last_topic_data[$i]['topic_title'];
// phpBB-SEO.com SEO TOOLKIT END

echo "<tr valign='top'>
<td><span class=\"nav\">".$lang['Last_Post']." :
<a href=\"".append_sid("$urlPath/viewtopic.php?t=".$last_topic_data[$i]['topic_id'])."\" class=\"nav\">" . $last_topic_data[$i]['topic_title'] ."</span></a></td>

<td><span class=\"nav\"> ".$lang['Views']." : " . $row['topic_views'] . "</span></td>
<td><span class=\"nav\"> ".$lang['Replies']." : " . $last_topic_data[$i]['topic_replies'] . "</span></a></td>
<td><span class=\"nav\"> ".$lang['Poster']." :
<a href=\"".append_sid("$urlPath/profile.php?mode=viewprofile&u=".$last_topic_data[$i]['user_id'])."\" class=\"nav\" >" . $last_topic_data[$i]['username'] . "</a></td></tr>";

}
}
echo "</table></div></marquee>";

?>

</p>


Merci pour votre aide

edit: je cherche aussi a ne pas afficher les messages des admin qui ce trouve dans les zone privé.
j'ai bien:
Code: Tout sélectionner
if (($userdata['user_level'] == ADMIN) || $is_auth_ary[$last_topic_data[$i]['forum_id']]['auth_view'] && !in_array($last_topic_data[$i]['forum_id'], $exclude_forum))


mais ca ne fonctionne pas...
nexius2
 
Messages: 12
Inscription: Mar Déc 19, 2006 10:14 am

Publicité

Messagede dcz » Mar Déc 19, 2006 10:31 am

Et bienvenue :D

Cela doit être dû au code utilisé dans l'index.php extérieur. Le code doit provoquer un erreur alors que les header sont déjà lancer.

Comme cela n'a l'air de n'être que le cas quand tu n'est pas connecté, il se pourrait que ton index.php extérieur utilise déjà les sessions de phpBB, auquel cas tu pourrais essayer de retirer :

Code: Tout sélectionner
define('IN_PHPBB', true);

include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

// Start session management
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
// End session management


Du code ci dessus.

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21383
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede nexius2 » Mar Déc 19, 2006 10:38 am

dcz a écrit:Et bienvenue :D


Merci :D

dcz a écrit:Cela doit être dû au code utilisé dans l'index.php extérieur. Le code doit provoquer un erreur alors que les header sont déjà lancer.

pourtant l'index (ou tout autre page) ne fait pas du tout reference a phpbb. mon code ce trouve seul dans une page appelé par un include... seul cette page appel le forum...

dcz a écrit:Comme cela n'a l'air de n'être que le cas quand tu n'est pas connecté, il se pourrait que ton index.php extérieur utilise déjà les sessions de phpBB, auquel cas tu pourrais essayer de retirer : ......


j'ai tester, la ca ne marche plus du tout !
nexius2
 
Messages: 12
Inscription: Mar Déc 19, 2006 10:14 am

Messagede dcz » Mar Déc 19, 2006 10:45 am

Donc, oui, si tu partages pas les sessions, alors marchera pas sans.

Donc, je pense qu'il y a une incompatibilité entre les deux scripts, phpBB et ton index.php extérieur.

Genre une constante ou une fonction portant le même nom. Sauf erreur de code de ta part dans sessions.php bien entendu (ça vaut le coup de vérifier).

Du coup, tu pourrais peut être inclure ce script dans un autre page plus "indépendante".

++
Useful links :
SEO Forum || SEO Directory || SEO phpBB || Search
____________________

Liens Utiles :
Forum référencement || Annuaire référencement || Référencement phpBB || Recherche
dcz
Admin
Admin
 
Messages: 21383
Inscription: Ven Avr 28, 2006 9:03 pm

Messagede nexius2 » Mar Déc 19, 2006 10:56 am

dcz a écrit:Donc, oui, si tu partages pas les sessions, alors marchera pas sans.

Donc, je pense qu'il y a une incompatibilité entre les deux scripts, phpBB et ton index.php extérieur.

Genre une constante ou une fonction portant le même nom. Sauf erreur de code de ta part dans sessions.php bien entendu (ça vaut le coup de vérifier).

Du coup, tu pourrais peut être inclure ce script dans un autre page plus "indépendante".

++


bon, ca doit etre une histoire de partage de sessions alors...
je vient de faire un essai de ce code seul dans une page, j'ai chargé cette page et j'ai la meme erreur...

pour le coup de l'erreur dans sessions.php, je ne pense pas, j'y ai pas touché :D

je vais jeter un oeil plus attentif sur ce que ce dit sur le partage de session...
nexius2
 
Messages: 12
Inscription: Mar Déc 19, 2006 10:14 am

Messagede nexius2 » Mar Déc 19, 2006 11:35 am

bon, je comprend pas trop, j'ai une page contenant uniquement le code...

tu as dit dans un autre post qu'il fallait utilisé

Code: Tout sélectionner
define('IN_PHPBB', true);
$phpbb_root_path = './';
include($phpbb_root_path . 'extension.inc');
include($phpbb_root_path . 'common.'.$phpEx);

//
// Start session management
//
$userdata = session_pagestart($user_ip, PAGE_INDEX);
init_userprefs($userdata);
//
// End session management
//

ce que je fait....et pourtant j'ai le meme message....ne faut il pas fermer l'acces a la base a la fin du script?

je suis pas trop sur de comprendre les partage de sessions....
je cherche, mais je trouve pas, n'i y t'il pas un tuto a ce sujet quelque part?
Merci
nexius2
 
Messages: 12
Inscription: Mar Déc 19, 2006 10:14 am

Messagede nexius2 » Mar Déc 19, 2006 2:38 pm

c'est bon, j'ai trouvé....j'ai opté pour une approche differente....merci pour tout ! ! !


voici le code pour ceux que ca interesse
Code: Tout sélectionner
<?php
$connection=mysql_connect("localhost","login","password");
mysql_select_db("nom_bdd");
$sql = "SELECT t.topic_id, t.topic_title, t.topic_replies, t.topic_last_post_id, f.forum_id, f.forum_name, p.post_time, u.user_id, u.username
       FROM phpbb_topics AS t, phpbb_forums AS f, phpbb_posts AS p, phpbb_users AS u
       WHERE t.forum_id = f.forum_id
       AND f.auth_view < 3 AND f.auth_read < 3     
       AND t.topic_moved_id = 0
       AND p.post_id = t.topic_last_post_id
       AND u.user_id = p.poster_id
      AND f.forum_id != 8
       ORDER BY t.topic_last_post_id DESC
       LIMIT 10";
if( !($result = mysql_query($sql)) )
{
   echo 'Impossible d\'obtenir les derniers posts du forum.';
}

while( $ary = mysql_fetch_array($result) )
{
   $xpostrow[] = $ary;
}

echo '<table border="0" width="100%">';
for( $i = 0; $i < count($xpostrow); $i++ )
{   
   $topic_title = htmlspecialchars(stripslashes($xpostrow[$i]['topic_title']));
   if( strlen($topic_title) > 30 )
   {
      $k = substr($topic_title, 0, 30);
      $pos = strrpos($k, " ");
      $k = substr($k, 0, $pos);
      $topic_title = $k . "...";
   }
   echo '<tr><td width="20%">' . date('d-m-Y', $xpostrow[$i]['post_time']) . '</td>';   
   echo '<td width="40%"><a class="navigation" href="forum/viewtopic.php?p=' . $xpostrow[$i]['topic_last_post_id'] . '#' . $xpostrow[$i]['topic_last_post_id'] . '">' . $topic_title . '</a></td>';
   echo '<td width="3%">Par</td>';
   echo '<td width="37%"><a class="navigation2" href="forum/profile.php?mode=viewprofile&amp;u=' . $xpostrow[$i]['user_id'] . '">' . $xpostrow[$i]['username'] . '</a></td></tr>';
}
echo '</table>';
?>
nexius2
 
Messages: 12
Inscription: Mar Déc 19, 2006 10:14 am


Retourner vers Le Forum phpBB2

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités


 
cron