Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. Accesso a range
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • F
      filippotoso User Attivo • 7 dic 2008, 08:40 ultima modifica di

      Ci sono principalmente due metodi:

      • Usare una accoppiata IP/Netmask (es. 192.168.1.0/255.255.255.0)
      • Usare una espressione regolare (es. 192.168.1.*)

      Per gli IP/Netmask puoi dare una occhiata alla classe Pear Net_IPv4:

      pear.php.net/package/Net_IPv4

      Il metodo ipInNetwork() dovrebbe fare al caso tuo.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • H
        hiwap3 User Attivo • 7 dic 2008, 08:54 ultima modifica di

        Ma nessuno riesce a buttarmi giù un codice che faccia al caso mio???:(

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • F
          filippotoso User Attivo • 7 dic 2008, 09:21 ultima modifica di

          Studiati questo codice:

          [php]<?php

          function ip2double($ip) {
          return (double)(sprintf("%u", ip2long($ip)));
          }

          function in_network($ip, $netip = '192.168.0.0', $netmask = '255.255.255.0') {

          $network = long2ip(ip2long($netip) & ip2long($netmask));
          $broadcast = long2ip(ip2long($netip) | (ip2long($netmask) ^ ip2long("255.255.255.255")));    
          
          $net = ip2double($network);
          $bcast = ip2double($broadcast);
          $ip = ip2double($ip);
          if ($ip >= $net && $ip <= $bcast) {
              return true;
          }
          return false;
          

          }

          var_dump(in_network('192.168.1.1', '192.168.1.0', '255.255.255.0'));
          var_dump(in_network('192.168.1.1', '192.168.2.0', '255.255.255.0'));
          var_dump(in_network('192.168.1.1', '192.168.0.0', '255.255.0.0'));
          var_dump(in_network('10.1.1.1', '10.2.0.0', '255.255.0.0'));

          ?>[/php]

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • H
            hiwap3 User Attivo • 7 dic 2008, 09:39 ultima modifica di

            😮
            Io ne avevo fatto uno opposto per bloccare dei range.
            Ora lo voglio ammettere solo quelli della lista, e inserivo il codice

            10...*
            151...*

            e quelli che iniziavano cosi venivano bloccati...nel tuo non capisco perchè metti tutti quei numeri 😄

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • F
              filippotoso User Attivo • 7 dic 2008, 10:22 ultima modifica di

              @hiwap3 said:

              nel tuo non capisco perchè metti tutti quei numeri 😄
              Il primo parametro ($ip) è l'IP che desideri verificare.
              Il secondo parametro ($netip) è l'IP della rete (es. 10.0.0.0, 151.0.0.0, etc.).
              Il terzo parametro ($netmask) è la netmask, la maschera di rete utilizzata per "calcolare" il range di IP.

              Nel tuo caso avresti dovuto utilizzare un codice come questo:

              [php]$block = !in_network($_SERVER['REMOTE_ADDR'], '10.0.0.0', '255.0.0.0');
              // ...
              $block = !in_network($_SERVER['REMOTE_ADDR'], '151.0.0.0', '255.0.0.0');[/PHP]

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • H
                hiwap3 User Attivo • 7 dic 2008, 10:27 ultima modifica di

                E per mettere una pagina di errore in php integrata se il range è compreso??

                tipo:

                NON TI è PERMESSO ACCEDERE!

                Come lo faccio???:S

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • H
                  hiwap3 User Attivo • 7 dic 2008, 10:28 ultima modifica di

                  La variabile block nel codice di prima dov'era???:o

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • F
                    filippotoso User Attivo • 7 dic 2008, 10:44 ultima modifica di

                    Il codice di prima era dimostrativo. La chiamata a var_dump() serviva a visualizzare il valore restituito da in_network().

                    Per aggiungere il controllo ti basta un ciclo (es. per ciclare su più coppie ip/netmask) ed una variabile. Ad esempio:

                    [php]<?php

                    function ip2double($ip) {
                    return (double)(sprintf("%u", ip2long($ip)));
                    }

                    function in_network($ip, $netip = '192.168.0.0', $netmask = '255.255.255.0') {

                    $network = long2ip(ip2long($netip) & ip2long($netmask));
                    $broadcast = long2ip(ip2long($netip) | (ip2long($netmask) ^ ip2long("255.255.255.255")));    
                    
                    $net = ip2double($network);
                    $bcast = ip2double($broadcast);
                    $ip = ip2double($ip);
                    if ($ip >= $net && $ip <= $bcast) {
                        return true;
                    }
                    return false;
                    

                    }

                    $ranges = array();
                    $ranges[] = array('ip' => '10.0.0.0', 'netmask' => '255.0.0.0');
                    $ranges[] = array('ip' => '151.0.0.0', 'netmask' => '255.0.0.0');

                    $blocked = false;
                    foreach ($ranges as $range) {
                    $blocked = $blocked || in_network($_SERVER['REMOTE_ADDR'], $netip = '192.168.0.0', $netmask = '255.255.255.0');
                    }

                    if ($blocked) {
                    die('NON TI è PERMESSO ACCEDERE!');
                    }

                    echo('Accesso consentito');

                    ?> [/php]

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • H
                      hiwap3 User Attivo • 7 dic 2008, 11:26 ultima modifica di

                      mmm...se non disponibile che apra la pagina notaccess.php in automatico e se disponibile la normale homepage???:D

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • H
                        hiwap3 User Attivo • 8 dic 2008, 11:34 ultima modifica di

                        :mmm:

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        Caricamento altri post
                        Rispondi
                        • Topic risposta
                        Effettua l'accesso per rispondere
                        • Da Vecchi a Nuovi
                        • Da Nuovi a Vecchi
                        • Più Voti