2009-08-25 5 views
6

Я работаю в университете, и я реализую веб-приложение PHP, которое должно иметь другое поведение при его посещении с одного определенного компьютера. Проблема, с которой я столкнулся, заключается в том, что с веб-сервера, используя $ _SERVER ['REMOTE_ADDR'] и gethostbyaddr(), я могу определить только маршрутизатор, через который проходит компьютер, а не определенное имя пользователя.Уникальный идентификатор одного компьютера

Есть ли в любом случае я могу установить этот конкретный компьютер, чтобы идентифицировать себя на сервере, чтобы сервер знал, когда с веб-сервером будет получен доступ с этой машины? Компьютер работает с firefox в режиме киоска, поэтому допускаются сценарии аддонов или greasemonkey ...

ответ

12

Вы можете установить файл cookie. Это будет запомнено клиентом и передано на сервер как часть каждого запроса. Более подробная информация здесь: http://www.w3schools.com/PHP/php_cookies.asp

+6

Просто убедитесь, что вы понимаете, что файлы cookie могут (очень легко) быть подделаны ... –

+0

К сожалению, если кто-то имеет доступ к компьютеру, он может украсть cookie и установить тот же файл cookie на другом компьютере. – Dmitriy

+6

@Dmitriy К сожалению, вряд ли будет какое-либо решение, которое не может быть нарушено прямым физическим доступом к машине. – ceejayoz

-4

У вас нет SessionID? Ваш идентификатор сеанса должен быть уникальным для идентификации компьютера.

+2

Нет, если они закрывают браузер. – ceejayoz

+0

Просто согласен с ceejayoz. Не имеет отношения к заданному вопросу. –

+0

Интересно, что вы, ребята, совершенно неправильно поняли ответ. Очевидно, что sessionID находится в файле cookie, и файлы cookie сохраняются, даже если вы закрываете браузер. – daniel

2

Некоторые мысли:

  • Установите долговечный печенье. (Поскольку FF находится в режиме киоска, вы должны быть в безопасности от пользователей, очищающих его.)
  • У этого киоска есть другой URL-адрес (возможно, с параметром строки запроса).

Что я не бы сделать, это работа в соответствии с MAC-адрес компьютера (который Gibson говорит нам возможно) или аналогичный; слишком хрупкая, когда аппаратное обеспечение фиксируется и т. д.

4

Вы можете установить кук, или в качестве альтернативы, вы можете изменить заголовок UserAgent, что установка Firefox использует что-то своеобразно.

Чтобы изменить строку агента пользователя, просто введите о: конфигурации в качестве адреса в адресную строку FireFox, то место, где вы обычно ввести URL (ссылка). Я рекомендую сохранить оригинальное значение, которое вы можете получить при вводе примерно: в адресной строке .

Теперь нажмите правую кнопку мыши на , чтобы получить контекстное меню и выберите «String» из меню «New». Введите название предпочтения «general.useragent.override», без цитаты. Затем введите новое значение пользователя , которое вы хотите использовать Mozilla Firefox . Я добавил свое имя и ссылку на мой веб-сайт на оригинальное значение. Вы также можете выбрать один из списка строки агента пользователя.Проверьте новое значение , введя около: в адресной строке .

Вы можете получить эту строку User-Agent из $_SERVER['HTTP_USER_AGENT'] в php.

0

Я уверен, что у вас есть очень хороший ответ, но если вы ищете решение, которое однозначно идентифицирует КОМПЬЮТЕР, а не БРАУЗЕР, тогда загляните в FLASH COOKIES a.k.a FLASH SHARED ОБЪЕКТЫ.

Тезисы являются более мощными и могут быть использованы для хранения данных до 100KB и остаются неизменным во всех браузерах, имеет вспышку, так что это лучшее решение для однозначной идентификации пользователя

1

Почему бы не внедрить систему аутентификации и разместить тех пользователей, которым нужна специальная функциональность, в специальную группу?

0

Попробуйте это.

$something=$_SERVER['HTTP_USER_AGENT']; 

Чтобы однозначно идентифицировать пользователя проверить $something соответствует вашему собственному. (Который находится на вашем коде PHP). если да, то выполните доступ.

Смежные вопросы