Riconoscimento pc nella rete intranet

wolfland

Nuovo Utente
14 Lug 2015
16
0
1
Salve a tutti, come da titolo, dovrei realizzare un portale intranet in PHP e avrei bisogno di sapere se un utente che accede al portale fa parte o meno della rete intranet, quindi se si trova all'interno dell'azienda. C'è un modo per implementare questo controllo?
Grazie.
 
con $_SERVER['REMOTE_ADDR'] recupero l'ip di chi si connette, ma mi serve sapere se quell'ip fa parte della intranet... cercavo uno script che facesse un controllo del genere
 
Mmm... no a me non serve un programma "impacchettato" ma solo codice PHP che mi permette di sapere se l'IP di chi vuole accedere alla intranet ne fa parte o no. In poche parole, so l'IP dell'utente che accede ($_SERVER['REMOTE_ADDR']) e ora? Posso verificare se questo fa parte della mia rete? Come? Con cosa lo confronto?
 
ciao
se conosci i tuoi ip
PHP:
<?php
$ip_intranet=array('10.10.10.10','20.20.20');//se conosci quali sono gli ip del tuo intranet
if(in_array($_SERVER['REMOTE_ADDR'], $ip_intranet)){
	//è intranet
}else{
	//non è intranet
}
?>
però ora avviso un moderatore che se ne intende di reti in modo che se sa ti dia una risposta migliore
 
Esattamente una cosa del genere mi serve... ora, l'array con gli indirizzi ip devono essere necessariamente scritti a mano (li recupero facendo un ipconfig sulla intranet?) nello script o esiste un modo di ricavarli in automatico?
Del tipo:

$ip_intranet=$_SERVER['RANGE DI INDIRIZZI INTRANET'];

e poi fare il confronto con l'IP che tenta l'accesso con l'if che hai proposto tu
 
Ciao a tutti,
Purtroppo di PHP ne capisco poco :( voi state troppo avanti! :P

Dal codice scritto ho comunque interpretato quello che volete fare.
Purtroppo bisognerebbe capire se il range il PHP lo interpreta bene.
Per identificare la propria intranet basta fare un ipconfig da command. Verrà fuori ad esempio
IP:192.168.1.x
Mask:255.255.255.0

Nelle configurazioni degli apparati di rete per identificare questo network è sufficiente scrivere 192.168.1.0/24 , ma non so se per il PHP è lo stesso!
 
ok, quindi in definitiva, l'ip della intranet si può ottenere solo tramite ipconfig, da qui segnarmi a mano tutti gli indirizzi che butta fuori e inserirli in un array per il confronto.
Siccome non ho mai avuto a che fare con le reti, ipconfig sulla intranet, mi restituisce tutti gli ip? come faccio a sapere quali sono tutti gli ip di cui dispone la rete in oggetto? Cioè, ipconfig mi restituisce IP 192.168.1.0 192.168.1.1 192.168.1.2 ecc...? o mi restituisce un unico ip 192.168.1.x dove so che x va da 0 a 9 (quindi il range degli indirizzi IP che la rete supporta)? La rete che tipo di ip può avere? Nel senso può essere anche 192.168.xxx? se così, il range di xxx che valori può assumere?
Mi scuso per le domande forse banali, ma ripeto, di reti non sono ferrato.
 
Ciao,
Fai una cosa, fai ipconfig dal tuo PC e posta qui il risultato che ti aiuto io a capire quanti IP ha la tua rete! tranquillo!
 
Cerco di spiegarti...
Ogni devide di una rete deve avere un IP per lavorare in rete. Questo IP deve essere univoco non può essere ripetuto.
A seconda della grandezza della rete uno può scegliere la grandezza della network.
La storia qui diventa complicata però ti faccio solo qualche esempio di come si taglia "DI SOLITO" una rete.

In una rete home si usano gli ip 192.168.1.x. Al posto della x ci può essere un valore che va dal numero 1 al numero 255.
Per ogni gruppo di numeri di può usare un numero da 1 a 255, quindi la tua rete può avere anche 192.168.250.x.

Spero che fino a qui sia stato chiaro. le reti private possono usare solo alcune classi di ip, la 192.168 è l'unica che può essere usata privatamente da 192.168.1.1 a 192.168.255.255.
Tutti gli altri IP sono pubblici e non devono essere usati internamente!

Per identificare la grandezza della rete a questo punto bisogna segmentare. questo si fa con la maschera (subnet mask).
Se io scrivo 192.168.1.1 mask 255.255.255.0 signfica che gli unici IP accettati in quella rete sono dal 192.168.1.1 al 192.168.1.255

Questa network si può scrivere più semplicemente 192.168.1.0/24, perchè quando trovi 255.255.255.0 è un a/24. Qui si apre un altro dibattito! ma è meglio che ci fermiamo qui
 
ciao
pieroz è digiuno di php e io di reti, però potrei consigliarti di fare una prova
ti fai il seguente file php (chiamalo es prova_ip.php)
PHP:
<?php
echo "<pre>";
var_dump($_SERVER['REMOTE_ADDR']);
echo "</pre>";
?>
lo carichi sul server, vai su un pc della rete e lo richiami così vedi cosa ti restituisce
puoi andare su un altro e riprovare così vedi le differenze

poi, ma questo non lo so, se usando ipconfig ti restituisce molti ip con un po' di accorgimenti si può accelerare il semplice scriverli manina_manina uno ad uno
poi per vedere cosa ti restituisce l'ipconfig il sistema migliore è lanciarlo e guardare
 
Allora, al momento sto lavorando in locale sulla mia macchina e non posso verificare ancora l'ip della intra...
Pieroz, sei stato molto chiaro, penso di aver capito la dinamica e la cosa mi fa quasi dubitare di aver capito :D
Quindi, mettiamo caso che con ipconfig ottenga un indirizzo 192.168.x.x, ora so che le x possono variare da 1 a 255 ed avere per cui una serie di indirizzi 192.168.50.120 192.168.22.30 e così via. In base a ciò, posso riempire l'array con tutti questi indirizzi, inserire da 192.168.1.1 a 192.168.255.255.
Ora, sarebbe interessante il discorso della subnet mask, nel senso che:
spero che ci sia un modo migliore e alternativo che scrivere a mano un array con tutti quegli indirizzi, sto pensando ad una cosa tipo, ok l'indirizzo ip è 192.168.x.x e la sub mask è questa 255.255.255.0 (oppure /24), quindi questo è l'array degli ip che possono essere accettati da questa rete.

$arrayIP=calcola_range($IP,$subMASK);
 
ciao pieroz
scusa per capire meglio (e quindi trasformare in php) in una rete tutti gli ip sono caratterizzati da 192.168 giusto o ho capito male?
quindi basterebbe verificare l'esistenza del gruppo 192.168, da cui
PHP:
<?php
$ip=$_SERVER['REMOTE_ADDR'];
if(strpos($ip,"192.168") !== 0){//oppure != FALSE
	// è della rete
}else{
	//non è della rete
}
?>
 
gli ip privati possono essere da 192.168.1.1 a 192.168.255.255, quindi si il 192.168 c'è sempre.
Poi ci sono altri ip interni da 172.10.1.1 a 172.20.255.255 e tutta la 10.1.1.1 a 10.255.255.255... questi li ho sparati, non mi ricordo a memoria tutte le networks! :P

Comunque facciamo prima se si fa questo ipconfig su una macchina in quella rete. Fatto quello vi dico subito quanti IP ci sono su quella rete.

Le maschere funzionao a seconda di dove sta la x. 192.168.1.x (quindi da 192.168.1.1 a 192.168.1.255) maschera 255.255.255.0 oppure /24.
Altrimenti 192.168.x.x (quindi da 192.168.1.1 a 192.168.255.255) maschera 255.255.0.0 oppure /16...

Questo è il modo più semplice che mi viene in mente per spiegare le maschere!
 

Discussioni simili