Chcem obmedziť prístup k používateľom, ktorí nie súpripojený k jednej z WIFI konkrétnej spoločnosti. Takže napríklad máme spoločnosť a táto spoločnosť má dve rôzne WIFI siete na pripojenie. Chcel by som dať prístup iba na stránku, ak je klient pripojený jedným z týchto WIFI.
- IPv4 jednej z WIFI je napríklad: 123.45.65.101
- IPv6 inej WIFI je napríklad: 2000: 980: CE5: 1: 4dd9: 47ad: ff9b: 4454
Nasledujúci PHP skript fungoval perfektne v čase, kde bola len adresa 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();
}
Kde $ ip_adres_allow -> pole hodnôt uložených v databáze
Moje otázky sú:
Viem, že adresy IPv4 sú rovnaké podľa WIFInezmení sa. Ale adresa IPv6 je rovnaká? Zachoval som niekoľko IPv6 adries od spoločnosti a zdá sa, že začínajú v roku 2000: 980: ce5: 1: XXXX: XXXX: XXXX: XXXX (zatiaľ čo X nie sú rovnaké) Znamená to WIFI má rozsah IPv6?
- Je 2000: 980: ce5: 1: 4dd9: 47ad: ff9b: 4454 rovnaký WIFI ako 2000: 980: ce5: 1: 55de: de7d: df6e: ea62 napríklad? Alebo je to definitívne istá, že ide o inú sieť WIFI?
Existuje spôsob, ako upraviť PHP skript nači je klient pripojený k jednej z WIFIov? Alebo by mal tento skript stále fungovať? Pretože databáza je hardcoded s IPv6 a IPv4 adresami.A ak IPv6 je jedna adresa, môže byť niekto, kto je pripojený k WIFI, ale nemôže získať prístup k stránke, pretože nie je presná zhoda s hodnotou v databáze.
Prosím opravte ma, ak im zle.
Vďaka za prečítanie.
odpovede:
-1 pre odpoveď č. 1Ako sme hovorili v našom rozhovore, nižšie je vzorový kód, ktorý vám poskytne predstavu o tom, ako vykonať vaše kontroly:
$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
}
Opäť: toto je len na to, aby ste nám poskytli predstavu. Musíte vytvoriť svoju vlastnú funkciu, aby ste to správne používali. Navrhujem, aby ste túto funkciu vykonali pri prihlasovaní a poskytli premenné vašej funkcii. Takže nemusíte upravovať svoj skript pre iné spoločnosti, iba premenné, ktoré odosielate. (funkcia by sa mohla jednoducho vrátiť true
alebo false
;
Veľa šťastia!