Доброго времени суток, возник ряд вопросов. Если можете, помогите: Нужно написать счетчик который считает общее кол-во юзеров зашедших на сайт. Тоисть если юзер уже заходил, показание счетчика не увеличиваються. Не знаю как ето сделать, покажите хоть на примерах. СпасибО!
Записывай в базу по ip. Если в течение 24 часов такой ip уже был, то пиши "update counet set hits = (hits + 1) where ip = $ip". Новый ip за сутки это хост, повторный ip за сутки - хит.
lexa а если прокся? smidl кроме ip хотя бы хэдеры браузера записывай. а можешь куку ставить. никто конечн не застрахован от того, что её не почистят.. но думаю статистика будет точнее, чем счётчик по ip
Сам когда то писал нечто подобное, но идеального решения так и не нашел, остановился на куках... Может кто в курсе как это реализованно в профессиональных системах?
S.t.A.M. да совокупность всего можно считатья... ip, ip из жабаскрипта, хэдеры, расширние экрана etc но 100%го средства всё-равно нет
S.t.A.M. дык я в курсе.. а ещё он динамическим бывает до сих пор у многих вот и говорю, что нужно собирать совокупность различных данных. но всё-равно идеального средства не получится - потому что его в данном случае и не может быть )
а можно какой-то незедачливый пример скрипта, который например сначала узнает айпи, а потом его показывает) просто в мануале сложно все как-то)
Спасибо, сам додул, хотя все-таки черкните, мож я и не прально... PHP: <? print_r($_SERVER['REMOTE_ADDR']); ?>
спасибо огромное)! По мере написания счетчика буду спрашиватЬ)! Не забывайте поглядывать в "Программирование для новичков", мы ведь так нуждаемся в Вас)
Люди, вот начал писать, создал базу с названием counter в ней таблица ip с полем ip . Но не выходит, обьясните плз. PHP: <? $db_host='localhost'; $db_user='root'; $db_pass=''; $db_name='counter'; //Настройки соединения $connect=mysql_connect($db_host,$db_user,$db_pass); mysql_select_db($db_name, $connect) or die('плохой запрос : '. mysql_error()); //Берем инфу о айпишниках $ac=mysql_query("SELECT * FROM ip"); $acs=mysql_fetch_array($ac); //Проверяем есть ли в базе уже такой айпи, если нет добавляем $ip_user=$_SERVER['REMOTE_ADDR']; if ($acs['ip']!=$ip_user){ mysql_query("INSERT into ip (ip) VALUES ($ip_user)"); } else { print 'вы у нас еще не были :'; } ?>
IP не должны храниться в обычном виде. PHP не умеет сравнивать числа с двумя и более точками Пользуйтесь функцией ip2long Функция mysql_fetch_array($ac) не даст нужный результат, если строк более одной. Она разбивает первую строку из выборки на массив. Поэтому нужно разбирать и строки с помощью while (при выводе). А сравнение был IP - не был, нужно делать еще в бд. То есть: PHP: <?php $db_host='localhost'; $db_user='root'; $db_pass=''; $db_name='counter'; //Настройки соединения $connect=mysql_connect($db_host,$db_user,$db_pass); mysql_select_db($db_name,$connect) or die('плохой запрос : '. mysql_error()); //Ищем в базе текущий ип $ip_user = ip2long($_SERVER['REMOTE_ADDR']); $ac=mysql_query('SELECT * FROM `ip` WHERE `ip`='.$ip_user); //лучше не называть таблицы и столбцы одним именем $acs=mysql_fetch_array($ac); //Если нет в базе такого айпи, то значение $acs['ip'] пусто if (!$acs['ip']){ mysql_query('INSERT INTO `ip` VALUES('.$ip_user.')'); } else { print 'вы у нас уже были :'; } ?>
Доброй ночи) вот опять появилось время и опять появились проблемы... самый последний код робочий, но мне нужно сделать что оно еще и считало общее кол-во пользователей...не знаю как граммотно организовать, подскажите пожалуйста?
я думаю в таблицу ip добавить еще поле типа users и в нем хранить данные о количестве пользователей которые приходили на сайт. Но как увеличивать счетчик граммотно?