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

Inhaltsverzeichnis
Vorwort
1 Einleitung
2 Die Installation
3 Erste Schritte
4 Linux als Workstation für Einsteiger
5 Der Kernel
6 Die Grundlagen aus Anwendersicht
7 Die Shell
8 Reguläre Ausdrücke
9 Konsolentools
10 Die Editoren
11 Shellskriptprogrammierung mit der bash
12 Die C-Shell
13 Benutzerverwaltung
14 Grundlegende Verwaltungsaufgaben
15 Netzwerkgrundlagen
16 Anwendersoftware für das Netzwerk
17 Netzwerkdienste
18 Mailserver unter Linux
19 LAMP
20 DNS-Server
21 Secure Shell
22 Die grafische Oberfläche
23 Window-Manager und Desktops
24 X11-Programme
25 Multimedia und Spiele
26 Prozesse und IPC
27 Bootstrap und Shutdown
28 Dateisysteme
29 Virtualisierung und Emulatoren
30 Softwareentwicklung
31 Crashkurs in C und Perl
32 Einführung in die Sicherheit
33 Netzwerksicherheit überwachen
A Lösungen zu den einzelnen Aufgaben
B Kommandoreferenz
C X11-InputDevices
D MBR
E Die Buch-DVDs
F Glossar
G Literatur
Stichwort

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

Spacer
 <<   zurück
Linux von Johannes Pl&ouml;tner, Steffen Wendzel
Das umfassende Handbuch
Buch: Linux

Linux
geb., mit 2 DVDs
1302 S., 39,90 Euro
Galileo Computing
ISBN 978-3-8362-1704-0
Pfeil 19 LAMP
  Pfeil 19.1 Apache
    Pfeil 19.1.1 Den Apache verwalten
  Pfeil 19.2 MySQL
    Pfeil 19.2.1 Administration
    Pfeil 19.2.2 SQL
    Pfeil 19.2.3 APIs
  Pfeil 19.3 PHP
    Pfeil 19.3.1 (X)HTML
    Pfeil 19.3.2 PHP-Support im Apache aktivieren
    Pfeil 19.3.3 PHP lernen
    Pfeil 19.3.4 PHP und MySQL
  Pfeil 19.4 Zusammenfassung
  Pfeil 19.5 Aufgaben


Galileo Computing - Zum Seitenanfang

19.3 PHP  Zur nächsten ÜberschriftZur vorigen Überschrift

Auch wenn viele »Informatiker« bei der Frage nach ihren Programmierkenntnissen die Sprache HTML angeben, so hat die Hypertext Markup Language rein gar nichts mit Programmierung an sich zu tun. (X)HTML ist eine reine Seitenbeschreibungssprache.


Eine Seitenbeschreibungssprache wie HTML beschreibt nur das Aussehen und die Struktur von Dokumenten, aber nicht ihr Verhalten.


Mit anderen Worten: Man kann mit HTML zwar sagen, dass ein fettgedruckter Text neben einem Bild mit grüner Schrift auf blauem Untergrund erscheinen soll, jedoch muss man diesen Text bereits bei der Erstellung des Dokuments von Hand statisch eintragen.

Dynamischer Inhalt

Möchte man diesen Text dynamisch erstellen und beispielsweise die beim Aufruf jeweils aktuelle Uhrzeit anzeigen, dann kommen Skriptsprachen wie PHP ins Spiel. Dazu muss der Webserver selbstverständlich entsprechend konfiguriert sein, schließlich soll das nun dynamische Dokument zuerst durch einen Parser gejagt werden, der die Skriptbefehle auswertet und am Ende pures (X)HTML ausspuckt. Diese Ausgabe wird bei jedem Aufruf neu erzeugt, bevor sie schließlich an den Client geschickt wird.


Galileo Computing - Zum Seitenanfang

19.3.1 (X)HTML  Zur nächsten ÜberschriftZur vorigen Überschrift

Bevor wir uns also den eigentlichen Skriptsprachen widmen, möchten wir ein paar Worte über (X)HTML verlieren. An erster Stelle steht dabei die Frage, was das X bei XHTML bedeutet und wo der Unterschied zu HTML liegt.

Die Geschichte von HTML

Dazu müssen wir uns kurz die Geschichte von HTML in Erinnerung rufen. Die Sprache wurde 1989 von Tim Berners-Lee und Robert Caillau entwickelt, um mit dem ebenfalls entwickelten HTTP-Protokoll ein verteiltes Informationssystem für ihre Arbeit am CERN Kernforschungsinstitut zu erleichtern. Damals wurde HTML in erster Linie zur Strukturierung von Textdaten gebraucht; Elemente für die Visualisierung wurden erst später hinzugefügt.

Diese Erweiterungen führten zu bekannten Problemen: Da die Spezifikationen zur Darstellung anfangs recht ungenau und sogar unvollständig waren, gab es Spielräume bei der Interpretation und der Darstellung von HTML-Seiten. Die daraus resultierenden Unterschiede von Webseiten im Internet Explorer oder im Netscape Navigator führten so manchen Webdesigner bis an den Rand des Suizids.

XML

Später entwickelte man auf Basis des erfolgreichen HTML die Strukturierungssprache XML. Diese Sprache wurde regelrecht hochgejubelt: man könne mit ihr »alles machen«! Und das stimmt in gewissem Sinne auch: XML definiert nur, wie ein Dokument strukturiert sein muss. Es wurden ganze Bücher über dieses Thema geschrieben, jedoch lässt sich das Wichtigste zu XML in wenigen Sätzen zusammenfassen:


Mit XML strukturiert man seine Daten durch Tags und Attribute. Tags können Attribute enthalten und weitere Tags umschließen. Dazu muss jedem Start-Tag <Tag> ein schließendes Tag </Tag> folgen.


XHTML ist nun nichts anderes als XML-konformes HTML. Da XML selbst keine Aussage dazu macht, welche Tags beziehungsweise Attribute erlaubt sind, definiert man sogenannte Schemas. Und im passenden XHTML-Schema sind eben die für XHTML vorgesehenen Werte definiert.

HTML »programmieren«

Referenzen

Wie »programmiert« man nun eigentlich HTML? Für einen Einführungskurs eignet sich am besten die Online-Referenz http://de.selfhtml.org sowie natürlich auch die Referenz des World Wide Web Consortiums http://www.w3c.org.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Text des Titels</title>
</head>
<body>
<h2>Überschrift</h2>
<p>Text im Absatz</p>
</body>
</html>

Listing 19.27  Beispiel für eine HTML-Datei


In diesem kleinen Beispiel ist zu erkennen, dass eine Webseite mit der Überschrift »Überschrift« und einem Absatz mit dem Text »Text im Absatz« erstellt wurde. Die Tags <h2> und <p> sind dabei intuitiv nach der Strukturierung benannt: heading bedeutet »Überschrift«, und paragraph ist das englische Wort für »Absatz«.


Einige Designrichtlinien

Heutzutage rückt mit XML und dem künftigen Standard XHTML 2.0 die eigentliche Aufgabe von HTML wieder mehr in den Vordergrund: das Strukturieren des Inhalts. Die Visualisierung sollte dagegen über CSS-Stylesheets vorgenommen werden.

Tabellen versus divs

Für entsprechende Anpassungen eignen sich besonders die <div>-Tags, da diese kein festgeschriebenes Erscheinungsbild aufweisen und so frei konfiguriert werden sollen. Vor allem sollte man von einer Layout-Gestaltung mittels Tabellen Abstand nehmen und auf eben diese divs zurückgreifen. Mit einer solchen Umsetzung des Layouts hat man in der Regel auch in exotischen Browsern kaum Darstellungsprobleme und trägt sogar zur Barrierefreiheit des Internets bei.

Einsteiger neigen des Weiteren auch dazu, auf einer »Homepage« alles unterbringen zu wollen, was sie können oder im Web finden. Bunte, blinkende, mit GIF-Grafiken überladene Webseiten sind die Folge. Weniger ist da meistens mehr. Und Sie wollen doch auch nicht, dass Ihre Webseite aussieht, als sei sie von einem unter Drogen gesetzten Zehnjährigen entworfen worden.

Jedenfalls gibt es im Netz viele gute Seiten – allen voran natürlich die vom W3C (www.w3c.org) –, auf denen man viel über Webdesign und die typischen Fehler lernen kann.


Galileo Computing - Zum Seitenanfang

19.3.2 PHP-Support im Apache aktivieren  Zur nächsten ÜberschriftZur vorigen Überschrift

Modul laden

Bevor wir nun die ersten dynamischen Webseiten programmieren wollen, müssen wir den PHP-Support im Apache aktivieren. Dazu wird ein spezielles Modul benötigt, das in der Konfigurationsdatei auch geladen werden will:

$ cat /etc/apache2/mods-enabled/php5.conf
<IfModule mod_php5.c>
AddType application/x-httpd-php .php .phtml .php3
AddType application/x-httpd-php-source .phps
</IfModule>
$ cat /etc/apache2/mods-enabled/php5.load
LoadModule php5_module /usr/lib/apache2/modules/libphp5.so
$ grep php /etc/apache2/mods-enabled/dir.conf
DirectoryIndex index.html index.php index.xhtm

Listing 19.28  PHP-Support in Apache 2.x

Ebenfalls müssen die Dateiendungen den entsprechenden MIME-Typen zugeordnet sowie die Indexdateien definiert werden. Die meisten Distributionen bieten jedoch spezielle Pakete an, die den PHP-Support automatisch zu Ihrem Webbrowser hinzufügen. So reicht beispielsweise unter Debian folgender Befehl aus:

# aptitude install php5 apache2

Listing 19.29  PHP-Apache unter Debian

Anschließend muss der Apache-Server noch über apache2ctl neu gestartet werden.


Galileo Computing - Zum Seitenanfang

19.3.3 PHP lernen  Zur nächsten ÜberschriftZur vorigen Überschrift

Natürlich können wir in diesem Buch keine komplette Einführung in die Programmiersprache PHP geben; der Verlag Galileo Press hat eigene Bücher zu diesem Thema publiziert. Einige zum Verständnis notwendige Grundlagen möchten wir jedoch vermitteln.


PHP ist eine in HTML eingebettete Skriptsprache mit Ähnlichkeiten zu C, Java und Perl. Mit PHP können dynamisch generierte Webseiten schnell entwickelt werden.



Wie kann man nun PHP nutzen? Betrachten wir dazu ein kleines Beispiel, das zum Ausprobieren auf unserem PHP-fähigen Apache einfach nur als .php-Datei unter dem DocumentRoot gespeichert werden muss.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>PHP-Testseite</title>
</head>
<body>
<?php echo '<p>PHP-Text</p>'; ?>
</body>
</html>

Listing 19.30  Ein kleines Beispiel für PHP

Man kann gut erkennen, dass PHP wirklich in HTML eingebettet ist. Der echo-Befehl zur Ausgabe einer Zeichenkette – in unserem Fall ein <p>-Tag samt Text – muss dazu in eine spezielle Umgebung platziert werden. Bei der Anforderung der Webseite durch einen Webbrowser wird also der PHP-Parser den Text zwischen <?php und ?> nehmen und als PHP-Code interpretieren. Anschließend wird er den HTML-Code generieren, der schließlich an den Browser geschickt wird.

Um nun etwas Dynamik in die Sache zu bringen, wollen wir kurz die Auswertung des folgenden HTML-Formulars betrachten:

...
<form action="auswertung.php" method="post">
<p>Name: <input type="text" name="name"></p>
<p>Alter: <input type="text" name="age" /></p>
<p><input type="submit" value="Abschicken" /></p>
</form>
...

Listing 19.31  Dynamik!

Formulare auswerten

Dieses Formular muss nicht in einer PHP-Datei stehen. Wichtig ist nur, dass das Ziel dieses Aufrufs ein PHP-Skript ist. Diesem Skript – wie hier der Datei auswertung.php – werden die Eingaben des Benutzers geschickt, die wie folgt abgerufen werden könnten:

...
<p>
Hallo <?php echo $_POST['name']; ?>!
Sie sind <?php echo $_POST['age']; ?> Jahre alt.
</p>
...

Listing 19.32  Die Eingaben auslesen

Auf die entsprechenden Formulardaten kann über das Array _POST zugegriffen werden. Variablen werden in PHP durch ein vorangestelltes Dollarzeichen identifiziert und können per echo ausgegeben werden. Selbstverständlich gibt es bei PHP die Möglichkeit von Schleifen, Funktionen oder Abfragen von Bedingungen. Aber für einen ersten Eindruck sollen diese Ausführungen genügen. Für weitere Informationen sollten Sie die offizielle Webseite www.php.net aufsuchen, auf der Tutorials, eine Referenz und viele praktische Beispiele zu finden sind.

Abbildung 19.1  PHPMyAdmin


Galileo Computing - Zum Seitenanfang

19.3.4 PHP und MySQL  topZur vorigen Überschrift

Natürlich ist PHP auch der Punkt, an dem es an die Nutzung der Datenbank gehen kann. PHP bietet dabei sogar verschiedene APIs zum Zugriff auf eine Datenbank an. Ausführliche Dokumentationen und Hilfen hierzu gibt es wie immer auf php.net.

Wir wollen uns zunächst einen Anwendungsfall für das Zusammenspiel von PHP und MySQL ansehen: phpmyadmin, eine Weboberfläche zur Administration einer MySQL-Datenbank über das Web.

PHPMyAdmin

MySQL-Web- administration

Für viele Administrationen ist der phpmyadmin (phpmyadmin.net) das Tool der Wahl, wenn es um die Administration einer MySQL-Datenbank geht. Ein übersichtliches Webinterface und der große Funktionsumfang machen es möglich.

Aber vor allem ist dieses Projekt ein wunderschöner Anwendungsfall, da alle LAMP-Aspekte verbunden werden. Auch wenn man selbst keinen eigenen Webserver mit MySQL und PHP betreibt, kann man mit dem PHPMyAdmin in Berührung kommen, da viele Webhoster die Software installieren, um ihren Kunden Zugriff auf ihre Datenbanken anzubieten.

Datenbank-Zugriff programmieren

Zum Abschluss dieses Kapitels möchten wir Ihnen noch zeigen, wie Sie von PHP aus direkt auf Ihre MySQL-Datenbank zugreifen können. [Für weiteres Know-how zum Thema empfehlen wir Ihnen das ebenfalls bei Galileo Press erschienene Buch »Einstieg in PHP und MySQL« von Thomas Theis.] Wir entwickeln zu diesem Zweck eine HTML-Seite mit PHP-Code. Mit dieser Seite soll es möglich sein, über Namen von Linux-Befehlen nach deren Zweck zu suchen.

Dazu erstellen wir zunächst eine Datenbank samt Tabelle. Wir loggen uns dazu zunächst mit dem Datenbank-Benutzer root in die Datenbank ein. Es kann sein, dass Ihr Benutzer kein Passwort hat (drücken Sie dazu einfach bei der Passworteingabe die Enter-Taste), oder dass Sie keinen Benutzernamen angeben müssen (geben Sie in diesem Fall nur mysql ein).

$  mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 51
Server version: 5.1.37-1ubuntu5.1 (Ubuntu)
Type 'help;' or '\h' for help. Type '\c' to clear
the current input statement.
mysql> create database LinuxBefehle;
Query OK, 1 row affected (0,05 sec)
mysql> use LinuxBefehle;
Database changed
mysql> create table befehle (
-> `name` VARCHAR(24) NOT NULL,
-> `bedeutung` VARCHAR(128) NOT NULL );
Query OK, 0 rows affected (0,20 sec)

Listing 19.33  Datenbank und Befehlstabelle erstellen

Abbildung 19.2  Das ausgeführte PHP-Skript im Browser

Nun füllen wir die Tabelle mit einigen wenigen Beispielbefehlen:

mysql> insert into befehle (`name`,`bedeutung`) VALUES
('ls', 'Listet Dateien in Verzeichnissen auf'),
('echo', 'Gibt Text aus'),
('uptime','Zeigt, wie lang ein System bereits laeuft'),
('uname', 'Systeminformationen erfragen');
Query OK, 4 rows affected (0,01 sec)
Records: 4  Duplicates: 0  Warnings: 0
mysql> quit
Bye

Listing 19.34  Befehlstabelle mit Beispieldaten füllen

Nun erstellen wir ein neues PHP-Skript für die Verarbeitung der Suchanfrage (das Skript muss test.php heißen, damit die HTML-Form ihre Daten an das richtige Ziel richtet):

$ cat /var/www/test.php
<html>
<head>
<title>Linux-Befehle</title>
</head>
<body>
<form method="POST" action="test.php">
Befehl: <input type="text" name="befehl"
value="<?php echo $_POST["befehl"]; ?>"/>
<input type="submit" />
</form>
<?php
if (!empty($_POST['befehl'])) {
 /* Zur Datenbank verbinden */
$sqluser = 'Benutzername'; /* anpassen*/
$sqlpass = 'Passwort';     /* anpassen */
if (!($mysql_link = mysql_connect('localhost',
$sqluser, $sqlpass))) {
die('Could not connect');
}
 /* Datenbank auswählen */
if (!($db_selected = mysql_select_db('LinuxBefehle',
$mysql_link))) {
die('Could not find database');
}
 /* SQL-Befehl abschicken: Wichtig: Mit Punkten werden in
* PHP Strings zusammengesetzt. */
$sql_cmd = "SELECT * FROM befehle WHERE `name` LIKE '"
. $_POST['befehl']."%'";
if (!($res = mysql_query($sql_cmd))) {
die('Invalid MySQL query');
}
 /* Ergebnisse abholen und anzeigen */
echo '<br><br><b>Ergebnisse:</b><br>';
while ($dsatz = mysql_fetch_assoc($res)) {
echo '<b>Befehl:</b> ' . $dsatz["name"] . "<br>";
echo '<b>Bedeutung:</b> <i>' . $dsatz["bedeutung"]
. "</i><br>";
echo '<hr />';
}
 /* Verbindung zur Datenbank schließen */
mysql_close($mysql_link);
}
?>
</body>
</html>

Listing 19.35  Das PHP-Skript

Zunächst erstellen wir eine typische HTML-Seite mit einer Form wie sie Sie bereits kennengelernt haben. Mit der PHP-Funktion empty() prüfen wir, ob ein Wert leer ist oder nicht. Letztlich überprüft die if-Bedingung (grob gesagt), ob die Variable befehl leer ist oder nicht.

Mit der Funktion mysql_connect() verbinden wir uns mit der lokalen Datenbank mit dem Benutzer $sqluser und dessen Passwort $sqlpass. Diese beiden Werte müssen Sie in Ihrem Beispiel anpassen. Schlägt die Verbindung fehl, teilt uns dies die die()-Funktion mit und beendet das Programm.

Um MySQL zu sagen, auf welcher Datenbank wir arbeiten möchten, wählen wir diese anschließend mit mysql_select_db() aus, wozu wir deren Namen und den Verbindungs-Link, den wir von mysql_connect() erhalten haben, übergeben.

Der folgende SQL-Befehl holt alle Datensätze aus der Tabelle »befehle«, bei denen der Wert in der Tabellenspalte »name« mit dem Wert, der in Post enthalten ist, beginnt.

In der while-Schleife holen wir alle Datensätze, die zum Ergebnis des SQL-Befehls zählen, ab und speichern bei jedem Durchlauf ein Ergebnis im Array $dsatz. Über dieses Array (PHP hat assoziative Arrays) können wir einzelne Spalten-Werte des jeweiligen Datensatzes (etwa den Wert der Spalte »bedeutung«) bequem und einfach abfragen.

Die Verbindung zum Datenbank-Server wird über die Funktion mysql_close() geschlossen, der wir zu diesem Zweck die Verbindungsinformationen übergeben.


Bevor Sie Webanwendungen für die Öffentlichkeit entwickeln, sollten Sie sich mit dem Thema der Sicherheit solcher Webanwendungen befassen. Das gilt nicht nur für PHP-basierte Webseiten, sondern auch für solche, die in anderen dafür geeigneten Programmiersprachen bzw. Technologien wie Java Server Pages, Python, Ruby on Rails, Perl, FastCGI/CGI usw. entwickelt werden. Beim Fachbuchhändler gibt es mittlerweile recht viele Bücher zu diesem Thema.




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: Linux, Ausgabe 2011






Linux, Ausgabe 2011
Jetzt bestellen


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

 Buchempfehlungen
Zum Katalog: Linux-Server






 Linux-Server


Zum Katalog: Linux Hochverfügbarkeit






 Linux Hoch-
 verfügbarkeit


Zum Katalog: LPIC-1






 LPIC-1


Zum Katalog: Debian GNU/Linux






 Debian GNU/Linux


Zum Katalog: openSUSE 11.2






 openSUSE 11.2


Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Ubuntu GNU/Linux






 Ubuntu GNU/Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




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