Искам да огранича достъпа до потребители, които не сасвързани с един от WIFIs на конкретна компания. Така например, имаме компания и тази компания има 2 различни WIFI мрежи, за да се свърже. Искам само да дам достъп до страница, ако клиентът е свързан с някоя от тези WIFI.
- IPv4 на един от WIFI е например: 123.45.65.101
- IPv6 на другото WIFI е например: 2000: 980: CE5: 1: 4dd9: 47ad: ff9b: 4454
Следният PHP скрипт работи перфектно във времето, когато имаше само IPv4 адрес:
if(!in_array($_SERVER["REMOTE_ADDR"], $ip_adres_allow) && !in_array($_SERVER["HTTP_X_FORWARDED_FOR"], $ip_adres_allow)) {
die("You can"t access this webpage, please try again by your employee.");
exit();
}
Където $ ip_adres_allow -> масив от стойности, съхранявани в базата данни
Моите въпроси са:
Знам, че IPv4 адресите са еднакви по WIFI, теняма да се промени. Но IPv6 адреса ли е същият? Проверих някои IPv6 адреси от компанията и те обичат да изглеждат като 2000: 980: ce5: 1: XXXX: XXXX: XXXX: XXXX (докато X не са едни и същи) Това означава ли WIFI има набор от IPv6?
- Is 2000: 980: ce5: 1: 4dd9: 47ad: ff9b: 4454 същото WIFI като 2000: 980: ce5: 1: 55de: de7d: df6e: ea62 например? Или това е ОКОНЧАТЕЛНО сигурен, че това е друга WIFI мрежа?
Има ли начин да промените PHP скрипта по-горепроверете дали клиентът е свързан към WIFI или дали този скрипт все още работи? Тъй като базата данни е твърдо кодирана с адреси IPv6 и IPv4 И ако IPv6 е един адрес, може да има някой, който е свързан към WIFI, но не може да има достъп до страницата, защото не е точно съвпадение на стойността в базата данни.
Моля, поправете ме, ако не е наред.
Благодаря за четенето.
Отговори:
-1 за отговор № 1Както дискутирахме в нашия чат, по-долу е примерният код, който ви дава представа за това как да извършвате чековете си .:
$checkip = $_SERVER["Something with IP"];
$validate = "";
if($checkip == $_SERVER["Some IPv4"])
{
$ip = the IPv4 address
$validate = 4;
}
else
{
$ip = the ipv6 IP
$validate = 6;
}
if($validate == 4)
{
$ip = echo substr($ip, 0, ???); // IPv4 address
}
else
{
$ip = substr($ip, 0, 15); // 2000:950:ac2:3
}
Отново: това е само за да ви дам представа. Трябва да създадете своя собствена функция, за да използвате това правилно. Предлагам да направите това като функция при вход и да дадете променливи на вашата функция. Така че не е нужно да променяте сценария си за други компании, само за променливите, които изпращате. (функцията може просто да се върне true
или false
;
Добър човек!