[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: online счетчик
Dron19
Как Вам мой online счетчик?
PHP
<?
function 
online () {
# проверяем пользователя
$ip getenv("HTTP_X_FORWARDED_FOR");
if(empty(
$ip) || $ip=='unknown') { $ip=getenv("REMOTE_ADDR"); }
# автоматом удаляем не активных
mysql_query ("DELETE FROM online WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(time) > 500") or die ("Can't delete old sess");
# изменяем время пользователя или добавляем его в базу!
$select mysql_query ("SELECT ip FROM online WHERE ip='$ip'");
$tmp mysql_fetch_row($select);
if(
$ip == $tmp['0']) {
mysql_query ("UPDATE online SET time=NOW() WHERE ip='$ip'") or exit("<p>Скрипт не может изменить поле!</p>");
} else {
mysql_query("INSERT INTO online (ip,time) VALUES ('$ip',NOW())") or exit("Скрипт не может добавить пользователя!");
}
# считаем результат сканирования пользователей
$select mysql_query("SELECT COUNT(*) FROM online") or exit("<p>Ошибка подсчета активных пользователей</p>");
$tmp mysql_fetch_row($select);
$result $tmp['0'];
return 
$result;
}




Спустя 27 минут, 18 секунд (2.11.2009 - 15:48) FatCat написал(а):
Умельцы подсовывают в HTTP_X_FORWARDED_FOR свои произвольные строки, и через айпишник инъецируют MySQL.
http://forums.ibresource.ru/index.php?s=&s...ndpost&p=352612 - тут мои предложения по проверке валидности айпишника.

Спустя 3 часа, 26 минут, 44 секунды (2.11.2009 - 19:15) Dron19 написал(а):
Попробуйте его к себе установить, он корректно и достаточно точно работает

Спустя 1 час, 58 минут, 23 секунды (2.11.2009 - 21:13) kirik написал(а):
Dron19
Настоящий айпи (тот, с которым нужно работать и тот который сам апач в логи пишет) - это REMOTE_ADDR все остальное можешь использовать на свой страх и риск, ибо оно подменяется на раз-два.

FatCat
Я кстати нашел удобный способ проверять на валидность IP адрес:
PHP
$_SERVER['REMOTE_ADDR'] = long2ip(ip2long($_SERVER['REMOTE_ADDR']));
// если там записан не IP (или он записан неправильно), выдаст 0.0.0.0

Спустя 5 часов, 54 минуты, 52 секунды (3.11.2009 - 03:08) Dron19 написал(а):
Так я и работаю с REMOTE_ADDR, а HTTP_X_FORWARDED_FOR служит как дополнительный параметр, я используя именно его потому, что он у каждого компьютера разный и когда сидят люди с одного предприятия, число людей растет, а если бы без дополнительного параметра, то все они считались бы как за одного пользователя!

Спустя 13 минут, 2 секунды (3.11.2009 - 03:21) kirik написал(а):
Цитата (Dron19 @ 2.11.2009 - 19:08)
а HTTP_X_FORWARDED_FOR служит как дополнительный параметр

Где? Если у нас HTTP_X_FORWARDED_FOR есть, то ip клиента ты уже не смотришь..

Спустя 21 час, 16 минут, 8 секунд (4.11.2009 - 00:37) Dron19 написал(а):
HTTP_X_FORWARDED_FOR у каждого компа разный и когда его е существует(такое бывает) мы берем его ip wink.gif

Спустя 22 минуты, 40 секунд (4.11.2009 - 01:00) kirik написал(а):
Цитата (Dron19 @ 3.11.2009 - 16:37)
HTTP_X_FORWARDED_FOR у каждого компа разный и когда его е существует(такое бывает) мы берем его ip

У компа нет HTTP_X_FORWARDED_FOR, более того, если машина не находится в сети у нее даже ip нет. HTTP_X_FORWARDED_FOR - это заголовок, который отдает (а может не отдавать) прокси сервер, через который машина выходит в интернет. По этому доверять ему вообще нельзя.
А в REMOTE_ADDR находится конкретный IP конкретной машины, которая осуществила запрос к серверу. Вот он более-менее надежный.

Спустя 5 минут, 2 секунды (4.11.2009 - 01:05) Gabriel написал(а):
kirik
машины или роутера? wink.gif

Спустя 3 часа, 6 минут, 20 секунд (4.11.2009 - 04:11) kirik написал(а):
Gabriel
Наверное все таки машины, ибо у меня роутер, и он ничего не передает smile.gif А на работе бывшей стояла прокся, она отдавала. Только какое-то название у заголовка другое было.

Спустя 1 час, 28 минут, 11 секунд (4.11.2009 - 05:40) Gabriel написал(а):
kirik
ИП такчки можеш в локале прощюпать но никак не в паутине smile.gif ведь почему когда недай бох ктото из офиса напартачит и забанят ИП потом никто из тех кто пытаеться попасть туда через етот роутер идут лесом dry.gif

Спустя 29 минут, 47 секунд (4.11.2009 - 06:09) kirik написал(а):
Цитата (Gabriel @ 3.11.2009 - 21:40)
ИП такчки можеш в локале прощюпать но никак не в паутине

Дык об этом-то и разговор smile.gif Некоторые прокси передают IP компа в локалке (или IP компа, который зашел через этот прокси) через HTTP_X_FORWARDED_FOR заголовок.

Спустя 6 часов, 18 минут, 46 секунд (4.11.2009 - 12:28) Gabriel написал(а):
kirik
сори сабаянил как всегда:) но зато теперь бум знать что ето такое и с чем его кушать


_____________
PHP+MySQL - уже изучил, осталось всего лишь это:
C,C++,C#,JavaScript,Python,Ruby,Perl,OpenGl,DirectX,ASP.NET - Намерен учить все
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.