Типы ссылок по умолчанию равны null, чтобы указать, что они не ссылаются на какой-либо объект. Следовательно, если вы попытаетесь получить доступ к объекту, на который ссылаетесь, а его нет, вы получите исключение NullReferenceException.
Для Ex:
SqlConnection connection = null;
connection.Open();
Когда вы запускаете это кода, вы получите:
System.NullReferenceException: Object reference not set to an instance of an object.
Вы можете избежать этой ошибки, например, следующим образом:
if (connection != null){
connection.Open();
}
Примечание. Чтобы избежать этой ошибки, вы всегда должны инициализировать свои объекты прежде чем пытаться что-либо сделать с ними.
Проблема со всеми этими решениями на основе IP-адреса заключается в том, что если пользователь находится за прокси-сервером, который направляет свой запрос через несколько IP-адресов, это может привести к сбою, что означает, что пользователь не может оставаться в системе.
То, что вы можете сделать, это просто, когда любой пользователь входит в систему, дает им новый токен сеанса и истекает все предыдущие токены сеанса, принадлежащие одному и тому же пользователю.
Это потребует от вас хранения таблицы всех действительных токенов сеанса и с каким пользователем они связаны. Обратите внимание, что встроенная обработка сеансов PHP вряд ли сможет сделать это без особых изменений.
Когда пользователь входит в систему, поместите свой IP-адрес в базу данных. Если их IP-изменения, попросите их снова войти в систему.
Еще проще было бы сохранить их SessionID. Если это изменится, аннулируйте старый сеанс.
Вы можете попробовать сохранить IP-адрес пользователя в базе данных при входе в систему и очистить этот IP-адрес при выходе из системы (или вы выходите из системы). Если пользователь пытается войти в систему, но у них уже есть другой IP-адрес, хранящийся в базе данных, который может быть признаком того, что они входят в систему с двух разных машин ... не на 100% точнее, но может работать соад
Вы не можете предотвратить это. И не должно. Вместо этого вы должны вручную выйти из системы всех, кто заходил раньше. Просто отследите идентификатор сеанса в базе данных пользователей и закройте сеанс, если он не равен единице, сохраненному в базе данных после успешного входа. Это заставит всех одновременных пользователей войти в систему постоянно и разрушить все свои усилия, чтобы использовать ваш сервис.
Я бы посоветовал отслеживать текущий (последний) IP, с которого вошел пользователь. Когда пользователь входит в систему, измените этот IP-адрес. Проверить текущий IP-адрес на последнюю IP-часть процедуры проверки подлинности; если все по-другому, выйдите из системы. Затем может войти в систему, но это приведет к отключению входа в систему другого компьютера.