За последние 24 часа нас посетили 18089 программистов и 1588 роботов. Сейчас ищут 1062 программиста ...

Счетчик

Тема в разделе "PHP для новичков", создана пользователем smidl, 29 ноя 2007.

  1. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    Доброго времени суток, возник ряд вопросов. Если можете, помогите:

    Нужно написать счетчик который считает общее кол-во юзеров зашедших на сайт. Тоисть если юзер уже заходил, показание счетчика не увеличиваються. Не знаю как ето сделать, покажите хоть на примерах. СпасибО!
     
  2. lexa

    lexa Активный пользователь

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Записывай в базу по ip. Если в течение 24 часов такой ip уже был, то пиши "update counet set hits = (hits + 1) where ip = $ip".

    Новый ip за сутки это хост, повторный ip за сутки - хит.
     
  3. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    lexa а если прокся?


    smidl кроме ip хотя бы хэдеры браузера записывай.

    а можешь куку ставить. никто конечн не застрахован от того, что её не почистят.. но думаю статистика будет точнее, чем счётчик по ip
     
  4. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    Сам когда то писал нечто подобное, но идеального решения так и не нашел, остановился на куках...
    Может кто в курсе как это реализованно в профессиональных системах?
     
  5. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    S.t.A.M.
    да совокупность всего можно считатья... ip, ip из жабаскрипта, хэдеры, расширние экрана etc
    но 100%го средства всё-равно нет
     
  6. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    QQQ
    с IP косяк - большинство сидит через шлюз - у них один IP на всю сетку...
     
  7. QQQ

    QQQ Активный пользователь

    С нами с:
    21 ноя 2007
    Сообщения:
    538
    Симпатии:
    0
    S.t.A.M.
    дык я в курсе.. а ещё он динамическим бывает до сих пор у многих :)

    вот и говорю, что нужно собирать совокупность различных данных. но всё-равно идеального средства не получится - потому что его в данном случае и не может быть )
     
  8. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Пора писать требование о введении UIN и разослать всем производителям сетевых карт.
     
  9. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    А можно средставми php узнать Mac адрес карты? :)))))))))
     
  10. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Вроде бы мак-адрес невидим после маршрутиризатора.
     
  11. Anonymous

    Anonymous Guest

    Мак адрес доступен в пределах одного сегмента сети.
     
  12. S.t.A.M.

    S.t.A.M. Активный пользователь

    С нами с:
    10 сен 2007
    Сообщения:
    1.041
    Симпатии:
    0
    А также ФИО, паспортные данные, налоговую историю и где лежат ключи от сейфа! :-D
     
  13. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    как узнать айпи юзера?)))
     
  14. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
  15. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    а можно какой-то незедачливый пример скрипта, который например сначала узнает айпи, а потом его показывает) просто в мануале сложно все как-то)
     
  16. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    Спасибо, сам додул, хотя все-таки черкните, мож я и не прально...
    PHP:
    1.  
    2. <?
    3. print_r($_SERVER['REMOTE_ADDR']);
    4. ?>
     
  17. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Так не нужно, ведь это уже элемент массива. Поэтому просто echo $_SERVER['REMOTE_ADDR']
     
  18. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    спасибо огромное)! По мере написания счетчика буду спрашиватЬ)! Не забывайте поглядывать в "Программирование для новичков", мы ведь так нуждаемся в Вас)
     
  19. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    Люди, вот начал писать, создал базу с названием counter в ней таблица ip с полем ip . Но не выходит, обьясните плз.
    PHP:
    1.  
    2. <?
    3. $db_host='localhost';
    4. $db_user='root';
    5. $db_pass='';
    6. $db_name='counter';
    7. //Настройки соединения
    8. $connect=mysql_connect($db_host,$db_user,$db_pass);
    9. mysql_select_db($db_name, $connect) or die('плохой запрос : '.  mysql_error());
    10. //Берем инфу о айпишниках
    11. $ac=mysql_query("SELECT * FROM ip");
    12. //Проверяем есть ли в базе уже такой айпи, если нет добавляем
    13. $ip_user=$_SERVER['REMOTE_ADDR'];
    14. if ($acs['ip']!=$ip_user){
    15. mysql_query("INSERT into ip (ip) VALUES ($ip_user)");
    16. } else {
    17. print 'вы у нас еще не были :';
    18. }
    19. ?>
     
  20. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    после восьмой строчки читать, а тем более комментировать лень
     
  21. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    Сорьки) просто задрало уже вот и писал такое, уже исправил..подскажите в чем ошибки
     
  22. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    IP не должны храниться в обычном виде. PHP не умеет сравнивать числа с двумя и более точками
    Пользуйтесь функцией ip2long

    Функция mysql_fetch_array($ac) не даст нужный результат, если строк более одной. Она разбивает первую строку из выборки на массив. Поэтому нужно разбирать и строки с помощью while (при выводе).

    А сравнение был IP - не был, нужно делать еще в бд. То есть:
    PHP:
    1.  
    2. <?php
    3. $db_host='localhost';
    4. $db_user='root';
    5. $db_pass='';
    6. $db_name='counter';
    7.  //Настройки соединения
    8. $connect=mysql_connect($db_host,$db_user,$db_pass);
    9. mysql_select_db($db_name,$connect) or die('плохой запрос : '.  mysql_error());
    10.  //Ищем в базе текущий ип
    11. $ip_user = ip2long($_SERVER['REMOTE_ADDR']);
    12. $ac=mysql_query('SELECT * FROM `ip` WHERE `ip`='.$ip_user); //лучше не называть таблицы и столбцы одним именем
    13.  //Если нет в базе такого айпи, то значение $acs['ip'] пусто
    14. if (!$acs['ip']){
    15.     mysql_query('INSERT INTO `ip` VALUES('.$ip_user.')');
    16. }
    17. else {
    18.     print 'вы у нас уже были :';
    19. }
    20.  ?>
     
  23. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    Спасибо огромное, все четко, доходчево, привильно! Все работает
     
  24. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    Доброй ночи) вот опять появилось время и опять появились проблемы... самый последний код робочий, но мне нужно сделать что оно еще и считало общее кол-во пользователей...не знаю как граммотно организовать, подскажите пожалуйста?
     
  25. smidl

    smidl Активный пользователь

    С нами с:
    3 мар 2007
    Сообщения:
    84
    Симпатии:
    0
    я думаю в таблицу ip добавить еще поле типа users и в нем хранить данные о количестве пользователей которые приходили на сайт. Но как увеличивать счетчик граммотно?