Иидентификация пользователя

  • Автор темы Автор темы Сан
  • Дата начала Дата начала

Сан

Новичок
Иидентификация пользователя

При написании счетчика посещений возникла проблема. Суть счетчика: Если пользователь новый на сегодня, то засылаю ему кук, с временем жизни до 23:59:59, и записую его(пользователя) в базу. По идее проблемы могут быть, только если пользователь почистит куки вручную. Соответственно в таком случае он будет посчитан несколько раз. Но за сегодняшний день счетчик защитал много повторяющихся пользователей, привожу отрывок из БД:

--
-- Структура таблицы `meter_user_day`
--

CREATE TABLE `meter_user_day` (
`user_id` int(7) NOT NULL auto_increment,
`user_ip` varchar(255) NOT NULL default '',
`user_date` date NOT NULL default '0000-00-00',
`user_time` time NOT NULL default '00:00:00',
`user_host` varchar(255) NOT NULL default '',
`user_agent` varchar(255) NOT NULL default '',
`user_ref` varchar(255) NOT NULL default '',
`user_session` varchar(255) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=90 ;

--
-- Дамп данных таблицы `meter_user_day`
--

INSERT INTO `meter_user_day` VALUES (37, '195.49.165.178', '2007-11-15', '13:49:51', '195.49.165.178', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)', 'http://www.google.com.ua/search?hl=ru&q=%D1%85%D0%B0%D1%80%D1%8C%D0%BA%D0%BE%D0%B2++%D1%81%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9+%D0%BF%D0%B0%D0%BD%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9+%D1%80%D0%B0%D0%B4%D0%B8%D0%B0%D1%82%D0%BE%D1%80+KORADO&btnG=%D0%9F', '');

INSERT INTO `meter_user_day` VALUES (38, '195.49.165.178', '2007-11-15', '13:50:01', '195.49.165.178', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)', 'http://www.google.com.ua/search?hl=ru&q=%D1%85%D0%B0%D1%80%D1%8C%D0%BA%D0%BE%D0%B2++%D1%81%D1%82%D0%B0%D0%BB%D1%8C%D0%BD%D0%BE%D0%B9+%D0%BF%D0%B0%D0%BD%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B9+%D1%80%D0%B0%D0%B4%D0%B8%D0%B0%D1%82%D0%BE%D1%80+KORADO&btnG=%D0%9F', '');

INSERT INTO `meter_user_day` VALUES (39, '195.49.165.178', '2007-11-15', '13:53:02', '195.49.165.178', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)', 'http://209.85.129.104/search?q=cache:7igDjNfOBrIJ:www.bazatepla.com.ua/index.php%3Fcw...D0%BD%D0%BE%D0%B9+%D0%BF%D0%B0%D0%BD%D0%B5%D0', '');

Красные - это IP , синие – Хосты. И еще вопрос: почему некоторые хосты отображаются в виде IP?
 
Потому что гладиолус.
В отпуске все предсказатели...Ктулху вызывают.
 
Красные - это IP , синие – Хосты
Таких букв как IP, Хост (так как Вы их трактуете своим кодом) в пхп нет.
В таких случаях, обычно, люди приводят НЕ запрос, а пхп-код, который формирует данный зарос.
 
Автор оригинала: cDLEON
Потому что гладиолус.
В отпуске все предсказатели...Ктулху вызывают.
Извините за некорректно поставленный вопрос. Но и грубить не надо!
Если Вам жаль времени на объяснения, не пишите вообще! :mad:
Скажите пожалуйста, что именно я спросил не ТО или что уточнить?

-~{}~ 15.11.07 23:37:

Вот часть кода :
if(@!$_COOKIE['meter_session'])
{
$cooc_time=time()+mktime(23,58,59)-mktime();
setcookie("meter_session",session_id(),$cooc_time );
mysql_query("INSERT INTO meter_user_day (user_ip,user_date,user_time,user_host,user_agent,user_ref) VALUES('$REMOTE_ADDR','".date('Y-m-d')."','".date('H:i:s')."','".gethostbyaddr($REMOTE_ADDR)."','".getenv('HTTP_USER_AGENT')."','".getenv('HTTP_REFERER')."') ");
}
 
почему некоторые хосты отображаются в виде IP?
тебя не должен этот вопрос волновать.
Но за сегодняшний день счетчик защитал много повторяющихся пользователей
тебя не должен этот вопрос волновать.
так устроен интернет. никто тебе ничего не обязан - ни хостом быть, ни куки возвращать.

судя по уровню твоих вопросов, я бы тебе настоятельно рекомендовал считать ip адреса счетчиком.

хотя я, конечно, уверен, что ты считаешь себя умнее в сто раз, и будешь продолжать делать с куками.

-~{}~ 15.11.07 23:52:

$cooc_time=time()+mktime(23,58,59)-mktime();
крутой код
 
Сан
А мануал читать не модно?
string gethostbyaddr ( string ip_address )
Returns the host name of the Internet host specified by ip_address or a string containing the unmodified ip_address on failure.
 
Mr_Max
Спасибо! Извини, мой втык! Функцию использовал, но до конца в ней не разобрался!
 
разобраться надо прежде всего в том как устроен интернет
 
Красные - это IP , синие – Хосты
PHP:
if(color($_SERVER['REMOTE_ADDR']) == 'red') $data['user_ip'] = $_SERVER['REMOTE_ADDR'];
else $data['user_host'] = $_SERVER['REMOTE_ADDR'];
Недокументированая функция color обычно применяется гуру для различения хостов и ip-адресов...
 
boombick
Неа , ты не понял. Это я в ручную "раскрасил" текст, для понятливости вопроса. А color я не использовал!
 
Э-эх, поработаю телепатом

PHP:
if(@!$_COOKIE['meter_session'])
Это че за код? Чего делает?
 
Сверху