Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Geleitwort
Vorwort
1 PEAR – Einführung
2 Authentication
3 Caching
4 Date and Time
5 File Formats
6 HTTP
7 Internationalization
8 Mail
9 Networking
10 PHP
11 Text
12 Web Services
13 Benchmarking
14 Configuration
15 Database
16 File System
17 HTML
18 Images
19 Logging
20 Math
21 Numbers
22 Tools and Utilities
23 XML
24 Selbst Pakete erstellen
25 PECL
Index
Ihre Meinung?

Spacer
 <<   zurück
PHP PEAR von Carsten Möhrke
Anwendung und Entwicklung – Erweiterungen für PHP schreiben
Buch: PHP PEAR

PHP PEAR
798 S., 39,90 Euro
Rheinwerk Computing
ISBN 3-89842-580-0
gp 9 Networking
  gp 9.1 Net_IPv4
  gp 9.2 Net_IPv6
  gp 9.3 Net_FTP
  gp 9.4 Net_POP3
  gp 9.5 Net_SMTP
  gp 9.6 Net_CheckIP
  gp 9.7 Net_IDNA
  gp 9.8 Net_Curl
  gp 9.9 Net_Socket
  gp 9.10 Net_UserAgent_Detect

9 Networking

In der Kategorie »Networking« tummeln sich einige Pakete, die Ihnen bei der Erstellung von Applikationen helfen, die sich auf einer recht niedrigen Ebene mit Netzwerkzugriffen befassen. In vielen Fällen ist ein direkter Zugriff auf Protokolle und Ähnliches möglich.

Der Bereich Networking ist mit zurzeit 38 Paketen recht umfangreich. Allerdings sind viele der Pakete sehr speziell, und einige sind inzwischen veraltet, so dass ich nur die zehn meiner Ansicht nach wichtigsten und hilfreichsten herausgegriffen habe.


Rheinwerk Computing

9.1 Net_IPv4  toptop


Besprochene Version: 1.2 Lizenz: PHP-Lizenz 2.0
Klassendatei(en): Net/IPv4.php

Net_IPv4 stellt ein Schweizer Messer für den Umgang mit IP-Adressen der Version 4 dar. IPv4-Adressen sind die klassischen IP-Adressen, wie sie im Internet oder auch im LAN eingesetzt werden. Eine solche Adresse besteht in ihrer üblichen Darstellung aus vier Zahlen, die einen Wert zwischen 0 und 255 (dezimal, hexadezimal von 00 bis FF) haben dürfen. Die Zahlen werden jeweils durch einen Punkt voneinander getrennt. Eine solche Adresse könnte also z. B. 217.160.132.62 lauten. [Eine Einführung in IPv4 finden Sie z. B. unter http://de.wikipedia.org/wiki/IPv4. ]

Ein Großteil der Methoden, die in diesem Paket definiert sind, können statisch genutzt werden. Hierzu zählen auch validateIP() und validateNetmask(). Sie sind dazu vorgesehen, eine IP-Adresse bzw. eine Netzmaske auf Gültigkeit zu prüfen. Beide Methoden bekommen eine IP-Adresse in dezimaler Dotted Quad Notation übergeben und geben einen booleschen Wert zurück, um mitzuteilen, ob der Parameter einen gültigen Wert darstellt.

$ip="12.23.23.23"; 
$mask="255.255.255.0"; 
 
if (true===Net_IPv4::validateIP($ip)) 
{ 
   echo "Die IP-Adresse ist g&uuml;ltig"; 
} 
if (true===Net_IPv4::validateNetmask($mask)) 
{ 
   echo "Die Netzmaske ist g&uuml;ltig"; 
}

Die Methoden können wirklich sehr praktisch sein, wenn Sie entsprechende Eingaben auf Validität überprüfen wollen.

Da es vorkommen kann, dass eine IP-Adresse in einer hexadezimalen Notation vorliegt, sind auch zwei Member-Funktionen zum Konvertieren von einem System ins andere vorgesehen. Die Methode htoa() konvertiert eine hexadezimale Angabe in die übliche Notation und liefert die IP-Adresse als String zurück. Hierzu ist auch eine Umkehrfunktion namens atoh() vorgesehen, die eine IP-Adresse übergeben bekommt und den korrespondierenden hexadezimalen Wert berechnet. Für beide Methoden gilt gleichermaßen, dass sie einen ungültigen Parameter mit false quittieren. Allerdings können IP-Adressen auch als eine natürliche Zahl im dezimalen Zahlensystem dargestellt werden. Für eine entsprechende Konvertierung sind in PHP bereits long2ip() bzw. ip2long() vorgesehen. Nichtsdestotrotz sieht das Paket noch eine eigene Methode zur Umrechnung einer IP-Adresse in eine dezimale Darstellung vor, die ip2double() heißt und auch statisch aufgerufen werden kann.

Aber neben einfachen Überprüfungen und Konvertierungen kann das Paket natürlich noch mehr leisten. So sind beispielsweise Methoden zur Berechnung bzw. Analyse von Netzwerkmasken vorgesehen. Um die Anzahl der Bits zu bestimmen, die in einer Netzmaske gesetzt sind, ist die Methode getNetLength() vorgesehen. Die Maske wird als Parameter übergeben, und die Anzahl der gesetzten Bits wird zurückgeliefert. Die Umkehrfunktion getNetmask() hingegen bekommt die Zahl, wie viele Bits gesetzt sind, übergeben und liefert die Netzmaske zurück.

$mask="255.255.255.0"; 
$bits=22; 
 
echo Net_Ipv4::getNetLength($mask); // Gibt 24 aus 
echo Net_Ipv4::getNetmask($bits);  // Gibt 255.255.252.0 aus

Darüber hinaus ist es mithilfe der Methode getSubnet() auch möglich, das Subnetz aus einer Kombination aus einer IP-Adresse und Netzmaske berechnen zu lassen.

$ip="192.168.254.100"; 
$mask="255.255.255.0"; 
echo Net_Ipv4::getSubnet($ip,$mask); //Gibt 192.168.254.0 aus

Komplexere Analysen – wenn Sie beispielsweise prüfen wollen, ob zwei IP-Adressen in demselben Subnetz liegen – benötigen Net_IPv4-Objekte. Um ein entsprechendes Objekt zu generieren, haben Sie zwei Möglichkeiten. Die erste Variante ist, den Konstruktor zu nutzen und die Eigenschaften ip und netmask dann direkt mit Werten zu belegen.

require_once("Net/IPv4.php"); 
 
$ip="192.168.254.100"; // Zu nutzende IP-Adresse 
$mask="255.255.255.0"; // Netzmaske 
 
$myIP=new Net_IPv4; // Neues Objekt 
$myIP->ip=$ip; // IP setzen 
$myIP->netmask=$mask; // Maske setzen 
 
// Fehlende Werte berechnen 
$erg=$myIP->calculate(); 
// Ist ein Fehler aufgetreten? 
if (PEAR::isError($erg)) 
{ 
   echo $erg->getMessage(); 
} 
 
// Ausgabe aller Werte 
echo "IP: $myIP->ip <br />"; 
echo "IP als Long: $myIP->long <br />"; 
echo "Maske: $myIP->netmask <br />"; 
echo "Gesetzte Bits: $myIP->bitmask <br />"; 
echo "Netzwerk: $myIP->network <br />"; 
echo "Broadcast-Adresse: $myIP->broadcast <br />";

Listing 9.1 Nutzung eines IPv4-Objekts

Wie Sie Listing 9.1 schon entnehmen können, sind die Namen der anderen Eigenschaften long (IP-Adresse in der Darstellung als Dezimalzahl), bitmask (Anzahl der gesetzten Bits in der Netzmaske), network (IP-Adresse des Netzwerks) und broadcast (Broadcast-Adresse des Netzwerks). Die Methode calculate(), die in diesem Listing genutzt wird, berechnet alle fehlenden Werte. Sie setzt nur voraus, dass die IP-Adresse mit der Eigenschaft ip oder long und die Netzmaske mit der Eigenschaft bitmask oder netmask übergeben werden.

Eine zweite Möglichkeit, ein Net_IPv4-Objekt zu generieren, ist die statische Methode parseAddress(), die einen String übergeben bekommt, der aus der IP-Adresse und der angehängten Netzwerkmaske besteht. Die IP-Adresse ist in »Dotted Quad Notation« anzugeben, worauf die Maske, abgetrennt durch einen Slash, folgt. Sie kann entweder genau so, als dezimale Anzahl der gesetzten Bits, oder als hexadezimale Zahl angegeben werden. Die IP-Adresse 192.168.1.23 mit der Maske 255.255.255.0 könnte also sowohl als "192.168.1.23/255.255.255.0", "192.168.1.23/24" oder "192.168.1.23/ FFFFFF00" angegeben werden. Man spricht hierbei auf vom CIDR-Format. Die Methode liefert nicht nur ein Objekt zurück, sondern berechnet auch alle fehlenden Werte, die in den Eigenschaften gespeichert werden.

Die so generierten Objekte können nun mit der Methode inSameSubnet() verglichen werden, um festzustellen, ob die enthaltenen Werte demselben Subnetz entsprechen. inSameSubnet() bekommt zwei Objekte übergeben und prüft, ob die Netzwerke und Masken identisch sind. Trifft das zu, liefert sie ein logisches Wahr zurück; und sie liefert ein logisches Unwahr, wenn die Netze nicht gleich sind. Im Falle eines Fehlers gibt sie ein PEAR_Error-Objekt zurück. Die Methode ipInNetwork() bekommt eine IP-Adresse und ein Net_IPv4-Objekt bzw. eine Kombination aus Adresse und Maske im CIDR-Format übergeben. Eine Übereinstimmung wird mit einem true bestätigt. Auch hier kann im Falle eines unerwarteten Verhaltens ein PEAR_Error-Objekt zurückgegeben werden.

 <<   zurück
     
  Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: PHP PEAR
PHP PEAR
Jetzt Buch bestellen!
 Ihre Meinung?
Wie hat Ihnen das Openbook gefallen?
Ihre Meinung

 Buchtipps
Zum Rheinwerk-Shop: PHP 5.6 und MySQL 5.7






 PHP 5.6 und
 MySQL 5.7


Zum Rheinwerk-Shop: Einstieg in PHP 5.6 und MySQL 5.6






 Einstieg in PHP 5.6
 und MySQL 5.6


Zum Rheinwerk-Shop: Responsive Webdesign






 Responsive Webdesign


Zum Rheinwerk-Shop: Moderne Websites entwickeln






 Moderne Websites
 entwickeln


Zum Rheinwerk-Shop: MySQL 5.6






 MySQL 5.6


 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz
InfoInfo








Copyright © Rheinwerk Verlag GmbH 2007
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern