Господа сильные программисты Очень прошу помочь добрым советом в сочетании с добрым примером. Задача стоит так: пользователь заходит на некую страницу, а PHP-скрипт определяет его: IPшник (если юзер под внешним общим IP-адресом в инет ходит, то его внутренний), ID (MAC-например) какойнибудь железки на его машине (сетевуха например).
PHP: <? function OOPSGetIP() { global $HTTP_SERVER_VARS; $IP = $HTTP_SERVER_VARS["REMOTE_ADDR"]; if(isset($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"])) { $IP .= " ".$HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; } $IPS = split("[ ;,]",$IP); $IP = ""; while(list($i,$VAL) = each($IPS)) $IP .= $VAL.","; $IP = substr($IP,0,strlen($IP)-1); return $IP; }?> MAC не определишь. а так выдай phpinfo() И посмотри что PHP знает
Сенкс, как грится э лот =) . Единственное не смог потестить на предмет внешнего/внутреннего IP. Прошу автора уточнить, точно ли функция доберается да внутреннего IP, али нет, али этот момент во внимание при написании принят не был. Вот. Да, и еще: В принципе, хрен с ним с MAC-адресом. Вообще, какнибудь можно о железках пользователя узнать, может какойнибудь еше номерок перманентный гдето есть, по которому можно пользовательскую машину идентифицировать. Заранее спасибо, и просто спасибо =)
Да вот то-то и оно, что задача стоит "без ActiveX", т.к. его использование заметно пользователю (Explorer крамольные вопросы задает, типа "а хотите запустить?", "а оно вам надо вааще?" и т.д. =). Нужно, чтоб неявно. Эх, неужели я хочу невозможного... Ведь не женщина вроде =))
Что-то можно собрать с помощью Js, но до CPUid точно не доберёшься. В самом HTTP протоколе уникальной идентификации пользователя нет, она есть в TCP/IP протоколе, над которым надстроен HTTP и это тот самый ip адрес. Но и на ip адрес рассчитывать нельзя т.к. он может принадлежать анонимному прокси серверу, через который заходит клиент.
CPUid и не надо. Какой-нибудь признак машины. Может подскажете, как задачу можно альтернативно решить, но так, чтоб InetExplorer не ругался.
О. И меня это интересует. Может кто подскажет как определить комп пользователя однозначно с помощью ПХП.
Однозначно юзверя с помощью РНР не определить никак, ибо РНР знает о юзвере ровно столько, сколько инфы приходит в HTTP-заголовках, кои можно отправлять самостоятельно. На этот счет даже статья есть
$_SERVER['REMOTE_ADDR'] - IP адрес удаленного компа gethostbyaddr - возвращает host name $machine = gethostbyaddr($_SERVER['REMOTE_ADDR']);
Goryn я зайду через анонимнй прокси и ты будешь видуть адрес этого прокси, а не как не мой. ИМХО 100% гарантии определить тачку юзера нельзя из-за особенностей самого протокола. об этом писалось гуеву тучу раз.
а активикс в юниксе не работает..... на факл локального адреса Посмотри след. код... Код (Text): <SCRIPT> var ip = new java.net.InetAddress.getLocalHost(); var ipStr = new java.lang.String(ip); document.writeln(ipStr.substring(ipStr.indexOf("/")+1)); </SCRIPT> потом AJAX проруливает........ дерзай.....
да...... ява есть и в юниксе и в виндах..... и не надо никакого актив икс........ код работает везде где есть ява....
И что? А 440hz все равно зайдет через прокси, отключит яву и пошлет телнетом данные какие захочет. Для статистики REMOTE_ADDR хватит, а для 100% идентификации и это не поможет.
а для 100% идентификации кого?? привязываешь к ИП Ремоте который и вперед...... если выпендриваться начнут - посылать.... не твои проблемы...... Яву отключит, неотключит...... треп..... "на каждую хитрую задницу всегда найдется болт с резьбой" (с)..... можно ваще выставить авторизацию через аякс после тестов на ИПы, наличие явы....... 440hz тебе правильно написал - напиши что нужно!! а я тебе напишу как можно сделать чтоб код не работал..... как говорится "Я - это я, а ты - это буковки на мониторе"...... и ничего с этим не поделать........ ты впринципе сидя дома не сможешь узнать какой у меня дома монитор........ даже если у меня драйвер правильный установлен....... ну если конечно ты ни телепат....