Visualizzazione dei risultati da 1 a 5 su 5

Discussione: ip & provider

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909

    ip & provider

    Ho appena creato questo script (un pò rozzo) che dovrebbe scrivermi su un file .dat l'equivalente(in termini di provider) di un ip, prendendo le iniziali di ogni ip:
    codice:
    <?
    $addr = $_SERVER['REMOTE_ADDR'];
    $provider1 = "Vodafone";
    $provider2 = "libero";
    
    if (substr($_SERVER['REMOTE_ADDR'],0,2) == '151')
    {
    $stat = "$provider2\n";
    $a = fopen("stat.dat", "a+");
    fputs($a, $stat);
    fclose($a);
    }
    elseif(substr($_SERVER['REMOTE_ADDR'],0,2) == '83')
    {
    $stat = "$provider1\n";
    $a = fopen("stat.dat", "a+");
    fputs($a, $stat);
    fclose($a);
    }
    else 
    { 
    $stat = "$addr\n";
    $a = fopen("stat.dat", "a+");
    fputs($a, $stat);
    fclose($a);
    }
    
    ?>
    sono le x qualche strano mitivo collegandomi con un ip 152.xx.x.xx
    mi restituisce l'ipo invece di "libero"

    potete aiutarmi? grazie!

  2. #2
    mi pare ovvio ... 151 != 152

    e poi ad ogni modo il tuo controllo per ottenere "libero" non potrà mai funzionare:
    substr($_SERVER['REMOTE_ADDR'],0,2) == '151' sarà sempre false perché il tuo substr restituisce solo i primi due numeri dell'IP che sarà dunque SEMPRE diverso da 151.

    Altrimenti nel tuo codice dovresti spostare la parte dove apri, scrivi, chiudi il file dopo il if(){}elseif(){}else{} così al posto di scriverla 3 volta la metti una sola.

    Oltre a questo devo dire che questo metodo lo trovo meno affidabile di quello che ti han dato in un altra discussione quando ti si diceva di parsare il risultato di gethostbyaddr($_SERVER['REMOTE_ADDR']);

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909
    Originariamente inviato da spoon25
    mi pare ovvio ... 151 != 152

    e poi ad ogni modo il tuo controllo per ottenere "libero" non potrà mai funzionare:
    substr($_SERVER['REMOTE_ADDR'],0,2) == '151' sarà sempre false perché il tuo substr restituisce solo i primi due numeri dell'IP che sarà dunque SEMPRE diverso da 151.

    Altrimenti nel tuo codice dovresti spostare la parte dove apri, scrivi, chiudi il file dopo il if(){}elseif(){}else{} così al posto di scriverla 3 volta la metti una sola.

    Oltre a questo devo dire che questo metodo lo trovo meno affidabile di quello che ti han dato in un altra discussione quando ti si diceva di parsare il risultato di gethostbyaddr($_SERVER['REMOTE_ADDR']);
    Ovviamente ho sbagliato a scrivere l'ip che visualizzo è 151 così come nella variabile;
    il metodo che dici gethostbyaddr($_SERVER['REMOTE_ADDR']);proprio non ho capito come usarlo;
    poi, ho capito che l'errore è nel substrato (2 invece di tre) allora basta che cambi ($_SERVER['REMOTE_ADDR'],0,2) con ($_SERVER['REMOTE_ADDR'],0,2)???
    l'altra cosa che non ho capito e dove devo spostare la scrittura del file :master: :master:

    Grazie mille x un'eventuale chiarimento!

  4. #4
    Codice PHP:
    <?php
    switch (substr($_SERVER['REMOTE_ADDR'], 0strpos($_SERVER['REMOTE_ADDR'], '.'))){
        case 
    151:
            
    $stat "libero\n";
            break;
        case 
    83:
            
    $stat "Vodafone\n";
            break;
        default:
            
    $stat "{$_SERVER['REMOTE_ADDR']}\n";
    }


    $a fopen("stat.dat""a+");
    fputs($a$stat);
    fclose($a);
    ?>
    Questa è una possibilità, così se devi aggiungere altri provider è veramente molto rapido ...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    909

    ok

    ottimo direi!
    grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.