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

Discussione: blocco IP da una lista

  1. #1
    Tom580933 non è in linea Novello
    Post
    19

    Question blocco IP da una lista

    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
    Post
    2,723
    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'].
    Il regolamento del forum: la prima cosa da leggere.

  3. #3
    Tom580933 non è in linea Novello
    Post
    19
    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
    Post
    2,723
    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é .
    Il regolamento del forum: la prima cosa da leggere.

+ Rispondi al Thread

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi