Riconoscimento pc nella rete intranet

Discussione in 'PHP' iniziata da wolfland, 14 Luglio 2015.

  1. wolfland

    wolfland Nuovo Utente

    Registrato:
    14 Luglio 2015
    Messaggi:
    9
    Mi Piace Ricevuti:
    0
    Punteggio:
    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.
     
  2. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    16.028
    Mi Piace Ricevuti:
    146
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
  3. wolfland

    wolfland Nuovo Utente

    Registrato:
    14 Luglio 2015
    Messaggi:
    9
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    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
     
  4. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    16.028
    Mi Piace Ricevuti:
    146
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
  5. wolfland

    wolfland Nuovo Utente

    Registrato:
    14 Luglio 2015
    Messaggi:
    9
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    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?
     
  6. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    16.028
    Mi Piace Ricevuti:
    146
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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
     
  7. wolfland

    wolfland Nuovo Utente

    Registrato:
    14 Luglio 2015
    Messaggi:
    9
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    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
     
  8. Pieroz

    Pieroz Moderatore Membro dello Staff MOD

    Registrato:
    18 Luglio 2012
    Messaggi:
    543
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    Occupazione:
    Tecnico Informatico, Help Desk, Networking
    Località:
    Altino
    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!
     
  9. wolfland

    wolfland Nuovo Utente

    Registrato:
    14 Luglio 2015
    Messaggi:
    9
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    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.
     
  10. Pieroz

    Pieroz Moderatore Membro dello Staff MOD

    Registrato:
    18 Luglio 2012
    Messaggi:
    543
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    Occupazione:
    Tecnico Informatico, Help Desk, Networking
    Località:
    Altino
    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!
     
  11. Pieroz

    Pieroz Moderatore Membro dello Staff MOD

    Registrato:
    18 Luglio 2012
    Messaggi:
    543
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    Occupazione:
    Tecnico Informatico, Help Desk, Networking
    Località:
    Altino
    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
     
  12. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    16.028
    Mi Piace Ricevuti:
    146
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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
     
  13. wolfland

    wolfland Nuovo Utente

    Registrato:
    14 Luglio 2015
    Messaggi:
    9
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    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);
     
  14. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    16.028
    Mi Piace Ricevuti:
    146
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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
    }
    ?>
     
  15. Pieroz

    Pieroz Moderatore Membro dello Staff MOD

    Registrato:
    18 Luglio 2012
    Messaggi:
    543
    Mi Piace Ricevuti:
    2
    Punteggio:
    18
    Occupazione:
    Tecnico Informatico, Help Desk, Networking
    Località:
    Altino
    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!
     
Sto caricando...

Condividi questa Pagina