[PHP] Provider Zuweisung

Dieses Thema im Forum "Webentwicklung" wurde erstellt von freakZ, 29. April 2012 .

Schlagworte:
  1. 29. April 2012
    Provider Zuweisung

    hi,

    folgende frage wie bewerkstellige ich es einen webseiten besucher anhand der IP zu sagen bei welchem ISP dieser ist.

    Idee IP anfänge wie 84.112 oder auch 84.114 z.b zu sagen du benuzt Chello bei usern die eine IP haben die mit 86.123 und 86 beginnt ->du hast tele2

    bitte um hilfe wie ich sowas am performantesten programmieren kann
     
  2. 29. April 2012
    AW: Provider Zuweisung

    Dafür solltest du auf eine Fertige Datenbank zurückgreifen!

    [G]IP to provider database[/G]
     
  3. 29. April 2012
    AW: Provider Zuweisung

    hey

    danke nur das is zu viel des guten es ist wirklich nur für einen mini member bereich daher sollte da eher was kleines passen und nur der provider anhand von anfangs zahlen "ausgelesen" werden.
     
  4. 29. April 2012
    AW: Provider Zuweisung

    https://apps.db.ripe.net/search/query.html

    Weiß nicht ob die ne API haben, aber da haste dann auf jeden Fall die richtigen Daten..
    Und international scheint ja auch zu funzen..
     
  5. 30. April 2012
    AW: Provider Zuweisung

    Danke für die Postings nur das ist vieeeeeeeel zu überzogen, es geht einfach darum mir bekannte ip bereiche / blöcke in eine liste einzutragen und dann bei einem besuch zu sagen du hast , tele2 du hast inode - das ganze dient für einen kleinen internen chat .. daher sind sagen wie ip2location und ripe komplett übertrieben..
     
  6. 30. April 2012
    AW: Provider Zuweisung

    Warum ist das Übertrieben ? Wenns ne api gibt ist das das einfachste. Und wenn nicht gehts mit CURL.

    Ich würde sagen das es viel mehr stress ist das sich jetzt selber zu programmieren, als was fertiges zu benutzen...
     
  7. 30. April 2012
    Zuletzt bearbeitet: 30. April 2012
    AW: Provider Zuweisung

    Nur versteht ihr da leider alle viel zu viel ..

    Es geht kurzgesamt um folgendes meine freunde logen sich in diesen kleinen chat ein , da ich gerne wissen möchte mit welchem provider die da sind (so kann ich sagen die sind @home oder @work oder @handy) - dazu brauch ich keine API oder ähnliches aufgepushtes.

    Sondern ich dachte wie schon im Startpost definiert an eine art ip block 'vergabe' wo ich sage wenn ip 84.112 oder 86.111 dann = chello / ist es aber 89.121 oder 86.134 = inode mehr möcht ich nicht - keine genaue IP befindet sich in Vienna und so .. sondern echt nur eine minimal angabe für meine zwecke.

    Quasi wie hier die sperrung der IPS.:
    PHP:
    <? php 
    $remotehost 
    gethostbyaddr ( $_SERVER [ 'REMOTE_ADDR' ]);
    $pro  gethostbyaddr ( $_SERVER [ 'REMOTE_ADDR' ]);
    $pro1  strstr ( $pro '.' );
        if (
    $pro1  ==  '.dip.t-dialin.net' ){ 
           
    $provider  "Dt. Telekom"
           } 
    elseif (
    $pro1  ==  '.hsi.kabelbw.de' ){ 
           
    $provider  "Kabel BW"
           }
    elseif (
    $pro1  ==  '.pools.arcor-ip.net' ){ 
           
    $provider  "ARCOR"
           }
    elseif (
    $pro1  ==  '' ){ 
           
    $provider  "lokal" ;        
    }  
      else { 
           
    $provider  "noch nicht bekannt"
           }             
           
    echo 
    "<p>Ihre IP-Adresse lautet: "  $_SERVER [ 'REMOTE_ADDR' ] .  ". Ihre Einwahlnummer ist: "  $remotehost  ". Ihr Internetanbieter ist: "  $provider  "</p>" ;
    ?>


    Nun müsst ihr mir helfen das noch auf ip blöcke zu erweitern
     
  8. 30. April 2012
    Zuletzt bearbeitet: 30. April 2012
    AW: Provider Zuweisung

    Ja und genau das macht doch die Datenbank vom RIPE.... >_<
    Du sendest die IP da hin und bekommst den Namen des Providers zurück..
    Was ist da das Problem?
    Warum willst du dir selbst was zusammenbasteln, wenns schon was bestehendes gibt..
    Wenn du dir das selbst zusammenbaust, musste dann auch alle möglichen Provider aufnehmen..
    Und nehmen wir an du hast dann alle möglichen in Österreich, was ist wenn einer der Kumpels in Deutschland im Urlaub ist oder was weiß ich wie und wo...

    //EDIT:
    http://apps.db.ripe.net/whois/lookup/ripe/inetnum/84.112.212.31.xml

    Einfach parsen mit dem XML-Parser von PHP und schon haste den Provider..
     
  9. 30. April 2012
    AW: Provider Zuweisung

    Es is mir einfach zu over dressed da immer eine abfrage hinsenden - da ich meinen personengreis eingrenzen kann und dieser sich innerhalb ATs befindet reicht es vollkommen ..

    Es gibt bei uns genau 7 - 10 Provider in AT die benutzt werden diese zu integrieren ist ein hops .. ausserdem die geolocation abfrage @ripe und co gibt ja auch stadt und co zurück was ich nicht brauche also warum ne anfrage hinballern?
     
  10. 30. April 2012
    AW: Provider Zuweisung

    weil mans kann..

    versteh dein problem auch nicht. die lösung die oben geschrieben wurde ist die einfachste..
     
  11. 30. April 2012
    AW: Provider Zuweisung

    Wenn sich deine Freunde mit einer neuen (unbekannten) IP einloggen/anmelden, kannst du doch diese IP abfragen und das Ergebnis cachen. Nur wenn der gleiche Freunde mit einer neuen IP sich wieder anmeldet/einloggt, musst du erneut einen Request senden. Sehe hier also niemanden, der mir Gewehren auf Spatzen schießen will.
     
  12. 30. April 2012
    AW: Provider Zuweisung

    Ja nur warum sollte ich chacen und ko wenn es simpler geht und man dazu keinerlei zig 1000 codezeilen und apis und datenbanken benötigt.

    Es geht darum es ist ein mobilechat wo ich mit meinen leuten chatte , und da diese entweder fixe ips (@ work - @ home) oder dynamische (@ unterwegs), so kann ich dies zuordnen.

    Da es bei uns in AT nur wirklich 10 provider gibt und handy anbieter würde es komplett reichen die IP bereiche einfach zu filtern und zu sagen alles was mti 213.47.*.* reinkommt = chello

    Aber bitte dann seh ich das hier als gescheitert denn für so ne mini winzi sache eine API usen halt ich für übertrieben und unsinnig!
     
  13. 30. April 2012
    AW: Provider Zuweisung

    Also man kann sowas cool programmieren und nicht so cool...
    Wenn du deinen nicht so coolen Weg einschlagen willst, dann bitte...

    Du nimmst die IP des Clients und machst daraus mit ip2long() nen Integer..
    Das gleiche aus deinen Adress-Bereichen (oder speicherst sie gleich so) und vergleichst dann ob es größer als der 1. und kleiner als der 2. Wert ist..
    Das wars...

    Und der coole Weg ist die Abfrage an die RIPE Datenbank zu schicken, den von bis bereich in eine lokale DB oder Datei zu schreiben (um zu cachen) und dann beim nächsten mal zuvor daraus mit der oben genannten Methode abzugleichen..

    Have fun!
     
  14. 30. April 2012
    AW: Provider Zuweisung

    Wenn deine Leute je zwei statische und eine dynamische IP haben, frag doch einfach beim ersten Login ab, wo sie sich gerade befinden.

    Beim nächsten Login schaust du, ob die IP schon vorhanden ist. Wenn ja, weißt du wo die Leute sitzen. Wenn nicht vorhanden, einfach erneut abfragen. Das machst du, bis du 3 unterschiedliche Typen hast. Fertig.

    Ansonsten kannst du halt die IP-Adressen auch einfach kürzen. Quasi nach den zwei ersten Blöcken abbrechen.

    PHP:
    $ip  '127.0.0.1' ;
    $parts  explode ( '.' $ip );

    if ( 
    '1270'  ==  $parts [ 0 ]. $parts [ 1 ] ) {
    echo 
    "Localhost?" ;
    }

     
  15. 1. Mai 2012
    AW: Provider Zuweisung


    Klingt schon sehr sehr fein - auch wenn ich nun nerven muss in meinem oben beispiel wie würdest du das angehen um performant zu lösen?
     
  16. 1. Mai 2012
    AW: Provider Zuweisung

    So wie es theQuest in seinem Beispiel gemacht hat. Das sind nurn paar if abfragen. Solange es sich nur um einen kleinen chat handelt sollte jeder server/webspace damit klar kommen. Oder hab ich die frage falsch verstanden?
     
  17. 1. Mai 2012
    AW: Provider Zuweisung

    Kannst noch cachen und die IP's zwischenspeichern. Aber wird kaum was bringen wenn es so klein ist.
     
  18. 1. Mai 2012
    Zuletzt bearbeitet: 1. Mai 2012
    AW: Provider Zuweisung

    PHP:
    <? php
        
    function  getProvider ( $remote $list ) {
            foreach(
    $list  as  $provider  =>  $range ) {
                if(
    $remote  >=  ip2long ( $range [ 'from' ]) &&  $remote  <=  ip2long ( $range [ 'to' ]))
                    return 
    $provider ;
            }
            return 
    false ;
        }
        
        
    $providerList  = Array(
            
    "Chello"  => Array(
                
    "from"     =>  "84.112.0.0" ,     // oder gleich das Ergebnis von ip2long("84.112.0.0") dort rein
                
    "to"     =>  "84.115.43.7"     // oder gleich das Ergebnis von ip2long("84.115.43.7") dort rein
            
    ),
            
    "Lokal"  => Array(
                
    "from"     =>  "192.168.0.0" ,
                
    "to"     =>  "192.168.0.255"
            
    )
        );
        
        if((
    $provider  getProvider ( ip2long ( $_SERVER [ 'REMOTE_ADDR' ]),  $providerList )) !==  false )
            echo 
    $provider ;
    ?>
    Einfach das Array erweitern um deine Provider..
    Und am besten den Wert von ip2long direkt dort speichern und das ip2long in der if-Abfrage rausnehmen..

    Viel Spaß
     
  19. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.