(PHP) Использование классов и headers already sent

yelena
Дата: 31.10.2006 13:41:39
Столкнулась со следующей проблемой.
Хочу вычитать из базы данных информацию о картинке и показать ее в браузере
Пока не пользовалась классами, проблемы не возникало.
Сейчас же получаю следущие ошибки:

Warning: Cannot modify header information - headers already sent by (output started at *********\htdocs\classes\mysql.class.php:30) in *********\htdocs\show_image.php on line 14

Warning: Cannot modify header information - headers already sent by (output started at *********\htdocs\classes\mysql.class.php:30) in *********\htdocs\show_image.php on line 15

В описании класса никакие заголовки не передаются.

<?
class mysql 
{
var $dbHost;
var $dbUser;
var $dbPasswd;
var $dbName;

var $lnk;

function mysql()
{
	$this->dbHost = "*****";
	$this->dbUser = "*****";
	$this->dbPasswd = "*****";
	$this->dbName = "*****";
} 

function db_connect() 
{
	$this->lnk = mysql_connect($this->dbHost, $this->dbUser, $this->dbPasswd) or die('Не могу соединиться с сервером: '.mysql_error());
	mysql_select_db($this->dbName, $this->lnk) or die ('Не могу соединиться с базой данных: '. mysql_error());
}

function db_disconnect() 
{
	mysql_close($this->lnk);
} 
} 
?> 

Вот так выглядит скрипт вывода картинки show_image.php :

<?
require_once($_SERVER["DOCUMENT_ROOT"].'/classes/image.class.php');
require_once($_SERVER["DOCUMENT_ROOT"].'/classes/mysql.class.php');
  
$id = $_GET['id'];
    
$imageObj = new image();
$mysqlObj = new mysql();

$mysqlObj->db_connect();
$image = $imageObj->getImg($id, $mysqlObj->lnk);
$mysqlObj->db_connect();
    
header("Content-type: ".$image['type']);
header("Content-Disposition: attachment; filename=\"".$image['name']."\";");

if (isset($_GET['resize']))
{
  $imageObj->resizeImg($_SERVER["DOCUMENT_ROOT"]."/images/ann/".$image['ann_id']."/".$image['name']);
}
else
{
  echo readfile($_SERVER["DOCUMENT_ROOT"].'/images/ann/'.$image['ann_id'].'/'.$image['name']);
}
?>

Кто-нибудь сталкивался с такой проблемой?
Подскажите, что делать с классом, чтобы не было ошибок.
sxq
Дата: 31.10.2006 13:50:54
до и после <? И ?> проверьте лищние пробелы, переданный пробел - другой заголовок
yelena
Дата: 31.10.2006 13:53:36
Да, спасибо.
Вот только что сама ответ нашла:

This can be caused by starting a session and then calling a class function in a php file that has any whitespace either before the very first or after the very last php tags <?php and ?>.
Make sure there is NO whitespace before the initial tag and after the closing tag.

Вот засада. :))