Эта тема на forum.dklab.ru


Сергей: Запуск щетчика
Такая вот задачка:

Есть счетчик counter.php в нем 2(две) функции:
1 - обрабатывает переменные полученные PHP
2 - обрабатывает переменные полученные JavaScript

Работает счетчик следующим образом:
В index.php пишем require counter.php
Для JavaScript counter.php вызывается картинкой с параметрами <IMG SRC="counter.php?java=Y&cookie=Y...

В counter.php имеется следующий код, который определяет какую из функций запускать:

if ( count( $HTTP_GET_VARS ) > 0 ) {
$req_meth="get";
$query_string = $HTTP_GET_VARS[ "js" ];
} else if( count( $HTTP_POST_VARS ) > 0 ) {
$req_meth="post";
$query_string = $HTTP_POST_VARS[ "js" ];
} else {
$query_string = "";
}


if ( $query_string ) {
make_js_log ();
} else {
make_php_log ();
}

Понимаю, что и с точки зрения безопастности и вообще, этот отрывок кода не годиться. Вот и хочу посоветоваться, как бы это получше реализовать?

С уважением Сергей.
WingedFox:
А при чем тут безопасность?
И что "это" хотите реализовывать?

Описание счетчика есть в книге Дмитрия Котерова "Самоучитель PHP4".

Еще можете обратиться к гуглю за скриптами счетчиков. Думаю пару сотен всяко найдете.
Сергей:
Да Вы, наверное, меня не правильно поняли, мне не надо пример счетчика. У меня другая задача: есть файл, в котором две функции и надо придумать алгоритм, при котором бы если файл "заинклужен" выполняется одна функция, а если этот файл запрошен напрямую - другая.
WingedFox:
В указанной книге есть и это:


$FileName=strtr(__FILE__,"\\","/");
$ReqName=ereg_Replace("\\?.*","",strtr(getenv("REQUEST_URI"),"\\","/"));
if(eregi(quotemeta($ReqName).'$',$FileName)) {


Комментарии нужны?
Сергей:
Я только что перелопатил книжку, но, к сожалению не нашел приведенного кода. Если вы мне подскажете в каком разделе он приведен буду очень благодарен. Если не подскажете все равно спасибо.
WingedFox:
Стр. 410
Сергей:
Премного Вам благодарен. Я просто еще не дочитал до этого места. Все разъяснилось вроде.
WingedFox:
На здоровье! 8*)
Евгений Бондарев:
Сергей:
А зачем вам делать одно и то же 2 раза?
Используйте только картинку. Вот и все!

Ну, или если это так противоречит вашим религиозным убеждениям, то что вам мешает перед инклюдом файла счетчика в скрипт объявить хитрую переменную типа $CallFromMainScript=1; и в коде счетчика проверять определена ли такая переменная?
Сергей:
Все к одной картинке я привязывать не хочу по той простой причине, что ели у юзера картинки выключены и активекс не работает, то счетчик его не посчитает вообще, а так я хотя бы буду знать, что пользователь был, но картинки у него были выключены.

Пойду спать уже. завтра попробую все и отпишу если проблемы будут.

З.Ы. Да хорошая идея по поводу определения переменной. Спасибо.
Дмитрий Эсс:
Сергей:
А нельзя выводить данные о посещаемости в текстовом виде?
Евгений Бондарев:
Дмитрий Эсс:
Дело в том, что для получения более полной статистики приходится использовать JavaScript. И соответственно, передавать информацию другому скрипту.
Дмитрий Эсс:
Евгений Бондарев:
Ясно. А запустить этот скрипт с нужными параметрами можно только через тег отображения картинки?
Евгений Бондарев:
Дмитрий Эсс:
Ну, можно еще во фрейме или другими неменее изощренными способами. Но из картинки надежнее.

Можно еще редирект из JavaScript-а использовать, но это совсем коряво и не юзабельно...
Cepгeй:
Это я (лень логиниться было).

Я по поводу "других" способов передачи JS в ПЫХПЫХ. Я, например, предусмотрел возможность, если у юзера вдруг выключены картинки, передавать информацию с помощью активекса методом пост. Конечно не 100% что у юзера этот активекс сработает, но тем не менее.
Евгений Бондарев:
передавать информацию с помощью активекса методом пост
Вы какой метод имеете в виду?
Я бы порекомендовал воспользоваться методом динамической подгрузки данных (см. http://flyover.xpoint.ru/forums/programming/javascript/misc/thread.xhtml?id=22368), но это только для IE и Mozilla

Эта тема на forum.dklab.ru