IT-Academy Logo
Sign Up Login Help
Home - Programmieren - PHP - IP Adresse validieren



IP Adresse validieren

IP Adressen bestehen aus 4 Segmenten. Sollte ein Segment fehlen oder größer als 255 sein, so ist die IP nicht gültig. Mit dieser Funktion können Sie IP-Adressen auf ihre Gültigkeit hin überprüfen.


Autor: ()
Datum: 08-12-2003, 22:37:45
Referenzen: Keine
Schwierigkeit: Anfänger
Ansichten: 13208x
Rating: 4.63 (8x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



Sie wollen überprüfen, ob ein User eine gültige IP Adresse eingegeben hat? Kein Problem: Diese PHP-Funktion hilft Ihnen.
<?php

function checkip($ip) {

    
// Überprüfen, ob eine IP angegeben wurde
    
if($ip == "") {
        
        die(
"Es wurde keine IP Adresse angegeben.");
        
    }
    else {
    
        
// Segmente der IP Adresse in ein Array einlesen
        
$part split("[.]"$ip);
        
        
// Wenn... Keine 4 Segmente gefunden wurde
        
if(count($part) != 4) {
        
            die(
"Die IP Adresse ist nicht vollständig.");
        
        }
        else {
        
            
// Start einer Schleife für die Überprüfung jedes einzelnen Segments
            
for($i=0$i<count($part); $i++) {
            
                
// Wenn... Das Segment nicht nur aus Ziffern besteht
                
if(!is_numeric($part[$i])) {
                
                    die(
"Die IP Adresse ist nicht numerisch.");
                
                }
                else {
                
                    
// Wenn... Ein Segment größer als 255 ist
                    
if($part[$i] > 255) {
                    
                        die(
"Ein Teilstück der IP Adresse ist grö&szli;ger als 255.");
                    
                    }
                
                }
            
            }
        
        }
            
    }
    
    
// Noch nicht abgebrochen? -> True zurückliefern
    
return true;
    
}

?>

Benutzung der Funktion:

checkip("127.0.0.1");
Ausgabe: (nichts - IP ist gültig)

checkip("127.a.a.1");
Ausgabe: Die IP Adresse ist nicht numerisch.

checkip("127.256.256.1");
Ausgabe: Ein Teilstück der IP Adresse ist größer als 255.

checkip("127.0.1");
Ausgabe: Die IP Adresse ist nicht vollständig.

checkip("");
Ausgabe: Es wurde keine IP Adresse angegeben.


paedubucher
Professonial
Beitrag vom:
18-06-2006, 14:39:07

Weiteres rund um IP-Adressen

Ist jedoch für C: http://www.it-academy.cc/content/article_browse.php?ID=1444

Vielleicht sollte ich den Code auch mal optimieren, habe ich eigentlich als Vorbereitung für meine Zwischenprüfung letzten Herbst geschrieben...

-----------------------------------------------------


PodBot
Rookie
Beitrag vom:
15-02-2006, 01:29:34

Sinn(los)

Wie du schon sagtest erkennt man eine gültige IP an seine 4 (111.2222.333.4444) Stellen und keine Überschreitung der 255-Grenze. Lobenswert das Wissen über diesen IP-Bereich, aber letzendlich ist es nichts anderes, wie eine simple Einführung in Kontrollstrukturen. Denn jedes Auge würde eine gültige IP schneller erkennenm, als sie irgendwo raus zu pasten/tippen.. Aber netter Stoff zum posern vor Leuten, denen PHP bisher ein unbekanntes Phänomen war. Sorry für den Gefühlsausbruch .. ^^

-----------------------------------------------------


picard
Professonial
Beitrag vom:
17-12-2003, 21:06:13

Rumgeschnipselt...

Hi Dominik, ich hab jetzt Deinen Artikel wieder freigegeben, nachdem Du ihn ja wieder in die Queue gesetzt hast. Ich hoffe, Du hast alle "Fehler" gefunden, die bei der Konvertierung passiert sind.

-----------------------------------------------------
"...denn wir arbeiten nicht nur um uns selbst zu verbessern, sondern auch den Rest der Menschheit!"



Senior Member
Beitrag vom:
13-12-2003, 20:16:57

gut, dass du das sagst: ich bemerke gerade, dass da einer an meinem artikel rumgeschnippelt hat!!! der eingeschickte artikel sah nicht so aus!!!

-----------------------------------------------------


TheDude
Junior-Member
Beitrag vom:
13-12-2003, 19:06:26

offensichtlich verstehst du nicht was ich meine, daher werde ich versuchen mich klarer auszudrücken. ITA sollte ein forum sein, wo fortgeschrittene/profis für anfänger posten, und nicht anfänger für anfänger. Wie soll ein anfänger, der du einer zu sein scheinst, wissen wie man es richtig macht? Wenn jeder der einmal in der schule oder uni ein wenig php gelernt hat hier anfängt zu posten wird das niveau noch weiter sinken als es jetzt schon teilweise ist. Ich freue mich wenn user leicht verständlichen code für anfänger posten, aber dein schnippsel hier lässt mich sauer aufstossen. Konkret: if($ip == "") geht, aber ist schiach, weil das ist mehr C style als php. Besser: if(!isset($ip)). Nächstes: split("[.]", $ip); Frage: was haben hier die eckigen Klammern verloren? Nichts. Und letztlich: Die ganzen "die" statements haben hier nichts verloren, und gehören durch "return"s ersetzt, ich hab kein interesse daran dass mich eine funktion aus dem kompletten laufenden script schmeisst, sondern ich will einen return-wert haben auf den ich entsprechend reagieren kann. Ach ja, und was soll for($i=0; $i 255) bitte darstellen?

-----------------------------------------------------
while (!asleep()) sheep++;



Senior Member
Beitrag vom:
13-12-2003, 12:46:08

Ok, die von dir genannte Funktion ist um einiges kürzer, aber ich glaub kaum, dass man Anfängern solche ereg Ausdrücke zumuten sollte. Und wir wollen ja nicht, dass hier nur ein Copy'n'Paste rauskommt. Außerdem wird bei der kurzen Funktion nur ein "True" oder "False" zurückgegeben. Das bedeutet, der User weiß nicht, welchen Fehler er gemacht hat.

-----------------------------------------------------


TheDude
Junior-Member
Beitrag vom:
11-12-2003, 20:19:09

"Dann versuch das mal mit php zu machen!" Geh bitte, du hast doch keine ahnung was php eigentlich kann, vielleicht solltest du mal auf php.net gehen, du wirst dich wundern was du alles bitweise rechnen kannst. "Außerdem ist die Schwierigkeit für Anfänger gedacht." Darum geht es nicht, dein code ist einfach schiarch und schlecht, anfänger hin oder her. Google spuckt z.B. einen wunderbaren 10-zeiler aus, der für jeden verständlich ist: www.astalavista.ch/index.php?page=220

-----------------------------------------------------
while (!asleep()) sheep++;



Senior Member
Beitrag vom:
11-12-2003, 19:07:52

Dann versuch das mal mit php zu machen! Außerdem ist die Schwierigkeit für Anfänger gedacht.

-----------------------------------------------------


TheDude
Junior-Member
Beitrag vom:
10-12-2003, 09:10:20

naja

also "Die IP Adresse ist nicht numerisch" seh ich nirgends in deinem code. Ich bin auch nicht sonderlich begeistert davon, um ehrlich zu sein. Du scheinst nicht viel erfahrung zu haben, was programmieren angeht. Die von dir angestrebte funktion kann man in ein paar wenigen zeilen mittels bit-arithmetik verwirklichen. Da finde ich es schon interessanter, ob die IP Adresse global routbar ist oder nicht, oder ob sie mit der netzwerkmaske zusammenpasst...

-----------------------------------------------------
while (!asleep()) sheep++;


[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04510
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06247
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0