|
автор: denvor (08.12.2004 в 00:20) |
|
| Установил сабж, настроил. Но при щелчке на странице статистика показывает только увеличение счетчика страницы index.phtml и тестовой index.php, а остальных страниц - нет (при щелчке по ним увеличивается счетчик index.phtml).
В чем может быть проблема (остальные страницы - .shtml - что-то в апачевском файле настроить, да?) | |
|
|
|
|
|
|
|
для: denvor
(08.12.2004 в 00:20)
| | PowerCounter срабатывает только в том случае, если страница интерепретируется как php-стринца. Прописать расширение shtml в качестве PHP-скрипта можно в конфигурационных файлах httpd.conf или .htaccess как это описано по ссылке.
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=1010 | |
|
|
|
|
автор: denvor (08.12.2004 в 09:41) |
|
|
для: cheops
(08.12.2004 в 00:25)
| | У меня файлы shtml. Получается настроить ЛИБО чтобы пхп срабатывал, либо SSI.
Копаем дальше:) | |
|
|
|
|
автор: Сервер (15.12.2004 в 20:52) |
|
|
для: denvor
(08.12.2004 в 09:41)
| | Вот и у меня та же ситуация!
Так обрадовался хорошему счетчику...
У меня весь сайт построен на ssi !
описанные выше варианты почему-то не работают.
RemoveHandler .html .htm .shtml
AddType application/x-httpd-php .php .htm .html .phtml
Как же все таки быть?? | |
|
|
|
|
|
|
|
для: denvor
(08.12.2004 в 09:41)
| | Хм, так просто здесь нельзя. PHP-код не выполняется в файлах SHTML.
SHTML и PHP можно объединить несколькими способами:
1 вариант:
На страницы с расширением shtml можно подключать php-файлы следующим образом:
<!--#include virtual="phpfile.php" -->
|
2 вариант:
И обратно - в php-файлы можно подключать результат выполнения файлов shtml. На php это делается так:
<?
virtual ("file.shtml");
?>
|
Вот что говорит мануал php по этому поводу:
------------------
Функция virtual() предназначена для работы в среде сервера Apache и является эквивалентом конструкции <!--#include virtual...-->, используемой в mod_include. Эта функция выполняет подзапрос Apache. Она бывает полезной в тех случаях, когда вам нужно включить в свой скрипт результат выполнения других CGI программ или скриптов или обработки сервером Apache .shtml файлов. Имейте в виду, что CGI скрипты должны создавать корректные CGI заголовки. Как минимум, CGI скрипт должен создавать заголовок Content-type. Если вы хотите включить в скрипт PHP файлы, используйте функцию include() или функцию require(); функция virtual() не должна использоваться для включения файлов, которые сами по себе являются PHP скриптами.
Перед тем, как осуществится выполнение подзапроса, все буферы сбрасываются и выдаются в броузер, также отсылаются заголовки, помещенные в буфер.
-------------------------
PS:
При подключении shtml в php-файлы теряются shtml-переменные.
И нельзя делать вложенные вызовы. Например: в php-файл подключаем shtml-файл, в котором, в свою очередь подключается php-файл.
PPS: если у Вас сайт на shtml и Вам нужен только счетчик, то для Вас более подойдет первый вариант: вставка php-файлов в shtml-файлы. Хотя... мы не тестировали такой вариант работы счетчика. Возможны накладки. | |
|
|
|
|
автор: Сервер (16.12.2004 в 11:51) |
|
|
для: glsv (Дизайнер)
(16.12.2004 в 01:58)
| | Спасибо за ответ!
Я подключил к моему shtml файлу "phpfile.php"
<!--#include virtual="phpfile.php" -->
в котором дал ссылку на "count.php"
<?php
// Подключаем счётчик
include "../zalen/count.php";
?>
В итоге счетчик считает "phpfile.php" как посещенную страницу а shtml остается не посчитанным,
тогда, я в shtml поставил ссылку на прямую к файлу подсчета count.php
И снова не то... счетчик считает, как посещенную "саму count.php" страницу.
ХМ...
Я однако не программист, я просто дизайнер. Может решение на поверхности а я его не вижу.... | |
|
|
|
|
|
|
|
для: Сервер
(16.12.2004 в 11:51)
| | Хм… тогда надо тестировать. Попробую смоделировать ситуацию у себя и завтра отпишусь. | |
|
|
|
|
автор: Сервер (17.12.2004 в 18:15) |
|
|
для: glsv (Дизайнер)
(16.12.2004 в 12:53)
| | Можно конечно каждому SHTML файлу прикрепить свой PHP c тем же названием.
Но это если сайт из 10 страниц, а если сайт большой?... | |
|
|
|
|
|
|
|
для: glsv (Дизайнер)
(16.12.2004 в 12:53)
| | "Завтра" не получилось - пишу "послезавтра" :)
У себя я настроил счетчик. Но на реальном хостинге нужно экспериментировать с серверными переменными. Пока попробуем на $_SERVER["REDIRECT_DOCUMENT_NAME"]
В файле count.php замените строку
на
$page="/".$_SERVER["REDIRECT_DOCUMENT_NAME"];
|
Подключение в shtml-файлы осуществляется так:
<!--#include virtual="../counter/count.php" -->
|
Т.е. относительный путь к файлу count.php | |
|
|
|
|
автор: Сервер (18.12.2004 в 09:56) |
|
|
для: glsv (Дизайнер)
(18.12.2004 в 00:46)
| | Спасибо за ответ!
Я использую "PowerCounter 2.1.2."
Такой строки в моем файле нет: $page=$PHP_SELF;
Высылаю полный код файла "count.php "
<?php
///////////////////////////////////////////////////
// Система учёта посещаемости сайта - PowerCounter
// 2003-2004 (C) IT-студия SoftTime (http://www.softtime.ru)
// Симдянов И.В. (simdyanov@softtime.ru)
// Кузнецов М.В. (kuznetsov@softtime.ru)
// Голышев С.В. (softtime@softtime.ru)
///////////////////////////////////////////////////
include "config.php";
// Формируем строчку с ip
if($obtip == 0) $ip = $_SERVER['REMOTE_ADDR']; // По умолчанию
if($obtip == 1) $ip = urldecode(getenv(HTTP_CLIENTIP)); // www.nodex.ru
// Если подсеть доступна, добавляем её через слеш
$forward = getenv(HTTP_X_FORWARDED_FOR);
if (!empty($forward) && ($forward != $_SERVER['REMOTE_ADDR'])) $ip = $ip."/".$forward;
// Это строчка с реферером - URL страницы, с которой посетитель пришёл на
// сайт
$reff = urldecode($_SERVER["HTTP_REFERER"]);
// Соединяемся с сервером базы данных
$dbcnx = @mysql_connect($dblocation,$dbuser,$dbpasswd);
if($dbcnx)
{
// Выбираем базу данных
if(@mysql_select_db($dbname,$dbcnx))
{
$query = "SELECT id_page FROM pages WHERE name='".$_SERVER['PHP_SELF']."'";
$pgs = mysql_query($query);
if ($pgs)
{
// Выясним, первичный ключ (id_page) текущей страницы
if(mysql_num_rows($pgs)>0) $id_page = mysql_result($pgs,0);
// Если данная страница отсутствует в таблице pages
// и не разу не учитывалась - добавляем данную страницу в таблицу.
else
{
$query = "INSERT INTO pages VALUES (0, '".$_SERVER['PHP_SELF']."', 0)";
mysql_query($query);
// Выясняем первичный ключ только что добавленной
// страницы
$id_page = mysql_insert_id();
}
}
// Определяем строку USER_AGENT
$useragent = $_SERVER['HTTP_USER_AGENT'];
$browser = 'none';
// Выясняем браузер
if(strpos($useragent, "MSIE") !== false)
if(strpos($useragent, "Opera") == null) $browser = 'msie';
if(strpos($useragent, "Opera") !== false) $browser = 'opera';
if(strpos($useragent, "Netscape")!== false) $browser = 'netscape';
// Выясняем операционную систему
$os = 'none';
if(strpos($useragent, "Win") !== false) $os = 'windows';
if(strpos($useragent, "Linux") !== false
|| strpos($useragent, "Lynx") !== false
|| strpos($useragent, "Unix") !== false) $os = 'unix';
if(strpos($useragent, "Macintosh")!== false) $os = 'macintosh';
// Выясняем принадлежность к поисковым роботам
if(substr($useragent, 0, 12) == "StackRambler") $os = 'robot_rambler';
if(substr($useragent, 0, 9) == "Googlebot") $os = 'robot_google';
if(substr($useragent, 0, 6) == "Yandex") $os = 'robot_yandex';
if(substr($useragent, 0, 5) == "Aport") $os = 'robot_aport';
$search = 'none';
// Выясняем принадлежность к поисковым системам
if(strpos($reff,"yandex")) $search = 'yandex';
if(strpos($reff,"rambler")) $search = 'rambler';
if(strpos($reff,"google")) $search = 'google';
if(strpos($reff,"aport")) $search = 'aport';
if(strpos($reff,$_SERVER["SERVER_NAME"])) $search = 'own_site';
// Заносим всю собранную информацию в базу данных
$query_main = "INSERT INTO ip VALUES (
0,
'$ip',
NOW(),
$id_page,
'$browser',
'$os',
'$search')";
@mysql_query($query_main);
// Если имеется реферер, заносим информацию о нём в отдельную таблицу
if(!empty($reff) && $search != "own_site")
{
$query_reff = "INSERT INTO refferer VALUES (
0,
'$reff',
now(),
'$ip',
$id_page,
'$search')";
@mysql_query($query_reff);
}
}
}
?> | |
|
|
|
|
|
|
|
для: Сервер
(18.12.2004 в 09:56)
| | Ага, в этой версии прямо в код забито $_SERVER['PHP_SELF']
Тогда ее нужно заменить на вышеприведенную. Я 2 включения в коде нашел … но нужно cheopsa-а спросить. Нет ли там еще где подводных камней. | |
|
|
|
|
автор: Сервер (18.12.2004 в 11:43) |
|
|
для: glsv (Дизайнер)
(18.12.2004 в 10:50)
| | Все заменил.
Считает но опять не то, что надо :)
в таблице подсчета страниц сайта показывает только корень сайта,
"http://adler-reisen.com" то есть без названия страницы. | |
|
|
|
|
|
|
|
для: Сервер
(18.12.2004 в 11:43)
| | Вы на хосте тестируете?
Вам нужно подобрать переменную, которая будет показывать адрес текущей страницы shtml.
Попробуйте проверить вот эти переменные.
$_SERVER["REDIRECT_SCRIPT_FILENAME"]
$_SERVER["REDIRECT_REQUEST_URI"]
$_SERVER["REDIRECT_SCRIPT_NAME"]
$_SERVER["REDIRECT_DOCUMENT_URI"]
$_SERVER["REQUEST_URI"]
|
Или попробуйте сами найти.
Создате shtml-файл
<html>
<head>
</head>
<!--#include virtual="phpinfo.php" -->
</html>
|
И в той же директории создайте подключаемый файл phpinfo.php, в котором будет:
Откройте в браузере созданный shtml-файл и найдите в фиолетовых таблицах переменную, где будет содержаться имя shtml-файла. Именно эта переменная и нужна. | |
|
|
|
|
автор: Сервер (18.12.2004 в 13:31) |
|
|
для: glsv (Дизайнер)
(18.12.2004 в 12:18)
| | ооооо!!!
Правильно сработало вот это:
$_SERVER["REQUEST_URI"]
Вы специально его последним в списке написали? :)))
Все работает правильно.
Спасибо, буду пользоваться.
И еще масенький вопросик.
Как-то можно исключить себя из списка подсчитываемых? | |
|
|
|
|
|
|
|
для: Сервер
(18.12.2004 в 13:31)
| | >И еще масенький вопросик.
>Как-то можно исключить себя из списка подсчитываемых?
Пожалуй если только IP-адрес статичный | |
|
|
|
|
автор: Сервер (18.12.2004 в 13:53) |
|
|
для: cheops
(18.12.2004 в 13:47)
| | Понятно.
нет так нет.
Провайдер меняет мой IP-адрес каждые сутки.
Спасибо | |
|
|
|
|
|
|
|
для: Сервер
(18.12.2004 в 13:31)
| | >Установил сабж, настроил. Но при щелчке на странице статистика показывает >только увеличение счетчика страницы index.phtml и тестовой index.php, а >остальных страниц - нет
>
>ооооо!!!
>Правильно сработало вот это:
>
>$_SERVER["REQUEST_URI"]
>
Извините за глупый вопрос, но я слабо разбираюсь в программировании.
Можно немного подробнее... куда именно прописывать
$_SERVER["REQUEST_URI"]
|
У меня такая же бадья... все странички имеют вид index.php?page=firms и при заходе на страничку "Фирмы" считает не эту, а index.php | |
|
|
|
|
|
|
|
для: Seriy
(18.04.2005 в 14:23)
| | Везде где найдёте в системе $_SERVER['PHP_SELF'], его следует заменить на $_SERVER['REQUEST_URI'] - можно даже воспрользоваться автозаменой по файлам. Возьмите редактор в котором имеется возможность такой замены (тот же Блокнот) открывайте каждый файл и заменяйте. | |
|
|
|
|
|
|
|
для: cheops
(18.04.2005 в 22:54)
| | Ура!!!! Работает!!
Большое спасибо! Очень доходчиво и понятно объяснили. | |
|
|
|
|
автор: Симон (19.12.2004 в 14:16) |
|
|
для: glsv (Дизайнер)
(16.12.2004 в 01:58)
| | Что удивительно, но и "чистые" PHP-файлы не обрабатываются корректно. У меня HTML-код вынесен в темплэйты .tpl При подключении счётчика в PHP-файл, он при описанном раскладе не заносится в статистику. Как с такими чудесами быть? Испробовал все переменные среды, результат тот же. | |
|
|
|
|
|
|
|
для: Симон
(19.12.2004 в 14:16)
| | Спасибо огромное! С shtml проблема решилась. Правда, чистые php (как у Симона) не считаются :(. В целом - классный скрипт, но раз уж такие проблемы есть, то может быть count.php организовать по другому? Я где-то видел, что вставляют в страницу JS а сам счетчик на php/ Может , это было бы универсальнее? | |
|
|
|
|
|
|
|
для: denvor
(20.12.2004 в 17:13)
| | >Я где-то видел, что вставляют в страницу JS а сам счетчик на php/ Может , это было бы универсальнее?
В том то и дело, что мы преднамеренно не стали использовать JavaScript в счетчике. JavaScript может сработать, может не сработать, может быть вовсе отключен. В этом плане чистый php-счетчик точнее. | |
|
|
|
|
автор: Симон (21.12.2004 в 04:05) |
|
|
для: Симон
(19.12.2004 в 14:16)
| | Нашёл причину или одну из причин невключения в счётчик PHP-файла - одинаковые имена глобальных переменных.
Пошёл искать книжку "Развитие фантазии - для чайников" :-) | |
|
|
|
|
|
|
|
для: Симон
(21.12.2004 в 04:05)
| | :) | |
|
|
|
|
|
|
|
для: Симон
(21.12.2004 в 04:05)
| | Симон, а подробнее можно? а то нет времени книжку искать :) | |
|
|
|