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.
    • T
      thedarkita ModSenior • ultima modifica di

      Ciao hiwap3,

      Puoi fare un explode, in modo da ottenre 4 variabili con le 4 parti dell'ip, e successivamente crearti le tue regole...
      Altrimenti puoi usare le espressioni regolari.

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • H
        hiwap3 User Attivo • ultima modifica di

        Praticamente vorrei un codice che rileva l'ip. Se l'ip è un range bloccato mi stampa una pagina di errore accesso..
        Ma il codice non so come crearlo 😞

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • F
          filippotoso User Attivo • 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 • 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 • 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 • 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 • 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 • 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 • 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 • 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 • 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 • 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