/ / PHP IPv6 и IPv4 Адреси специфичен достъп до уеб страница - php, ip, ipv6, access, ipv4

PHP IPv6 и IPv4 адреси специфичен достъп до уеб страница - php, ip, ipv6, access, ipv4

Искам да огранича достъпа до потребители, които не сасвързани с един от 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;

Добър човек!