Зная, что сервер не находится в частной сети, на самом деле он все же немного сложнее, чем кажется.Тем не менее, есть полезные сетевые функции , которые вы можете использовать.
Шаг 1:
Поместите только этот скрипт где-то в своем сайте, чтобы только вы знали URL, чтобы:
<?php echo gethostbyaddr($_SERVER['REMOTE_ADDR']); ?>
Шаг 2:
Откройте эту страницу в браузере, когда вы просматриваете из частной сети.Это даст вам внешнее имя хоста сети.Запишите только последнюю полностью определенную часть имени хоста (IE, из "436-2-x235.myuniversity.com", вы хотите просто ".myuniversity.com". Или, возможно, в нем есть "mydorm.myuniversity.com",так что вы можете отфильтровать до вашего общежития).С этим именем хоста вы можете удалить указанный выше файл.Причина получения сетевого имени хоста заключается в том, что внешний IP-адрес сети может неожиданно измениться либо из-за переназначения интернет-провайдера, либо из-за того, что университет переключает пользователей через другую точку выхода.
Шаг 3:
Измените ваш код в проверке входа на что-то вроде этого ...
if (strripos(gethostbyaddr($_SERVER['REMOTE_ADDR']), ".myuniversity.com")) {
// client is in private network
}
else {
// client is _not_ in private network
}
Некоторые предостережения: удаленный адрес клиента ненадежен из-за прокси или подделки.Но если кто-то проксирует через сеть, он также может быть там студентом.