|
|
|
| Установил счетчик для фотогалереи с вашего сайта. На localhost работает и всё показывает а в инете дает ошибку. Привожу коды может кто подскажет сам не разобрался.
код ошибки
Warning: Cannot modify header information - headers already sent by (output started at /home/********/public_html/fotogal/config.php:45) in /home/*******/public_html/fotogal/counter/count.php on line 86
|
код счетчика
<?php
include "../config.php";
$method=$_GET['method'];
$id_page=$_GET['id_page'];
if($method==1)
{
$query='';
$robots=0;
$start=0;
$end=31;
$query="where robots=".$robots." ";
if($start!=0)$query=$query."and date<NOW() - INTERVAL ".$start." DAY ";
$query=$query."and date>NOW() - INTERVAL ".$end." DAY ";
if($id_page!=0)$query=$query."and id_page_w_g=".$id_page;
$host="SELECT COUNT(DISTINCT ip) FROM wc_count ";
$hit="SELECT COUNT(*) FROM wc_count ";
$host=@mysql_result(mysql_query($host.$query),'0');
$hits=@mysql_result(mysql_query($hit.$query),'0');
$start=0;
$end=1;
if($robots===0 || $robots===1)$query="where robots=".$robots." ";
if($start!=0)$query=$query."and date<NOW() - INTERVAL ".$start." DAY ";
$query=$query."and date>NOW() - INTERVAL ".$end." DAY ";
if($id_page!=0)$query=$query."and id_page_w_g=".$id_page;
$day="SELECT COUNT(*) FROM wc_count ";
$day=@mysql_result(mysql_query($day.$query),'0');
}
else
{
$query='';
$robots=0;
$start=0;
$end=31;
$query="where robots=".$robots." ";
if($start!=0)$query=$query."and date<NOW() - INTERVAL ".$start." DAY ";
$query=$query."and date>NOW() - INTERVAL ".$end." DAY ";
if($id_page!=0)$query=$query."and id_page=".$id_page;
$host="SELECT COUNT(DISTINCT ip) FROM wc_count ";
$hit="SELECT COUNT(*) FROM wc_count ";
$host=@mysql_result(mysql_query($host.$query),'0');
$hits=@mysql_result(mysql_query($hit.$query),'0');
$start=0;
$end=1;
if($robots===0 || $robots===1)$query="where robots=".$robots." ";
if($start!=0)$query=$query."and date<NOW() - INTERVAL ".$start." DAY ";
$query=$query."and date>NOW() - INTERVAL ".$end." DAY ";
if($id_page!=0)$query=$query."and id_page=".$id_page;
$day="SELECT COUNT(*) FROM wc_count ";
$day=@mysql_result(mysql_query($day.$query),'0');
}
//Накладывание текста на изображение и вывод его в броузер
$imagefile='counter1.jpg';
$font=@$folder.'font.ttf';
$img_width='88';//px
$pos_day=$img_width-strlen($day)*6;
$pos_hits=$img_width-strlen($hits)*6;
$pos_all=$img_width-strlen($host)*6;
$img = imagecreatefromjpeg($imagefile);
$color_day = imagecolorallocatealpha($img,0,100,40,0);
$color_hits = imagecolorallocatealpha($img,0,100,40,0);
$color_all = imagecolorallocatealpha($img,0,100,40,0);
$box = imagettftext($img,'10',0,1,10,$color_day,$font, 'T O D A Y');
$box = imagettftext($img,'10',0,1,20,$color_hits,$font, 'H I T S');
$box = imagettftext($img,'10',0,1,30,$color_all,$font, 'H O S T S');
$box = imagettftext($img,'10',0,$pos_day,10,$color_day,$font, $day);
$box = imagettftext($img,'10',0,$pos_hits,20,$color_hits,$font, $hits);
$box = imagettftext($img,'10',0,$pos_all,30,$color_all,$font, $host);
header('Content-type: image/jpg');
imagejpeg($img);
imagedestroy($img);
?>
|
код конфига
<?php
$dblocation = "localhost";//Адрес хоста
$dbname="******";//Имя БД
$dbuser="******";//Имя пользователя БД
$dbpasswd="******";//пароль БД
//////////////////
//Настройки загрузки изображений
///////////////
$max_file_size="400"; //kb
$y = 100;//Высота маленьких изображений в "px"
$copyright=1;//Проставлять копирайт (сайт с откуда скачано)
$registration=1;
//////////////////////////////////////
//Внимание!
////////////////////////////////////
$phuser="*******";//Имя администратора (Логин) для входа на административную страничку
$phpass="***********";//Пароль администратора для входа на административную страничку
$separator="db_";//Разделитель, который вставляется перед названием таблицы
$c_w=4;//Колличество изображений по ширине
$c_h=2;//Колличество изображений по высоте
$email="**********";//E-Mail адрес адмнистратора
//Подключаемся к БД и выбираем нужную БД
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if(!$dbcnx){
show_error("В данный момент соединение с базой данных невозможно...");
exit();
}
$sel_db = @mysql_select_db($dbname, $dbcnx);
if(!$sel_db){
show_error("В данный момент невозможно выбрать базу данных...");
}
?>
|
помогите плиз | |
|
|
|
|
|
|
|
для: alexbg
(29.11.2005 в 13:12)
| | Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.
http://www.softtime.ru/group/id_group=12 | |
|
|
|
|
|
|
|
для: cheops
(29.11.2005 в 13:16)
| | Очень распространненая ошибка | |
|
|
|
|
|
|
|
для: vasso_m
(29.11.2005 в 15:07)
| | так скажите где исправить а то на локальной машине работает а в инете нет проверять трудно | |
|
|
|
|
|
|
|
для: alexbg
(29.11.2005 в 16:34)
| | Что находится в 45 строке файла config.php? | |
|
|
|
|
|
|
|
для: cheops
(29.11.2005 в 22:37)
| | 45 строки нет в конфиге.
Всё кончается 42 строкой | |
|
|
|
|
|
|
|
для: alexbg
(30.11.2005 в 11:20)
| | значит где-то не закрыта скобка или кавычка. | |
|
|
|
|
|
|
|
для: Loki
(30.11.2005 в 14:23)
| | к конфигу обращается не только счётчик но и др приложения они все работают
на локалхосте тоже работает счетчик с этим кодом а вот на сайте не хочет | |
|
|
|
|
|
|
|
для: alexbg
(30.11.2005 в 11:20)
| | Тогда проследите, чтобы после 42 строки 100% ничего не было, ни пробелов, ни переводов строк. | |
|
|
|
|
|
|
|
для: cheops
(30.11.2005 в 16:01)
| | Спасибо помогло ! Я даже удивлен! А почему не можете сказать? | |
|
|
|
|
|
|
|
для: alexbg
(30.11.2005 в 16:37)
| | Эти переводы строк тоже считаются телом документа, а как только сервер встречает начало документа - он уже никаких HTTP-заголовков не отправляет (по протоколу они всегда идут до тела документа) и функция header() не срабатывает, сообщаяя об этом "Cannot modify header information - headers already sent by". | |
|
|
|
|
|
|
|
для: cheops
(01.12.2005 в 00:57)
| | Спасибо еще раз, буду внимательнее. | |
|
|
|
|
|
|
|
для: cheops
(29.11.2005 в 13:16)
| | По всей видимости до этого злополучного кода config.php все-таки есть какие-то символы. Эту ошибку может вызвать даже пробел или CR/LF в конце файла - отправка данных-то идет, а include() работает таким образом, что:
-- 1.php
// проверка
echo('12345');
|
при использовании include('1.php') выведет исходный код файла вместо ожидаемого 12345, но если использовать что-то вроде
-- 1.php
<? // проверка
echo('12345'); ?>
|
все будет работать. Но это все комбинируется!
Поправьте меня если я ошибаюсь, но в САМОМ НАЧАЛЕ документа надо вставить что-то вроде
<? ob_start(); ?>
а в конце
<? ob_end_flush(); ?>
Либо использовать вместо include() функции eval(file_get_contents('config.php')), но в этом случае потребуются модификации кода. Но работать это будет стабильно, не выдавая весь этот форматированный мусор.. | |
|
|
|
|
|
|
|
для: Void
(29.11.2005 в 23:06)
| | понимаете на локалхосте всё работает счетчик считает и все цифирки выводятся на картинку.
всё здорово как и задумывалось , а вот вна сайте происходит эта ошибка
можите посмотретьhttp://www.kingsite.ru/fotogal/index.php | |
|
|
|