Форумы портала PHP.SU » Разное » Обсуждение статей » Сбор статистики на PHP

Страниц (1): [1]
 

1. Nelepostb - 19 Февраля, 2011 - 15:22:58 - перейти к сообщению
Здравствуйте всем! Недавно начал осваивать php поэтому не судите строго. Прочитал статью - http://www.php.su/articles/?cat=...les&page=009
при копировании кода

PHP:
скопировать код в буфер обмена
  1. //вывожу данные
  2.  
  3. echo "<tr><td bgcolor=\"$rowColor\"><
  4.  
  5. font face=\"$fontFace\" color=\"$fontColor\"
  6.  
  7. size=\"$fontSize\">$strr[0]</font>
  8.  
  9. </td><td bgcolor=\"$rowColor\"><
  10.  
  11. font face=\"$fontFace\" color=\"$fontColor\"
  12.  
  13. size=\"$fontSize\">$strr[1]</font>
  14.  
  15. </td><td bgcolor=\"$rowColor\"><
  16.  
  17. font face=\"$fontFace\" color=\"$fontColor\"
  18.  
  19. size=\"$fontSize\">$strr[2]</font>
  20.  
  21. </td><td bgcolor=\"$rowColor\"><
  22.  
  23. font face=\"$fontFace\" color=\"$fontColor\"
  24.  
  25. size=\"$fontSize\">$strr[3]</font>
  26.  
  27. </td><td bgcolor=\"$rowColor\"><
  28.  
  29. font face=\"$fontFace\" color=\"$fontColor\"
  30.  
  31. size=\"$fontSize\">$strr[4]</font>
  32.  
  33. </td><td bgcolor=\"$rowColor\"><
  34.  
  35. font face=\"$fontFace\" color=\"$fontColor\"
  36.  
  37. size=\"$fontSize\">$strr[5]</font></td>
  38.  
  39. </tr>";
  40.  
  41. endfor;
  42.  
  43. }
  44.  
  45. ?>


в этом месте начинает ругаться Однако скажите пожалуйста а обратный слэш экранирует кавычки? И $strr[5] разве пишеться не $strr['5']. Ps пробовал и так и так не работает =(

Заранее спасибо!
2. vlom - 19 Февраля, 2011 - 15:25:24 - перейти к сообщению
Обратные слеши экранируют, и числа не обязательно писать в кавычках
(Добавление)
если написать число в одинарных кавычках то тогда это получится строка string
если без то число int
3. OrmaJever - 19 Февраля, 2011 - 15:29:28 - перейти к сообщению
Nelepostb пишет:
в этом месте начинает ругаться

Вау. В каком месте и что за ошибка? Или мы должны гадать?
4. vlom - 19 Февраля, 2011 - 15:29:32 - перейти к сообщению
ошибку напишите что выдает
5. Nelepostb - 19 Февраля, 2011 - 15:29:43 - перейти к сообщению
vlom пишет:
Обратные слеши экранируют, и числа не обязательно писать в кавычках
(Добавление)
если написать число в одинарных кавычках то тогда это получится строка string
если без то число int

Спасибо =) А почему код не работает?
(Добавление)
А да простите =)
Ошибка - Notice: Undefined index: 3 in z:\home\localhost\www\site\sniffer.php on line 207

PHP:
скопировать код в буфер обмена
  1.  
  2. </td><td bgcolor=\"$rowColor\"><
  3.  
  4. font face=\"$fontFace\" color=\"$fontColor\"
  5.  
  6. size=\"$fontSize\">$strr[1]</font> !!!!!!!- 207 line
  7.  
  8. </td><td bgcolor=\"$rowColor\"><
  9.  
  10. font face=\"$fontFace\" color=\"$fontColor\"
  11.  
  12. size=\"$fontSize\">$strr[2]</font>
  13.  
  14.  
6. Champion - 19 Февраля, 2011 - 16:03:49 - перейти к сообщению
Это не ошибка - это во-первых. А во вторых, -
Nelepostb пишет:
Undefined index: 3
тут всё написано. var_dump($strr) поможет узнать много интересного
7. Nelepostb - 19 Февраля, 2011 - 16:13:47 - перейти к сообщению
Проблема в куки =( - в шапке страницы, для которой хотим узнать статистику:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. include("sniffer.php");
  4.  
  5. if (! isset($$cookieName)) :
  6.  
  7. //установить куки
  8.  
  9. setcookie($cookieName, $cookieValue, time()+$timeLimit);
  10.  
  11. saveUserData();
  12.  
  13. endif;
  14.  
  15. ?>


Если удаляем создать куки то всё здорово - не на что не жалуется, но и счётчик не считает =(
8. OrmaJever - 19 Февраля, 2011 - 16:50:53 - перейти к сообщению
прочитайте описание функции setcookie() и эту тему http://forum.php.su/topic.php?fo...1&topic=3026
9. Nelepostb - 20 Февраля, 2011 - 12:59:39 - перейти к сообщению
Хм...вроде бы всё правильно - проверил в NotePade на налчиче Bom. До <? php у меня ничего не выводиться. Собственно код куки вот:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. include("sniffer.php");
  3. if (! isset($$cookieName)) :
  4. setcookie($cookieName, $cookieValue, time()+$timeLimit);
  5. saveUserData();
  6. endif;
  7. ?>


А сам код статистики:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. //sniffer.php
  4.  
  5. //защита от непосредственного запуска
  6.  
  7. //скрипта кем то посторонним
  8.  
  9. if (eregi("sniffer.php",$PHP_SELF)) {
  10.  
  11. Header("Location: index.php");
  12.  
  13. die();
  14.  
  15. }
  16.  
  17. extract($HTTP_GET_VARS);
  18.  
  19. extract($HTTP_POST_VARS);
  20.  
  21. extract($HTTP_COOKIE_VARS);
  22.  
  23. extract($HTTP_SERVER_VARS);
  24.  
  25. //этот фрагмент кода был позаимствован
  26.  
  27. //из системы PHP Nuke ;)
  28.  
  29. //далее объявляю переменные
  30.  
  31. $fileName="stat.txt"; //имя файла со статистикой
  32.  
  33. $maxVisitors=30; //количество записей, отображаемых
  34.  
  35. //при просмотре статистики
  36.  
  37. $cookieName="visitorOfMySite"; //имя куки
  38.  
  39. $cookieValue="1"; //значение куки
  40.  
  41. $timeLimit=86400; //срок в секундах, который должен
  42.  
  43. //пройти с момента последнего посещения сайта, что бы
  44.  
  45. //информация о посетителе записалась повторно. Это
  46.  
  47. //значение равно 1 дню, т.е. один и тот же посетитель
  48.  
  49. //записывается в статистику раз в одни сутки. Если
  50.  
  51. //эту переменную приравнять к нулю, то будут учитываться
  52.  
  53. //все посещения одного и того же посетителя
  54.  
  55. //далее следуют переменные, отвечающие за отображение
  56.  
  57. //статистики
  58.  
  59. $headerColor="#808080";
  60.  
  61. $headerFontColor="#FFFFFF";
  62.  
  63. $fontFace="Times New Roman";
  64.  
  65. $fontSize="1";
  66.  
  67. $tableColor="#000000";
  68.  
  69. $rowColor="#CECECE";
  70.  
  71. $fontColor="#0000A0";
  72.  
  73. $textFontColor="#000000";
  74.  
  75. //все переменные подготовлены.
  76.  
  77. //Функция записи данных о посетителе
  78.  
  79. function saveUserData() {
  80.  
  81. GLOBAL $fileName, $HTTP_USER_AGENT, $REMOTE_ADDR, $REMOTE_HOST,
  82.  
  83. $HTTP_REFERER, $REQUES_URI;
  84.  
  85. $curTime=date("d.m.Y @ H:i:s"); //текущее время и дата
  86.  
  87. //подготавливаю данные для записи
  88.  
  89. if (empty($HTTP_USER_AGENT)) {$HTTP_USER_AGENT = "Unkwnown";}
  90.  
  91. if (empty($REMOTE_ADDR)) {$REMOTE_ADDR = "Not Resolved";}
  92.  
  93. if (empty($REMOTE_HOST)) {$REMOTE_HOST = "Unknown";}
  94.  
  95. if (empty($HTTP_REFERER)) {$HTTP_REFERER = "No Referer";}
  96.  
  97. if (empty($REQUEST_URI)) {$REQUEST_URI = "Unknown";}
  98.  
  99. $data_ = $HTTP_USER_AGENT."::".$REMOTE_ADDR."::".$REMOTE_HOST."::
  100.  
  101. ".$HTTP_REFERER."::".$REQUEST_URI."::".$curTime."\r\n";
  102.  
  103. //разделителем будут два ":"
  104.  
  105. //далее пишу в файл
  106.  
  107. if (is_writeable($fileName) ) :
  108.  
  109. $fp = fopen($fileName, "a");
  110.  
  111. fputs ($fp, $data_);
  112.  
  113. fclose ($fp);
  114.  
  115. endif;
  116.  
  117. }
  118.  
  119. //функция записи готова. Теперь нужно написать
  120.  
  121. //функцию вывода данных из файла статистики
  122.  
  123. function showStat () {
  124.  
  125. GLOBAL $headerColor, $headerFontColor, $fontFace, $fontSize, $tableColor,
  126.  
  127. $fileName, $maxVisitors, $rowColor, $fontColor, $textFontColor;
  128.  
  129. //вывожу таблицу
  130.  
  131. $fbase=file($fileName);
  132.  
  133. $fbase = array_reverse($fbase);
  134.  
  135. $count = sizeOf($fbase);
  136.  
  137. echo "<font face=\"$fontFace\" color=\"$textFontColor\" size=\"$fontSize\">";
  138.  
  139. echo "Всего посещений: $count<br><br>";
  140.  
  141. echo "<div align=\"center\">
  142.  
  143. <table cellpadding=\"2\" cellspacing=\"1\" width=\"95%\"
  144.  
  145. border=\"0\" bgcolor=\"$tableColor\">";
  146.  
  147. echo "<tr bgcolor=\"$headerColor\"><td>
  148.  
  149. Браузер
  150.  
  151.  
  152.  
  153. </td><td><font face=\"$fontFace\" color=\"$headerFontColor\"
  154.  
  155. size=\"$fontSize\">IP</font></td>
  156.  
  157. <td><font face=\"$fontFace\" color=\"$headerFontColor\"
  158.  
  159. size=\"$fontSize\">Хост</font></td>
  160.  
  161. <td><font face=\"$fontFace\" color=\"$headerFontColor\"
  162.  
  163. size=\"$fontSize\">Ссылка</font></td>
  164.  
  165. <td><font face=\"$fontFace\" color=\"$headerFontColor\"
  166.  
  167. size=\"$fontSize\">Страница</font></td>
  168.  
  169. <td><font face=\"$fontFace\" color=\"$headerFontColor\"
  170.  
  171. size=\"$fontSize\">Время визита</font></td></tr>";
  172.  
  173. echo "</font><font face=\"$fontFace\" size=\"$fontSize\">";
  174.  
  175. //открываю файл и запускаю цикл
  176.  
  177. $fbase=file($fileName);
  178.  
  179. $fbase = array_reverse($fbase);
  180.  
  181. for ($i=0; $i<$maxVisitors; $i++) :
  182.  
  183. if ($i>= sizeof($fbase)) {break;}
  184.  
  185. $s = $fbase[$i];
  186.  
  187. //разделяю
  188.  
  189. $strr = explode("::", $s);
  190.  
  191. if (empty($strr)) {break;}
  192.  
  193. //вывожу данные
  194.  
  195. echo "<tr><td bgcolor=\"$rowColor\"><
  196.  
  197. font face=\"$fontFace\" color=\"$fontColor\"
  198.  
  199. size=\"$fontSize\">var_dump($strr[0])</font>
  200.  
  201. </td><td bgcolor=\"$rowColor\"><
  202.  
  203. font face=\"$fontFace\" color=\"$fontColor\"
  204.  
  205. size=\"$fontSize\">$strr[1]</font>
  206.  
  207. </td><td bgcolor=\"$rowColor\"><
  208.  
  209. font face=\"$fontFace\" color=\"$fontColor\"
  210.  
  211. size=\"$fontSize\">$strr[2]</font>
  212.  
  213. </td><td bgcolor=\"$rowColor\"><
  214.  
  215. font face=\"$fontFace\" color=\"$fontColor\"
  216.  
  217. size=\"$fontSize\">$strr[3]</font>
  218.  
  219. </td><td bgcolor=\"$rowColor\"><
  220.  
  221. font face=\"$fontFace\" color=\"$fontColor\"
  222.  
  223. size=\"$fontSize\">$strr[4]</font>
  224.  
  225. </td><td bgcolor=\"$rowColor\"><
  226.  
  227. font face=\"$fontFace\" color=\"$fontColor\"
  228.  
  229. size=\"$fontSize\">$strr[5]</font></td>
  230.  
  231. </tr>";
  232. endfor;
  233. }
  234. ?>


Однако почему-то не работает...( P.s гуглил =)
10. OrmaJever - 20 Февраля, 2011 - 13:27:36 - перейти к сообщению
Работать оно и небудет. В sniffer.php куча вывода. Куки нужно ставить перед любым выводом.
11. Nelepostb - 20 Февраля, 2011 - 14:10:25 - перейти к сообщению
Да =) Правда он из sniffer вытаскивает переменные
PHP:
скопировать код в буфер обмена
  1. #
  2. $cookieName="visitorOfMySite";
  3. $cookieValue="1";
  4.  $timeLimit=86400;

Если их сразу заменить в шапке

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $cookieName="visitorOfMySite";
  3. $cookieValue="1";
  4. $timeLimit=86400;
  5. if (! isset($$cookieName)) :
  6. setcookie($cookieName, $cookieValue, time()+$timeLimit);
  7. saveUserData();
  8. include("sniffer.php");
  9. endif;
  10. ?>


то всё равно не работает - там функция saveUserData();
помоему не срабатывает т.к. когда подключаем include("sniffer.php"); В нём:

PHP:
скопировать код в буфер обмена
  1. #
  2. function saveUserData() {
  3. #
  4.  
  5. #
  6. GLOBAL $fileName, $HTTP_USER_AGENT, $REMOTE_ADDR, $REMOTE_HOST,
  7. #
  8.  
  9. #
  10. $HTTP_REFERER, $REQUES_URI;
  11. #
  12.  
  13. #
  14. $curTime=date("d.m.Y @ H:i:s"); //текущее время и дата
  15. #
  16.  
  17. #
  18. //подготавливаю данные для записи
  19. #
  20.  
  21. #
  22. if (empty($HTTP_USER_AGENT)) {$HTTP_USER_AGENT = "Unkwnown";}
  23. #
  24.  
  25. #
  26. if (empty($REMOTE_ADDR)) {$REMOTE_ADDR = "Not Resolved";}
  27. #
  28.  
  29. #
  30. if (empty($REMOTE_HOST)) {$REMOTE_HOST = "Unknown";}
  31. #
  32.  
  33. #
  34. if (empty($HTTP_REFERER)) {$HTTP_REFERER = "No Referer";}
  35. #
  36.  
  37. #
  38. if (empty($REQUEST_URI)) {$REQUEST_URI = "Unknown";}
  39. #
  40.  
  41. #
  42. $data_ = $HTTP_USER_AGENT."::".$REMOTE_ADDR."::".$REMOTE_HOST."::
  43. #
  44.  
  45. #
  46. ".$HTTP_REFERER."::".$REQUEST_URI."::".$curTime."\r\n";
и т.д.

У меня ещё такой вопрос - прочитал этот код в статье - http://www.php.su/articles/?cat=...les&page=009
Почему у автора до создания куки подключён sniffer и якобы всё работает Не понял

 

Powered by ExBB FM 1.0 RC1