Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите с счетчиком
 
 автор: alexbg   (29.11.2005 в 13:12)   письмо автору
 
 

Установил счетчик для фотогалереи с вашего сайта. На 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===|| $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===|| $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("В данный момент невозможно выбрать базу данных...");
               }

?>


помогите плиз

   
 
 автор: cheops   (29.11.2005 в 13:16)   письмо автору
 
   для: alexbg   (29.11.2005 в 13:12)
 

Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.

http://www.softtime.ru/group/id_group=12

   
 
 автор: vasso_m   (29.11.2005 в 15:07)   письмо автору
 
   для: cheops   (29.11.2005 в 13:16)
 

Очень распространненая ошибка

   
 
 автор: alexbg   (29.11.2005 в 16:34)   письмо автору
 
   для: vasso_m   (29.11.2005 в 15:07)
 

так скажите где исправить а то на локальной машине работает а в инете нет проверять трудно

   
 
 автор: cheops   (29.11.2005 в 22:37)   письмо автору
 
   для: alexbg   (29.11.2005 в 16:34)
 

Что находится в 45 строке файла config.php?

   
 
 автор: alexbg   (30.11.2005 в 11:20)   письмо автору
 
   для: cheops   (29.11.2005 в 22:37)
 

45 строки нет в конфиге.
Всё кончается 42 строкой

   
 
 автор: Loki   (30.11.2005 в 14:23)   письмо автору
 
   для: alexbg   (30.11.2005 в 11:20)
 

значит где-то не закрыта скобка или кавычка.

   
 
 автор: alexbg   (30.11.2005 в 14:45)   письмо автору
 
   для: Loki   (30.11.2005 в 14:23)
 

к конфигу обращается не только счётчик но и др приложения они все работают
на локалхосте тоже работает счетчик с этим кодом а вот на сайте не хочет

   
 
 автор: cheops   (30.11.2005 в 16:01)   письмо автору
 
   для: alexbg   (30.11.2005 в 11:20)
 

Тогда проследите, чтобы после 42 строки 100% ничего не было, ни пробелов, ни переводов строк.

   
 
 автор: alexbg   (30.11.2005 в 16:37)   письмо автору
 
   для: cheops   (30.11.2005 в 16:01)
 

Спасибо помогло ! Я даже удивлен! А почему не можете сказать?

   
 
 автор: cheops   (01.12.2005 в 00:57)   письмо автору
 
   для: alexbg   (30.11.2005 в 16:37)
 

Эти переводы строк тоже считаются телом документа, а как только сервер встречает начало документа - он уже никаких HTTP-заголовков не отправляет (по протоколу они всегда идут до тела документа) и функция header() не срабатывает, сообщаяя об этом "Cannot modify header information - headers already sent by".

   
 
 автор: alexbg   (01.12.2005 в 11:10)   письмо автору
 
   для: cheops   (01.12.2005 в 00:57)
 

Спасибо еще раз, буду внимательнее.

   
 
 автор: Void   (29.11.2005 в 23:06)   письмо автору
 
   для: 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')), но в этом случае потребуются модификации кода. Но работать это будет стабильно, не выдавая весь этот форматированный мусор..

   
 
 автор: alexbg   (30.11.2005 в 11:24)   письмо автору
 
   для: Void   (29.11.2005 в 23:06)
 

понимаете на локалхосте всё работает счетчик считает и все цифирки выводятся на картинку.
всё здорово как и задумывалось , а вот вна сайте происходит эта ошибка
можите посмотретьhttp://www.kingsite.ru/fotogal/index.php

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования