+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

blocco IP da una lista

  1. #1
    Tom580933 non è in linea Novello
    Salve a tutti,
    in un mio progetto devo bloccare una lunga lista di indirizzi IP,
    ho quindi scritto la lista in un file chiamato oseclist.txt (sono circa 105.000 indirizzi IP),
    cercando su internet ho trovato un semplicissimo script:
    Codice PHP:
    $deny = array("192.168.1.179","163.172.146.73","etc...etc...etc");
    if (
    in_array ($_SERVER['REMOTE_ADDR'], $deny)) {
       
    header("location: osectom.phpmsg=ban&type=tor&sospect=64&a=ban_type");
       echo 
    "err.access.ip.denied! wait please!";
       exit(); 
    //esco dall'include

    Ebbene, io non posso ogni volta modifiare un array nella pagina, sarebbe scomodissimo e non affatto automatico, quindi ho pensato di mettere tutti gli IP nello stesso formato: "ip","altro_ip","ancora_un_ip","etc..."
    e di mettere al posto di
    Codice PHP:
    $deny = array("ip","ip","ip"...); 
    questo:
    $deny = array(file_get_contents("oseclist.txt"); ma non funziona, eppure non capisco come mai, ho provato pure a mettere file("oseclist.txt") e non cambia nulla, non restituisce nessun errore sia chiaro, solamente che non mi vieta l'accesso da un ip che si trova nella lista.
    Qualcuno sa come posso risolvere?
    Grazie mille!

  2. #2
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Nidificare le funzioni abbrevia il codice, ma non aiuta in fase di debug. Cerca prima di scoprire se file_get_contents() dà il risultato atteso ponendolo in una variabile. In caso affermativo esamina alcuni elementi dell'array $deny. Infine verifica se in_array() restituisce true usando un indirizzo IP sicuramente presente nell'array al posto di $_SERVER['REMOTE_ADDR'].
    ℹ️ Leggi di più su Brontolo ...

  3. #3
    Tom580933 non è in linea Novello
    Ciao Brontolo,
    grazie per la risposta, ma l'ho rifatto da zero e ora funziona, visto che potrebbe essere utile anche ad altri posto il codice:

    Codice PHP:
    $array =  explode(','file_get_contents("oseclist.txt"));
    foreach (
    $array as $item){
        if (
    $item==$_SERVER['REMOTE_ADDR']){
            
    //utente bandito!
        
    }
    }
    exit(); 
    e ora finalmente funziona, ho solo dovuto rimuovere tutte le virgolette della lista oseclist.txt e splittare per , gli IP.
    Avevo provato a fare come dicevi tu, ma non ha funzionato.
    Tom

  4. #4
    L'avatar di Brontolo
    Brontolo non è in linea Very Important Person
    Il mio suggerimento non era per "farlo funzionare", ma per individuare la causa del mancato funzionamento. E' probabile che anche nel tuo primo tentativo di soluzione il problema fosse legato alla presenza delle virgolette. A mio parere non bisogna accontentarsi che una cosa "funzioni", è bene capire il perché .
    ℹ️ Leggi di più su Brontolo ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Risposte: 5
    Ultimo Post: 08-08-2016, 09:20
  2. Blocco Cella
    Da zymarco nel forum Microsoft Excel
    Risposte: 2
    Ultimo Post: 16-10-2012, 14:45
  3. Blocco dei programmi
    Da maurov nel forum Altri linguaggi e strumenti
    Risposte: 4
    Ultimo Post: 05-02-2009, 11:42
  4. Blocco IF
    Da tippolo nel forum Visual Basic 6
    Risposte: 5
    Ultimo Post: 26-01-2007, 12:29
  5. Pc in blocco
    Da franperug nel forum Microsoft Windows
    Risposte: 1
    Ultimo Post: 17-11-2004, 14:40