грешка - headers already sent by

val4o0o0

Registered
Cannot modify header information - headers already sent by (output started at /home/csgigaby/public_html/admin/ban/config.php:2)

Проблема идва от бан системата, но четох за този проблем, че се появявал при изпуснати разстояния в кода (над него, под него) и т.н., проверил съм всички файлове и няма такива, още по-странното, е че на локал хоста работи, а на superhosting дава тази грешка.
Някой има ли предложение как може да се оправи ?
 
при мен това се появява от стартирането на сесията, ако не сам я сложил най- отгоре ми пищи
 
ами тай като няма код, за да се появи тая грешка може да имаш html преди header(), или да си ползвал echo.
 
възможно ли е от тук да идва проблема ?

Код:
if($user->data['is_registered']){

include("$phpbb_root_path/includes/functions_display.php");

echo 'Логнат си като:  <b>' . $user->data['username'] .'</b><br />';

echo get_user_avatar($user->data['user_avatar'], $user->data['user_avatar_type'], $user->data['user_avatar_width'], $user->data['user_avatar_height']);

echo '<br />';

echo '<br />';

echo '<img src="images/icons/post.png" alt=""/> Брой мнения:  <b>' . $user->data['user_posts'] . '</b><br />';

echo '<img src="images/icons/pm.png" alt=""/> Нови лични съобщения:  <b>' . $user->data['user_new_privmsg'] . '</b><br />';

echo '<img src="images/icons/message_16.gif" alt=""/> Непрочетени:  <b>' . $user->data['user_unread_privmsg'] . '</b><br />';

echo '<img src="images/icons/ip.gif" alt=""/> Твоето IP:  <b>' . $user->data['session_ip'] . '<b><br />';

echo '<img src="images/icons/ban.png" alt=""/> Предупреждения:  <b>' . $user->data['user_warnings'] . '</b>';



$level = $user->data['group_id']; 

$level = str_replace("1", "Анонимен", "$level"); 

$level = str_replace("2", "Потребител", "$level"); 

$level = str_replace("4", "Модератор", "$level"); 

$level = str_replace("5", "Администратор", "$level"); 

echo "<br /><img src=\"images/icons/rank.gif\" alt=\"\"/> Ранг: <b>$level</b>";
 
Оправих формата за вход, но проблема явно си е от бан система, ето какво съдържа тя:
ban.php

Код:
<?php
define('IN_VALID', true);
include "config.php";
$ip = $_SERVER['REMOTE_ADDR'];
$db = mysql_query("SELECT * FROM bans WHERE ip = '$ip'") or die(mysql_error());
$num = mysql_num_rows($db);
if ($num > 0) {
while ($row = mysql_fetch_array($db)) {
$reason = $row['reason'];
echo "<div align=\"center\"><br /><br />Ти си баннат от сайта!<br /><u>Причина:</u> $reason</div><br />";
exit;
}
}
else {
}
?>

и config.php:

Код:
<?php if ( !defined('IN_VALID') ) { die('<center><b>Greshka: Nqmate direkten dostup do tozi fail</b></center>'); } ?> 
<?php
$user = "user";
$pass = "pass";
$db = "db";
$host = "localhost";
$connection = mysql_connect("$host", "$user", "$pass") or die("Грешка 1");
$db = mysql_select_db("$db",$connection)or die("Грешка 2");
mysql_query("SET NAMES utf8");
?>

ето и как я инлудвам (най-отгоре във всяка страница)

Код:
<?php 
define('IN_VALID', true);
include("admin/ban/ban.php"); ?>
<?php 
define('IN_PHPBB', true); 
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : 'forum/'; 
$phpEx = substr(strrchr(__FILE__, '.'), 1); 
include($phpbb_root_path . 'common.' . $phpEx); 
$user->session_begin(); 
$auth->acl($user->data); 
$user->setup(); 
?>
нарочно слагам и phpbb интеграцията за да видите как го правя и надолу вече започват страниците, DOCTYPE и т.н. грешката е:
Код:
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /home/csgigaby/public_html/admin/ban/config.php:2)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /home/csgigaby/public_html/admin/ban/config.php:2)
[phpBB Debug] PHP Notice: in file /includes/session.php on line 1007: Cannot modify header information - headers already sent by (output started at /home/csgigaby/public_html/admin/ban/config.php:2)

При махане на инклуда на бан системата, всичко работи без проблем, някой може ли да преработи някъде ако има грешка за да си работи всичко както трябва?
 
Промени си config.php на форума така (само го настрой):
Код:
<?php
// phpBB 3.0.x auto-generated configuration file
// Do not change anything in this file!
$dbms = 'mysqli';
$dbhost = 'localhost';
$dbport = '';
$dbname = 'name';
$dbuser = 'user';
$dbpasswd = 'pass';
$table_prefix = 'phpbb_';
$acm_type = 'file';
$load_extensions = '';

$connect = mysql_connect($dbhost, $dbuser, $dbpasswd);
$db = mysql_select_db($dbname,$connect) or die ("Could not select database");

@define('PHPBB_INSTALLED', true);
// @define('DEBUG', true);
// @define('DEBUG_EXTRA', true);
?>
 
config-a, на форума ми е абсолютно същия всичко работи, но проблема идва от бан системата, като махна инклуда за бан системата гршеката със header-a, изчезв, явно идва някъде от нея on line 2, но незнам не виждам проблем.
 
Малко ме съмнява да е абсолютно същия със:

$connect = mysql_connect($dbhost, $dbuser, $dbpasswd);
$db = mysql_select_db($dbname,$connect) or die ("Could not select database");


Така, че погледни го пак ;)
 
Проблема идва от там, че преди header функция без да бъде пуснат output buffering текст не може да се изпрати към браузъра.
Странното е, че ако в ban.php се извади текст се извиква и exit, което прекратява понататъчното изпълнение на спринта :lol:
Или добавяй ban.php след реда $user->session_begin(); или най-отгоре сложи ob_start(); (надявам се, че phpBB темплейт системата не използва output buffering или е направена добре, иначе ще се бъгне цялата система )
 

Back
Горе