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

Inhaltsverzeichnis
Vorwort
Geleitwort des Fachgutachters
1 Einführung
2 Mathematische und technische Grundlagen
3 Hardware
4 Netzwerkgrundlagen
5 Betriebssystemgrundlagen
6 Windows
7 Linux
8 Mac OS X
9 Grundlagen der Programmierung
10 Konzepte der Programmierung
11 Software-Engineering
12 Datenbanken
13 Server für Webanwendungen
14 Weitere Internet-Serverdienste
15 XML
16 Weitere Datei- und Datenformate
17 Webseitenerstellung mit (X)HTML und CSS
18 Webserveranwendungen
19 JavaScript und Ajax
20 Computer- und Netzwerksicherheit
A Glossar
B Zweisprachige Wortliste
C Kommentiertes Literatur- und Linkverzeichnis
Stichwort

Download:
- ZIP, ca. 6,7 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
IT-Handbuch fuer Fachinformatiker von Sascha Kersken
Der Ausbildungsbegleiter
Buch: IT-Handbuch fuer Fachinformatiker

IT-Handbuch fuer Fachinformatiker
4., aktualisierte und erweiterte Auflage, geb.
1.152 S., 34,90 Euro
Galileo Computing
ISBN 978-3-8362-1420-9
Pfeil 13 Server für Webanwendungen
Pfeil 13.1 HTTP im Überblick
Pfeil 13.1.1 Ablauf der HTTP-Kommunikation
Pfeil 13.1.2 HTTP-Statuscodes
Pfeil 13.1.3 HTTP-Header
Pfeil 13.2 Der Webserver Apache
Pfeil 13.2.1 Apache im Überblick
Pfeil 13.2.2 Apache-Module
Pfeil 13.2.3 Apache installieren
Pfeil 13.2.4 Apache-Konfiguration
Pfeil 13.3 PHP installieren und einrichten
Pfeil 13.3.1 Installation
Pfeil 13.3.2 Die PHP-Konfigurationsdatei php.ini
Pfeil 13.4 Zusammenfassung

Missionare müssen indianisch lernen – mit lateinisch bekehrt man keine Indianer. – Kurt Tucholsky

13 Server für Webanwendungen

Bereits in Kapitel 6, »Windows«, 7, »Linux« und 8, »Mac OS X«, haben Sie einige Netzwerk-Serverdienste kennengelernt. Dort ging es um Datei- und Druckserver, die vornehmlich im lokalen Netzwerk von Firmen und Organisationen eingesetzt werden. In diesem und dem nächsten Kapitel werden dagegen Internet-Server behandelt, die für den systemunabhängigen Fernzugriff durch viele, oft anonyme Benutzer konzipiert wurden, aber auch oft im lokalen Intranet eingesetzt werden.

Im vorliegenden Kapitel erfahren Sie, wie Sie eine Infrastruktur für datenbankgetriebene PHP-Webanwendungen einrichten – ein LAMP- oder WAMP-System aus Linux beziehungsweise Windows, Apache, MySQL und PHP. [Wenn Sie ein BSD-UNIX verwenden, müsste die Konstellation »BAMP« heißen, mit Mac OS X »MAMP« und so weiter. Ein weiter unten angesprochenes Kompaktpaket aus all diesen Anwendungen heißt daher XAMPP – X für das austauschbare Betriebssystem sowie Apache, MySQL, PHP und Perl. ] Die Entwicklung der zugehörigen Anwendungen wird in Kapitel 18, »Webserveranwendungen«, beschrieben.


XAMPP

Für einen reinen Entwicklerrechner gibt es eine interessante Alternative, die sämtliche benötigte Software in einem Schritt installiert und auf Knopfdruck startbar macht: Laden Sie sich XAMPP von http://www.apachefriends.org herunter. Das Paket ist für Windows, Linux und Mac OS X verfügbar.



Galileo Computing - Zum Seitenanfang

13.1 HTTP im Überblick Zur nächsten ÜberschriftZur vorigen Überschrift

Wie bereits erwähnt, kommunizieren Webserver und Browser über das TCP/IP-Anwendungsprotokoll HTTP (Hypertext Transfer Protocol). Wie die meisten Internet-Protokolle der Anwendungsebene ist es klartextbasiert und besteht aus einigen Client-Befehlen sowie Server-Antworten in einem bestimmten Format. Es handelt sich also um ein Request/Response-Verfahren (Anfrage und Antwort).


Galileo Computing - Zum Seitenanfang

13.1.1 Ablauf der HTTP-Kommunikation Zur nächsten ÜberschriftZur vorigen Überschrift

Die HTTP-Kommunikation läuft von der Dokumentanforderung durch den Browser bis zur Darstellung oder Speicherung des empfangenen Dokuments wie folgt ab:

1. Der Browser zerlegt die URL in Schema, Hostname, gegebenenfalls Portnummer und Ressourcenteil (Pfad). Er ermittelt per DNS die IP-Adresse zum Hostnamen und stellt eine TCP-Verbindung zu ihr her. Falls keine Portnummer angegeben wurde, wird je nach Schema 80 (http:) oder 443 (https:, das heißt HTTP über eine gesicherte Verbindung) gewählt. Bei der URL http://buecher.lingoworld.de/fachinfo/index.html ist das Schema beispielsweise http:, woraus sich Port 80 ergibt; der Hostname ist buecher.lingoworld.de und der Pfad /fachinfo/index.html.
2. Über die TCP-Verbdindung sendet der Browser eine HTTP-Anfrage. Die erste Zeile besteht aus HTTP-Methode, Pfad und Protokollversion. Wenn Sie eine URL in den Browser eintippen, ist die Methode immer GET; das bedeutet, dass eine Ressource geliefert werden soll. Eine andere wichtige Methode ist POST; sie wird zum Versenden umfangreicherer Formulardaten oder gar für Datei-Uploads aus dem Browser verwendet. Tabelle 13.1 zeigt eine Übersicht über die verfügbaren Methoden.

Tabelle 13.1 Alle HTTP-Methoden im Überblick

HTTP-Methode Seit HTTP-Version Bedeutung

GET

0.9

Dokument anfordern

HEAD

1.0

Nur Header anfordern

POST

1.0

Formulardaten oder Dateien senden

PUT

1.0

Datei auf dem Server speichern

DELETE

1.0

Datei vom Server löschen

LINK

1.0

Verknüpfung erzeugen

UNLINK

1.0

Verknüpfung löschen

TRACE

1.1

Proxies anzeigen

CONNECT

1.1

Proxy-Zugriff auf gesicherte Server

OPTIONS

1.1

Liste verfügbarer Optionen anfordern


Im vorliegenden Beispielfall lautet die Startzeile der Anfrage:
GET /fachinfo/index.html HTTP/1.1
Auf diese Anforderung folgen mehrere Header-Zeilen im Format »Headername: Wert«. Bei HTTP/1.1-Anfragen muss stets der Header Host gesendet werden, da unter derselben IP-Adresse mehrere virtuelle Hosts betrieben werden können; andere Anfrage-Header sind freiwillig.
3. Der Server empfängt die Client-Anfrage und reagiert darauf. Bei einer GET-Anfrage liefert er in den meisten Fällen einfach die angeforderte Datei aus. Falls es sich dagegen um ein serverseitiges Skript oder Programm im Rahmen einer Webanwendung handelt, wird dieses zunächst vom zuständigen Servermodul oder externen Interpreter ausgeführt, anschließend wird seine Ausgabe (meist ein HTML-Dokument, manchmal auch ein anderer Dateityp wie etwa ein dynamisch generiertes Bild) als Antwort an den Browser geschickt.
Auch die Server-Antwort besitzt einen Header-Bereich. Die erste Zeile besteht aus der Protokollversion sowie einer Statusinformation aus Codenummer und standardisiertem Text. Falls das angeforderte Dokument geliefert werden kann, lautet diese Zeile:
HTTP/1.1 200 OK
Ein weiterer häufiger Statuscode ist 404 Not Found; er besagt, dass die angeforderte Ressource nicht gefunden wurde. Nach der Statuszeile folgen diverse Antwort-Header. Der wichtigste ist Content-Type; er gibt den MIME-Type des mitgelieferten Dokuments an. Eine Leerzeile trennt die Header vom Body, der die eigentliche Ressource enthält. [Verwechseln Sie die Header und den Body der HTTP-Antwort nicht mit Head und Body eines HTML-Dokuments. Letztere sind beide Bestandteil eines HTML-Dokuments und damit des Antwort-Bodys. ]

Zum Schluss nimmt der Browser den Body der Server-Antwort entgegen und zeigt ihn je nach Datentyp selbst an (zum Beispiel HTML-Dokumente und bestimmte Bild- oder Multimediadateien) oder bietet ihn zum Speichern auf Datenträger an. Außerdem speichert er viele gelieferte Dokumente in seinem Cache, damit zuvor angeforderte Dateien nicht nochmals heruntergeladen werden müssen.

Hier ein Beispiel für eine komplette GET-Anfrage:

GET /fachinfo/index.html HTTP/1.1 
Accept: */* 
Accept-Language: de, en-US 
Accept-Encoding: gzip, deflate 
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 
i-NavFourF; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2) 
Host: buecher.lingoworld.de 
Connection: Keep-Alive

Die Header dieser Anfrage haben folgende Bedeutung:

  • Accept: */* Jeder beliebige MIME-Type (Typ/Untertyp) wird akzeptiert. Das heißt lediglich, dass der Browser keinen bestimmten Datentyp bevorzugt, aber nicht, dass er auch jeden verarbeiten könnte.
  • Accept-Language: de, en-US Wenn der Server mehrere Sprachvarianten einer Ressource zur Wahl stellt, bevorzugt dieser Browser Deutsch und US-Englisch in der angegebenen Reihenfolge.
  • Accept-Encoding: gzip, deflate Der Browser ist in der Lage, GNUZip- oder ZIP-komprimierte Ressourcen anzunehmen und selbst zu entpacken; wenn ein Server dies unterstützt, spart es Netzwerkbandbreite.
  • User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; i-NavFourF; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.2) Dies ist die Angabe der Browserversion, die der Server zum Umgang mit Inkompatibilitäten auswerten kann sowie zu statistischen Zwecken in seine Logdateien schreibt. Hierbei handelt es sich um den Microsoft Internet Explorer 7.0 unter Windows XP. [Der interne Name vieler Browser lautet »Mozilla«, weil die gleichnamige Echse das Maskottchen des ersten grafischen Browsers NCSA Mosaic war, von dem sowohl der Internet Explorer als auch Netscape und die heutigen Mozilla-Browser abstammen ]
  • Host: buecher.lingoworld.de Wie bereits erwähnt, ist dies ein Pflicht-Header, der bestimmt, welcher virtuelle Host angesprochen wurde.
  • Connection: Keep-Alive Der Browser fordert an, dass der Server die TCP-Verbindung nach dem Versand der aktuellen Antwort offenhalten soll. Dies beschleunigt den Seitenaufbau, weil beispielsweise für jedes eingebettete Bild eine weitere Anfrage erforderlich ist, die über eine bereits geöffnete Verbindung schneller bearbeitet werden kann.
    • Bei einer erfolgreichen Anfrage könnte die Server-Antwort beispielsweise so aussehen:
HTTP/1.1 200 OK 
Date: Thu, 16 Apr 2009 12:18:57 GMT 
Server: Apache/2.2.9 (Unix) 
Last-Modified: Mon, 22 Sep 2008 10:21:37 GMT 
ETag: "1b380f2-1ba9-454723b1" 
Accept-Ranges: bytes 
Content-Length: 7081 
Content-Type: text/html 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 
4.0//Transitional//EN"> 
<html> 
<head> 
[...]

Hier die Bedeutung der Antwort-Header:

  • Date: Thu, 16 Apr 2009 12:18:57 GMT Datum und Uhrzeit des Servers
  • Server: Apache/2.2.9 (Unix) Versionsinformationen des Servers; die Ausführlichkeit kann mithilfe der weiter unten vorgestellten Direktive ServerTokens geändert werden
  • Last-Modified: Mon, 16 Sep 2008 10:21:37 GMT Datum und Uhrzeit der letzten Änderung; wird vom Browser verwendet, um – zum Beispiel per HEAD-Anfrage – zu entscheiden, ob eine eventuell noch im Cache befindliche Version aktuell ist
  • ETag: "1b380f2–1ba9–454723b1" Ein Hash-Wert aus Metadaten wie Änderungsdatum und Dateigröße, der Aufschluss über die Identität einer Ressource gibt und so ebenfalls für Cache-Entscheidungen verwendet werden kann.
  • Accept-Ranges: bytes Der Server kann auf Wunsch Teile eines Dokuments ausliefern, wenn der Browser in einem Range-Header die gewünschten Byte-Grenzen mitteilt – dies ist etwa praktisch, um abgebrochene Downloads später fortzusetzen.
  • Content-Length: 7081 Länge des gelieferten Bodys in Byte
  • Connection: keep-alive Der Server bestätigt die Bitte des Browsers, die Verbindung offenzuhalten.
  • Content-Type: text/html Der bereits erwähnte MIME-Type des Bodys, der wichtigste Antwort-Header. Im vorliegenden Beispiel handelt es sich um den Haupttyp Text und den Untertyp HTML.

Galileo Computing - Zum Seitenanfang

13.1.2 HTTP-Statuscodes Zur nächsten ÜberschriftZur vorigen Überschrift

Es wurde bereits erwähnt, dass jede HTTP-Antwort eine Statusmeldung enthält, bestehend aus Codenummer und Beschreibungstext. Die Codes werden anhand ihrer ersten Ziffer in folgende Gruppen unterteilt:

  • 1xx – Information
  • 2xx – Erfolgsmeldungen
  • 3xx – Umleitungsmeldungen
  • 4xx – Client-Fehler
  • 5xx – Server-Fehler

Zur ersten Gruppe, den informativen Meldungen, gehören nur zwei Statuscodes: 100 Continue besagt, dass der Server eine vorbereitende Anfrage erhalten hat und auf eine Fortsetzung wartet. 101 Switching Protocols gibt an, dass der Server auf die im Header Upgrade angegebene HTTP-Version wechseln möchte. Beides kommt relativ selten vor.

Statuscodes, die mit 2 beginnen, zeigen eine erfolgreiche Verarbeitung der Anfrage an. Die häufigste dieser Antworten ist 200 OK; sie wird bei fast allen erfolgreichen GET-, HEAD-, POST- und DELETE-Anfragen zurückgeliefert.

3xx-Statuscodes sind für Weiterleitungen zuständig. Diese werden unter anderem verwendet, wenn ein serverseitiges Skript zwar Formulardaten verarbeitet, aber keine eigene Ausgabe erzeugt. In diesem Fall kann es einen Location-Header mit einer Weiterleitungs-URL senden, zusammen mit einem der Statuscodes 301 Moved Permanantly, 302 Found, 303 See Other oder 307 Temporary Redirect. Der Status 304 Not Modified dient dagegen als Antwort auf HEAD-Anfragen, die es dem Browser erlaubt, ein Dokument aus seinem Cache anzuzeigen.

4xx-Statuscodes zeigen verschiedene Fehlerzustände an, die aufgrund einer fehlerhaften oder unvollständigen Client-Anfrage zustandegekommen sind. Der häufigste Header dieser Gruppe ist sicherlich 404 Not Found; er kommt sowohl bei Tippfehlern im Ressourcenteil einer eingegebenen URL als auch bei fehlerhaften oder veralteten Links vor. 401 Unauthorized wird gesendet, wenn der Server eine Benutzeranmeldung erwartet; dies wird weiter unten erläutert. Bei 403 Forbidden ist der Zugriff dagegen grundsätzlich verboten; auch eine Authentifizierung würde nichts daran ändern.

5xx-Statuscodes schließlich bezeichnen Fehler, die aufgrund eines serverseitigen Pro-blems entstanden sind. Der häufigste dieser Fehler, 500 Internal Server Error, kommt unter anderem oft vor, wenn Sie bei der Programmierung eigener Webanwendungen Fehler machen. Einzelheiten über den Fehler stehen in diesem Fall in der Error-Logdatei Ihres Webservers (siehe unten).

In Tabelle 13.2 sehen Sie noch einmal alle Statuscodes im Überblick.


Tabelle 13.2 Übersicht über die HTTP-Statuscodes

Statuscode Übliche Meldung Beschreibung

100

Continue

Anfrage erhalten; der Server erwartet Fortsetzung.

101

Switching Protocol

Der Server möchte auf die angegebene Protokollversion wechseln.

200

OK

Die Anfrage war erfolgreich; die angeforderte Ressource wird geliefert.

201

Created

PUT-Anfrage zur Speicherung einer Datei auf dem Server war erfolgreich

202

Accepted

Die Anfrage wurde erfolgreich verarbeitet.

203

Non-Authoritative

Die gelieferten Informationen stammen von einem Proxy; ihre Gültigkeit wurde nicht verifiziert.

204

No Content

Anfrage OK; die Antwort enthält keinen Body.

205

Reset Content

Der Client soll ein Formular zurücksetzen.

206

Partial Content

Anfrage enthält nur einen Teil der Ressource; der Header Content-Range gibt den Bereich an.

300

Multiple Choices

Es sind mehrere Ressourcen der gewünschten Ressource verfügbar; der Body enthält eine Liste mit entsprechenden Links.

301

Moved Permanently

Ressource wurde dauerhaft an die angegebene Stelle verschoben

302

Found

Vorübergehend verschoben

303

See Other

Die Ressource ist unter der angegebenen URL zu finden.

304

Not Modified

Die Ressource wurde nicht geändert.

305

Use Proxy

Der Client wird aufgefordert, die Anfrage an den angegebenen Proxy zu senden.

307

Temporary Redirect

Vorübergehend verschoben

400

Bad Request

Syntaxfehler in der Anfrage

401

Unauthorized

Authentifizierung wird angefordert.

402

Payment Required

Micropayment wird benötigt (noch nicht implementiert)

403

Forbidden

Zugriff verweigert

404

Not Found

Die Ressource existiert nicht.

405

Method Not Allowed

Unerlaubte HTTP-Methode (ein Allow-Header gibt die zulässigen Methoden an)

406

Not Acceptable

Der Datentyp der Ressource ist nicht akzeptabel.

407

Proxy Authentication Requested

Ein Proxy-Server fordert Authentifizierung an.

408

Request Timeout

Zulässige Wartezeit überschritten

409

Conflict

Ein Konflikt verhindert die Ausführung der Anfrage, etwa beim Versuch, mittels PUT eine ältere als die vorhandene Version zu speichern.

410

Gone

Die Ressource ist nicht mehr vorhanden.

411

Length Required

Für den Anfrage-Body wird ein Content-Length-Header benötigt.

412

Precondition Failed

Eine vom Client geforderte Vorbedingung konnte nicht erfüllt werden.

413

Request Entity Too Long

Zu großer Anfrage-Body

414

Request-URI Too Long

Die Anfrage-URL selbst ist zu lang (kann bei GET-Anfragen mit angehängten Formulardaten vorkommen).

415

Unsupported Media Type

Der Server akzeptiert den Datentyp des Anfrage-Bodys nicht.

416

Request Range Not Satisfiable

Im Range-Header wurde ein Bereich angefordert, der nicht existiert.

417

Expectation Failed

Eine Erwartung aus dem Expect-Header konnte nicht erfüllt werden.

500

Internal Server Error

Fehler in einem serverseitigen Programm

501

Not Implemented

Die Methode oder Funktionalität wird vom Server nicht unterstützt.

502

Bad Gateway

Fehlerhafte Server- oder Proxy-Antwort

503

Service Unavailable

Ein Dienst steht zurzeit nicht zur Verfügung.

504

Gateway Timeout

Timeout einer Proxy-Anfrage

505

HTTP Version Not Supported

Der Server unterstützt die angegebene HTTP-Version nicht.



Galileo Computing - Zum Seitenanfang

13.1.3 HTTP-Header topZur vorigen Überschrift

Wie bereits erwähnt enthalten HTTP-Anfrage und -Antwort verschiedene Header im Format

Header-Name: Wert[, Wert ...]

Die Namen der Header bestehen aus Buchstaben und Bindestrichen; Groß- und Kleinschreibung spielen keine Rolle. Falls ein Header mehrere Werte besitzt, werden diese durch Komma getrennt.

Neben den in RFCs definierten offiziellen HTTP-Header können Server und Clients auch beliebige zusätzliche Header senden. Gemäß der Konvention sollten solche Erweiterungs-Header stets mit X- beginnen, also beispielsweise X-My-Header heißen.

Tabelle 13.3 zeigt alle offiziellen HTTP-Standard-Header. Die einzelnen Spalten der Tabelle haben folgende Bedeutung:

  • Header Der Name des jeweiligen Headers
  • Seit Version Gibt die HTTP-Version an, in der der jeweilige Header eingeführt wurde: HTTP/1.0 gemäß RFC 1945 oder HTTP/1.1 (RFC 2616). Die nachträglich so benannte Vorabversion HTTP/0.9 besaß noch keine Header, sondern nur die Anfrage- beziehungsweise Statuszeile.
  • Anfr. (Anfrage) Angekreuzt, wenn der Header in einer HTTP-Anfrage stehen kann
  • Antw. (Antwort) Angekreuzt für Header, die in einer HTTP-Antwort vorkommen können
  • Ent. (Entity) Angekreuzt für Header, die den Body der Anfrage beziehungsweise Antwort beschreiben
  • Bedeutung Kurze Beschreibung der Aufgaben des Headers

Tabelle 13.3 Alle offiziellen HTTP-Header im Überblick

Header seit Version Anfr. Antw. Ent. Bedeutung

Accept

1.0

X

MIME-Types, die der Client akzeptiert

Accept-Charset

1.0

X

Zeichensätze, die der Client akzeptiert

Accept-Encoding

1.0

X

Komprimierungsformate, die der Client akzeptiert

Accept-Language

1.0

X

Sprachen, die der Client akzeptiert

Accept-Ranges

1.1

X

Server kann Anfragen nach Dokumentteilen beantworten.

Age

1.1

X

Zeitspanne seit der letzten Änderung

Allow

1.0

X

X

Erlaubte HTTP-Methoden (mit Status 405)

Authorization

1.0

X

Anmeldedaten für geschützte Bereiche (Antwort auf WWW-Authenticate)

Cache-Control

1.1

X

X

Einstellungen für Caching der Ressource

Connection

1.0

X

X

Verbindung geöffnet halten (keep-alive) oder schließen (close)

Content-Encoding

1.0

X

X

X

Komprimierungsformat des Body-Inhalts

Content-Language

1.0

X

X

X

Sprache des Body-Inhalts

Content-Length

1.0

X

X

X

Länge des Body-Inhalts in Byte

Content-Location

1.1

X

X

Alternative URL der angeforderten Ressource

Content-MD5

1.1

X

X

X

MD5-Hash des Body-Inhalts zur Konsistenzprüfung

Content-Range

1.1

X

X

X

Start- und Endbyte des gelieferten Bereiches bei Teillieferungen

Content-Type

1.0

X

X

X

MIME-Type der gelieferten Ressource

Cookie

1.0

X

Lieferung eines Cookies, das der Browser zuvor von der angeforderten URL empfangen hatte

Date

1.0

X

X

Serverdatum und -uhrzeit bei Auslieferung

ETag

1.1

X

Eine aus diversen Meta-Informationen berechnete ID, z. B. zur Aktualitätsprüfung

Expect

1.1

X

Ankündigung des Clients, dass vor einer Anfrage mit Body 100 Continue erwartet wird

Expires

1.0

X

X

»Verfallsdatum« der gelieferten Ressource (für Caching)




Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück
  Zum Katalog
Zum Katalog: IT-Handbuch für Fachinformatiker






IT-Handbuch für Fachinformatiker
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Tipp
Zum Katalog: Coding for Fun







 Coding for Fun


 Buchempfehlungen
Zum Katalog: Linux






 Linux


Zum Katalog: PC-Netzwerke






 PC-Netzwerke


Zum Katalog: Einstieg in SQL






 Einstieg in SQL


Zum Katalog: PHP 5.3 und MySQL 5.1






 PHP 5.3 und
 MySQL 5.1


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Visual C# 2008






 Visual C# 2008


Zum Katalog: C von A bis Z






 C von A bis Z


Zum Katalog: C++ von A bis Z






 C++ von A bis Z


Zum Katalog: Windows Server 2008






 Windows Server 2008


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2009
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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de