Projektarbeit: Rechnernetzwerk mit Intranets

Werbung
ELEKTRONIKSCHULE TETTNANG
PROJEKTARBEIT
RECHNERNETZWERK MIT INTRANETS
Realisierung einer vernetzten Infrastruktur für ein Schülerwohnheim und
Programmierung der Wohngruppen-Intranets
Erstellt durch:
Christoph Blank
Dung Phan
KUMAvision AG
TANNER AG
Eingereicht bei Andreas Grella, am 1. Juni 2011 in der Elektronikschule Tettnang
Einführung
Seite |2
Inhaltsverzeichnis
1.
Einführung ...................................................................................................................... 3
2.
Planung der Projekttätigkeiten ....................................................................................... 3
3.
2.1.
Zeitplanung ............................................................................................................. 3
2.2.
Ressourcenplanung ................................................................................................. 3
Technische Problemlösung ............................................................................................. 4
3.1.
IP-Adresskonzept .................................................................................................... 4
3.2.
Konfiguration und Administration der Netzwerkgeräte ......................................... 5
3.2.1.
Grundkonfiguration des Routers: .............................................................................. 6
3.2.2.
Grundkonfiguration des Switches .............................................................................. 8
3.3.
Einrichtung des Webservers .................................................................................... 8
3.4.
Programmierung des Intranets ................................................................................ 9
4.
Projektauswertung ........................................................................................................ 10
5.
Quellen und Hilfsmittel ................................................................................................ 11
6.
Anlagen......................................................................................................................... 12
6.1.
Passwörter ............................................................................................................. 12
6.2.
Router Konfiguration ............................................................................................ 12
6.3.
Switch Konfiguration ............................................................................................ 14
6.4.
Intranet Skripte ...................................................................................................... 16
6.4.1.
about.php ................................................................................................................. 16
6.4.2.
admin.php ................................................................................................................ 16
6.4.3.
foot.inc.php .............................................................................................................. 16
6.4.4.
guestbook.php ......................................................................................................... 17
6.4.5.
head.inc.php............................................................................................................. 17
6.4.6.
index.php.................................................................................................................. 18
6.4.7.
style.css .................................................................................................................... 19
6.5.
Datenbank Konfiguration ...................................................................................... 20
6.6.
Abnahmeprotokoll................................................................................................. 21
Einführung
Seite |3
1. Einführung
Das Schülerwohnheim Tannenbusch e.V. hat mehrere Stockwerke. Die Wohngruppen
verwalten künftig ihr eigenes Teilnetz (inkl. Intranet). Ziele des Projektes sind die Realisierung einer vernetzten Infrastruktur und der webbasierten Informationsplattformen (Intranets) der einzelnen Wohngruppen. Die Rechnernetzwerke der einzelnen Geschosse müssen
außerdem miteinander vernetzt werden. Hierfür sind die Netzwerkgeräte zu verkabeln und
zu konfigurieren. Für jedes Stockwerk muss ein linuxbasierter Webserver aufgesetzt und
ein Intranet programmiert werden.1
2. Planung der Projekttätigkeiten
2.1. Zeitplanung
In der Planungsphase wurde mit folgenden Zeiten gerechnet.
Aufgabe
Zeitschätzung Hauptverantwortliche
IP Adressplanung
Netzwerkdiagramm erstellen
1,00 h Blank
Konfiguration von Router und Switch Switch
1,00 h Dung
Router
1,00 h Dung
Einrichten von Virtual Machines
Client Konfiguration
0,75 h Dung
Server
1,5 h
Programmierung Intranet
Frontend
1,00 h CBL
Pizza Gutschein
0,75 h CBL
Gästebuch
1,50 h CBL
Übergreifende Konfiguration
1,00 h Dung
Dokumentation
4,00 h
Summe
13,00 h
Verfügbare Zeit
15,00 h
Puffer
2,00 h
2.2. Ressourcenplanung
Für die Projektarbeit werden folgende Ressourcen benötigt.
1

1 Router (Cisco 2600)

1 Switch (Cisco Catalyst 2950)

3 Netzwerkkabel 2m

1 Konsolenkabel, 1 serielles Kabel
Projekt: Rechnernetzwerk mit Intranets – Aufgabenstellung, Seite 1
Technische Problemlösung

Seite |4
2 Windows XP Rechner ausgerüstet mit folgender Software
o VMware Player
o Quelltexteditor für Programmierung
o Word und Excel
o Packet Tracer
o Browser (z.B. Firefox)
o Snag it

OpenSuse Image
3. Technische Problemlösung
3.1. IP-Adresskonzept
Aufgrund der hohen Anzahl an Clients ist es unabdinglich mehrere Subnetze zu bilden um
eine angemessene Performance im gesamten Netzwerk gewährleisten zu können. Die Aufgabenstellung beschreibt elf Gruppennetzte die wiederum durch elf Verbindungsnetzte mit
einem Internet Service Provider verbunden werden. Daraus ergibt sich eine LinienTopologie aus elf Routern (ausschließlich dem des ISP) an den jeweils ein Switch mit wiederum jeweils 100 Clients angeschlossen werden. Ausgehend von dem Netz 172.16.8.0/21
führt dies zu folgendem in Abbildung 1 ersichtlichen theoretischem Adresskonzept.
Technische Problemlösung
Seite |5
Abbildung 1: Theoretisches Adresskonzept
3.2. Konfiguration und Administration der Netzwerkgeräte
Ausgehend von den Vorgaben des theoretischen Konzepts wurde das internes Netzwerk
wie in Abbildung 2 geplant und aufgebaut.
Cisco 2600 Series
Cisco Catalyst 2950
Server läuft als VM
auf PC
Abbildung 2: geplante Netzwerktopologie
Am FastEthernet 0/0 Port (kurz Fa0/0) des Cisco 2600 Routers wird ein 24-Port-Switch
vom Typ Cisco Catalyst 2950 mittels Patchkabels2 am Port Fa0/1 angeschlossen. Die beiden Arbeitsplatzrechner sind via Patchkabel mit dem Switch über die Ports Fa0/2 und
Fa0/3 verbunden.
2
Shielded Twisted Pair, Kategorie 5
Technische Problemlösung
Seite |6
Anhand einer IP-Tabelle wurde die Netzwerkinfrastruktur in Details geplant:
Device
openSUSE-Gr5
PC1-Gr5
PC2-Gr5
Router-Gr5
Switch-Gr5
IP-Adresse
172.16.5.100
172.16.5.1
172.16.5.2
172.16.5.126
172.16.109.2
172.16.105.1
172.16.5.125
Subnetzmaske
255.255.255.128
255.255.255.128
255.255.255.128
255.255.255.128
255.255.255.0
255.255.255.0
255.255.255.128
Typ
Linux-VM/Webserver
Desktop
Desktop
Cisco 2600
WAN Serial DTE
WAN Serial DCE
Cisco Catalyst 2950
Port (Quelle)
Port (Ziel)
Ethernet
Ethernet
Fa0/0
Serial0/0
Serial0/1
VLAN1
Fa0/2
Fa0/3
Fa0/1
Zur Grundeinrichtung des Routers und des Switches wurde ein serielles Konsolenkabel
genutzt, über welches vom PC1 eine Putty-Session zum jeweils zu konfigurierenden Gerät
mit den folgenden Einstellungen aufgebaut wurde:

9600 Baud

8 Datenbit

Keine Parität

1 Stoppbit

Keine Flusssteuerung
3.2.1.
Grundkonfiguration des Routers
Die Konfiguration des Routers wurde wie folgend beschrieben vorgenommen. Die Ergebnisse wurden in der startup-config im Anhang dokumentiert. Ferner wurden Testergebnisse
im Abnahmeprotokoll festgehalten.
3.2.1.1.
Absicherung des Routers
Im Global Configuration Mode wurde das Passwort des Privileged Mode eingerichtet. Die
Zugänge für Konsole (console 0) und Telnet (vty 0 4) wurden ebenfalls mit einem Passwort abgesichert. Die Passwortverschlüsselung wurde aktiviert um die Passwörter in der
Konfiguration nicht im Klartext erscheinen zu lassen.
3.2.1.2.
Konfiguration der Schnittstellen
Der FastEthernet-Schnittstelle Fa0/0 des Routers wurde die statische IP-Adresse
172.16.5.126 mit der Subnetzmaske 255.255.255.128 (/25) zugewiesen. Nachdem zusätzlich eine Beschreibung für diese hinzugefügt wurde, schalten wir sie mit no shutdown ein.
Technische Problemlösung
Seite |7
Die serielle Schnittstelle Serial0/0 stellt die Verbindung zum (vom ISP-Router aus betrachtet) dahinter liegenden Netzwerk 172.16.9.0/24 her und bekommt die IP-Adresse
172.16.109.2/24. Sie wird ebenfalls mit einer Beschreibung versehen und eingeschaltet.
Die Schnittstelle Serial0/1 des Routers dient als Taktgeber der seriellen Verbindung zum
zwischen uns und dem ISP-Router liegenden Netzwerk 172.16.11.0/24. Ihre IP-Adresse
wurde auf 172.16.105.1/24 und die Taktrate auf 56000bps festgelegt. Vor der Aktivierung
der Schnittstelle wurde ein Beschreibungstext angegeben.
3.2.1.3.
Konfiguration globaler Parameter
Dem Router wurde im Global Configuration Mode der Hostnamen Router-Gr5 zugewiesen. Als Message of the day (motd) wurde eine Begrüßung mit den Namen der Gruppenmitglieder gewählt. Ein Sicherheitshinweis wird in Form eines login-Banners ausgegeben.
Die Konfigurationsänderungen in der running-config wurde dauerhaft in die startup-config
gespeichert und zusätzlich per TFTP3 lokal in unserem Arbeitsordner auf PC1 abgelegt.
3.2.1.4.
Konfiguration des statischen Routing
Es wurden auf unserem Router statische Routen zu anderen Gruppennetzwerken festgelegt.
Beispielsweise werden mit der statischen Route
ip route 172.16.11.0 255.255.255.0 Serial0/1
alle IP-Pakete zum vor uns liegenden Netzwerk 172.16.11.0/24 über die serielle Schnittstelle Serial0/1 gesendet. Das Ergebnis wurde erfolgreich mit einem Ping an den Webserver 172.16.11.100 der Gruppe 11 verifiziert.
Analog dazu wurden statische Routen zu allen hinter uns liegenden Gruppennetzwerken
über die Schnittstelle Serial0/0 konfiguriert.
Für die Verbindung ins Internet über den ISP-Router wurde eine Default-Route über den
Router der Gruppe 11 (next hop 172.16.105.2) eingerichtet.
3
Trivial File Transfer Protocol
Technische Problemlösung
3.2.1.5.
Seite |8
Konfiguration der internen DNS-Tabelle
Es wurde eine statische interne DNS-Tabelle für die Namensauflösung des Routers eingerichtet:
Host
openSUSE-Gr5
PC1-Gr5
PC2-Gr5
Router-Gr5
Switch-Gr5
3.2.2.
IP-Adresse
172.16.5.100
172.16.5.1
172.16.5.2
172.16.5.126
172.16.5.125
Grundkonfiguration des Switches
Analog zur Konfiguration des Routers wurde der Switch über eine serielle Konsolenverbindung global wie folgt eingerichtet:

Sehr sicheres, verschlüsseltes Kennwort für den Privileged Exec Mode erstellt.

Zugänge über die Konsole und Telnet wird passwortgeschützt.

Passwortverschlüsselung aktiviert.

Hostname Switch-Gr5 festgelegt.

Banner motd und login erstellt.
Die Schnittstelle VLAN1 des Switches wurde mit der IP-Adresse 172.16.5.125/25 konfiguriert und machten ihn damit für die Konfiguration über das Netzwerk mit Telnet erreichbar. Anschließend speicherten wir die Konfigurationsänderung in die startup-config und
auf dem TFTP-Server ab. Die komplette Konfiguration ist im Anhang auf Seite 14 zu finden.
3.3. Einrichtung des Webservers
Zur Nutzung der Virtual Machine als Webserver wurde openSuse 11.4 eingesetzt. Das Betriebssystem wurde mit den Voreinstellungen installiert. Mit Hilfe von Yast nahmen wir
die Paketinstallation vor. Zusätzlich wurden die Apache2, php5, apache2-mod_php5,
sendmail, mysql und das mysqladmin Pakete installiert.
Der Netzwerkkarte des Servers wurde die IP-Adresse 172.16.5.100/25 zugeteilt. Als
Default-Gateway wurde die IP-Adresse unseres Routers (172.16.5.126) im Reiter Routing
eingetragen.
Technische Problemlösung
Seite |9
Zur Konfiguration der Firewall wurde festgelegt, dass die Server-Dienste HTTP-Server
und MySQL-Server über das externe Netzwerk erreichbar sein sollen. Des Weiteren wurden die Dienste Apache, MySQL und SSH in der Runlevel-Konfiguration aktiviert.
Zur Konfiguration des MySQL-Servers richteten wir zunächst mit Hilfe des MySQL
Workbench auf der Linux-VM einen root-Benutzer mit allen globalen Privilegien zur Administration ein. Anschließend meldeten wir uns als root-Benutzer über MySQL Workbench 5.2 vom PC1 aus an und legten einen neuen User gruppe5 an, welcher nur über die
nötigsten Objektprivilegien für die Datenbank verfügt. Im Anschluss daran wurde eine
Datenbank project und eine Tabelle guestbook für das Hinterlegen der Gästebuchdaten
angelegt.
3.4. Programmierung des Intranets
Die Entwicklung des Intranets gliedert sich in drei Hauptaufgaben:

HTML/CSS-Frontend

Gutscheinsystem

Gästebuch
Im Frontend wurden eine Startseite, ein Gästebuch und eine Seite zur Vorstellung der
Wohngruppe erstellt. Die Gestaltung wurde in Cascading Style Sheets definiert. Um Änderungen am Design und der Struktur der Website zu erleichtern wurden zwei PHP-Dateien
die jeweils am Anfang (head.inc.php) und am Ende (foot.inc.php) des eigentlichen Dokuments, unter Benutzung der include Funktion ausgeführt werden. Diese Dateien enthalten
zum Beispiel die Definition des Doctypes und des Titles.
Beim Gutscheinsystem handelt es sich um einen erweiterten Besucherzähler. Die Daten
(aktueller Zählerstand und letzter Gutscheincode) werden unter Anwendung von PHP in
eine Textdatei geschrieben. Der inkrementierte Zählerstand und der letzte Gutscheincode
werden mit Hilfe der explode und implode Funktionen durch ein Verkettungszeichen4 verbunden bzw. getrennt. Wenn der Zählerstand restfrei durch 100 teilbar ist (Modulo Division) wird eine Meldung mit einem Zufallscode (Ganzzahl zwischen 1000 und 9999) angezeigt. Danach kann der Benutzer ganz normal durch das Hauptmenü navigieren. Nach ak4
‘|’; Unicode: U+007C
Projektauswertung
S e i t e | 10
tueller Programmierung wird jedes Mal wenn die Home Seite geladen wird der Zähler erhöht. Es ist technisch möglich den Zähler für jeden Besucher nur um eins zu erhöhen. Hier
müsste man entweder die IP-Adresse protokollieren oder mit Sessions arbeiten.
Das Gästebuch wurde sehr einfach gehalten. Der Benutzer kann alte Einträge lesen und
neue Nachrichten unter Verwendung eines HTML-Formulars eingeben. Die Daten werden
dann via POST an das Skript übertragen. Die Daten werden in einer MySQL Datenbank
auf dem Server hinterlegt. Gespeichert werden eine Automatisch vergebene Ganzzahl ID
(Auto_Increment), das aktuelle Datum, der eingegebene Name und die eingegebene Nachricht. Nach erfolgreichem Speichern der Nachricht wird dies dem Benutzer visuell bestätigt.
4. Projektauswertung
Abschließend lässt sich sagen, dass das Projekt erfolgreich beendet werden konnte. Es
wurden alle geforderten Aufgaben erfolgreich abgeschlossen und auch einige der Zusatzaufgaben konnten zufriedenstellend bearbeitet werden. Wir haben viel über die angewendeten Techniken und über uns selbst lernen können. Da Christoph Blank sich maßgeblich
im Softwarebereich auskennt und Dung Phan sich auf die Netzwerkkonfiguration spezialisiert hat, konnten wir uns mit unseren Stärken gegenseitig ergänzen und funktionierten als
Team sehr gut. Darüber hinaus konnten wir auch anderen Gruppen helfen die im Umgang
mit verschiedenen Techniken bisher wenige Erfahrungen sammeln konnten. Während unserer Arbeit mussten wir erkennen das wir aufgrund unserer mangelnden Erfahrung im
Projektmanagement teilweise weit von den geschätzten Zeiten entfernt lagen. Ursprünglich
hatten wir geplant den Großteil der Aufgaben gemeinschaftlich zu bearbeiten um den
Lernerfolg zu maximieren. Doch dies wäre uns zeitlich am Ende zu knapp geworden und
so arbeiteten wir parallel an verschiedenen Aufgaben. Aufgrund des Zeitdrucks war es uns
auch nicht möglich auf weitere Problematiken im Bereich des Intranets einzugehen. So
wäre beispielsweise eine SQL-Injection problemlos möglich.
Quellen und Hilfsmittel
S e i t e | 11
5. Quellen und Hilfsmittel
Um uns das teilweise fehlende Fachwissen über MySQL Datenbankzugriffe via PHP anzueignen nutzten wir das Tutorial von PHP für dich5. Des Weiteren wurde die SelfHTML6
Dokumentation genutzt um bereits gelerntes Nachzuschlagen. Um unser IP-Adresskonzept
zu überprüfen nutzen wir den VLSM (CIDR) Subnet Calculator7. Für das Erstellen dieser
Dokumentation wurden Word, Excel und Visio aus dem Microsoft Office Paket genutzt.
Screenshots wurden mit Snagit von TechSmith angefertigt. Für die Virtual Machine, welche wir im VMware Player laufen ließen, nutzten wir openSuse 11.4. Für die Programmierung des Intranets wurde aufgrund des Syntax Highlightings Notepad++ genutzt. Zum
Testen des Intranets wurde sowohl Firefox in den Versionen 3 und 4 wie auch der Internet
Explorer 6 und 8 genutzt. Die Verwaltung der MySQL Datenbank wurden mit dem
MySQL Workbench durchgeführt. Die Verbindung zu Router und Switch stellten wir über
die Terminalemulations-Software PuTTY her.
5
http://www.schattenbaum.net/php/
http://de.selfhtml.org/
7
http://www.vlsm-calc.net/
6
Anlagen
S e i t e | 12
6. Anlagen
6.1. Passwörter
6.1.1.
Router + Switch
Konsolen- und Telnetzugang: gruppe5
Privileged Execute Mode: admin
Enable Mode: admin
6.1.2.
Web-Server
Root-Passwort: root
User: operator
Password: operator
6.1.3.
MySQL-Datenbank:
Datenbank: project
User: gruppe5
Passwort: gruppe5
6.2. Router Konfiguration
!
version 12.2
service timestamps debug uptime
service timestamps log uptime
service password-encryption
!
hostname Router-Gr5
!
enable secret 5 $1$VAhm$qEfSEzSgJNWPp814I5ymV.
!
ip subnet-zero
!
!
!
!
!
!
interface FastEthernet0/0
description Verbindung zu Switch-Gr5
ip address 172.16.5.126 255.255.255.128
duplex auto
speed auto
!
interface Serial0/0
Anlagen
S e i t e | 13
description Verbindung zu Gruppennetz 172.16.9.0 Serial0/3/0
ip address 172.16.109.2 255.255.255.0
no fair-queue
!
interface FastEthernet0/1
description FastEthernet0/1 Gruppe 5
no ip address
shutdown
duplex auto
speed auto
!
interface Serial0/1
description Verbindung zum Gruppennetz 172.16.11.0 Fa0/3/0
ip address 172.16.105.1 255.255.255.0
clock rate 56000
!
ip classless
ip route 0.0.0.0 0.0.0.0 172.16.105.2
ip route 172.16.1.0 255.255.255.0 Serial0/0
ip route 172.16.2.0 255.255.255.0 Serial0/0
ip route 172.16.3.0 255.255.255.0 Serial0/0
ip route 172.16.4.0 255.255.255.0 Serial0/0
ip route 172.16.6.0 255.255.255.0 Serial0/0
ip route 172.16.7.0 255.255.255.0 Serial0/0
ip route 172.16.8.0 255.255.255.0 Serial0/0
ip route 172.16.9.0 255.255.255.0 Serial0/0
ip route 172.16.10.0 255.255.255.0 Serial0/0
ip route 172.16.11.0 255.255.255.0 Serial0/1
ip http server
!
banner login # Router-Gr5 ist mit einem verschluesselten Passwort abgesichert! #
banner motd # Gruppe 5: Christoph Blank, Dung Phan. #
!
line con 0
password 7 00030113144B0E53
login
line aux 0
line vty 0 4
password 7 15151919143A2E71
login
!
end
Anlagen
6.3. Switch Konfiguration
!
version 12.1
no service pad
service timestamps debug uptime
service timestamps log uptime
service password-encryption
!
hostname Switch-Gr5
!
enable secret 5 $1$C9eu$7XRtuqAtbxfHI9mrPr7FX/
!
ip subnet-zero
!
ip host openSUSE-Gr5 172.16.5.100
ip host Switch-Gr5 172.16.5.125
ip host Router-Gr5 172.16.5.126
ip host PC2-Gr5 172.16.5.2
ip host PC1-Gr5 172.16.5.1
ip ssh time-out 120
ip ssh authentication-retries 3
!
spanning-tree mode pvst
no spanning-tree optimize bpdu transmission
spanning-tree extend system-id
!
!
!
!
interface FastEthernet0/1
description Verbindung zu Router-Gr5 Fa0/0
!
interface FastEthernet0/2
description Verbindung zu PC1-Gr5
!
interface FastEthernet0/3
description Verbindung zu PC2-Gr5
!
interface FastEthernet0/4
!
interface FastEthernet0/5
!
interface FastEthernet0/6
!
interface FastEthernet0/7
!
interface FastEthernet0/8
!
interface FastEthernet0/9
!
interface FastEthernet0/10
!
interface FastEthernet0/11
!
interface FastEthernet0/12
!
interface FastEthernet0/13
!
S e i t e | 14
Anlagen
S e i t e | 15
interface FastEthernet0/14
!
interface FastEthernet0/15
!
interface FastEthernet0/16
!
interface FastEthernet0/17
!
interface FastEthernet0/18
!
interface FastEthernet0/19
!
interface FastEthernet0/20
!
interface FastEthernet0/21
!
interface FastEthernet0/22
!
interface FastEthernet0/23
!
interface FastEthernet0/24
!
interface Vlan1
description VLAN1 Switch_Gr5
ip address 172.16.5.125 255.255.255.128
no ip route-cache
!
ip http server
banner login #Gruppe5: ChrBla, DunPha. #
banner motd # Switch-Gr5 ist mit einem verschluesselten Passwort abgesichert. #
!
line con 0
password 7 10491B0C1507175E
login
line vty 0 4
password 7 08265E5B19090042
login
line vty 5 15
password 7 08265E5B19090042
login
!
!
end
Anlagen
S e i t e | 16
6.4. Intranet Skripte
6.4.1.
about.php
<?php include('head.inc.php'); ?>
<h1>Wir über uns</h1>
<ul>
<li><a href="#blank">Blank</a></li>
<li><a href="#phan">Phan</a></li>
</ul>
<h2><a name="blank"></a>Christoph Blank</h2>
<p>
<img src="images/blank.jpg">
Da es hier wohl kaum um den Text geht gibts ab jetzt nur noch Blindtext.
Lorem ipsum dolor sit amet[…]</p>
<h2><a name="phan"></a>Dung Phan</h2>
<p>
<img src="images/phan.jpg">
Sed aliquam ultrices mauris. […]</p>
<?php include('foot.inc.php'); ?>
6.4.2.
admin.php
<?php
mysql_connect("172.16.5.100", "gruppe5","gruppe5") or die ("Keine Verbindung moeglich");
mysql_select_db("project") or die ("Die Datenbank existiert nicht.");
if (isset($_GET["delete"])) {
$eintragen = mysql_query("DELETE FROM guestbook WHERE id =
'".$_GET["delete"]."'");
echo "<p>Eintrag gelöscht</p>";
}
$abfrage = "SELECT * FROM guestbook";
$ergebnis = mysql_query($abfrage);
include('../head.inc.php');
?>
<h1>Gästebuch</h1><?php
while($row = mysql_fetch_object($ergebnis))
{
echo "<p><i>".$row->name."</i> schrieb am ".$row->date.":<br>";
echo $row->message."</p>";
echo "<p><a href='admin.php?delete=".$row->id."'>Löschen</a></p>";
}
include('../foot.inc.php'); ?>
6.4.3.
</body>
</html>
foot.inc.php
Anlagen
6.4.4.
S e i t e | 17
guestbook.php
<?php
mysql_connect("172.16.5.100", "gruppe5","gruppe5") or die ("Keine Verbindung moeglich");
mysql_select_db("project") or die ("Die Datenbank existiert nicht.");
mysql_query("SET NAMES 'utf8'");
if (isset($_POST["op"])) {
$message = $_POST["message"];
if($_POST["op"] == 'submit'){
$eintragen = mysql_query("INSERT INTO guestbook (name, date, message)"."VALUES ('".$_POST['name']."', now(), '".$message."')");
echo "<p>Eintrag gespeichert</p>";
}
}
$abfrage = "SELECT * FROM guestbook ORDER BY date DESC";
$ergebnis = mysql_query($abfrage);
include('head.inc.php');
?>
<h1>Gästebuch</h1>
<?php
while($row = mysql_fetch_object($ergebnis))
{
echo "<p><i>".$row->name."</i> schrieb am ".$row->date.":<br>";
echo $row->message."</p>";
}
?>
<h2>Eintragen</h2>
<form action="guestbook.php" method="post">
<p><input type="text" name="name"> schrieb am <?php echo date("Y-m-d");
?> um <?php echo date("G:i:s");?>:<br>
<textarea name="message"></textarea>
<input type="hidden" value="submit" name="op">
</p>
<input type="submit">
</form>
<?php include('foot.inc.php'); ?>
6.4.5.
head.inc.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Tannenbusch e.V. - Wohngruppe 5</title>
<link rel="stylesheet" type="text/css"
href="http://172.16.5.100/style/style.css">
</head>
<body>
<p>
<a href="http://172.16.5.100/index.php"><b>Home</b></a> |
<a href="http://172.16.5.100/about.php"><b>Wir über uns</b></a> |
<a href="http://172.16.5.100/guestbook.php"><b>Gästebuch</b></a>
</p>
Anlagen
6.4.6.
S e i t e | 18
index.php
<?php
include('head.inc.php');
$file = fopen("counter.txt","r+");
$content = fgets($file, 10);
$data = explode("|",$content);
if($data[0] == "") {
$data[0] = 0;
}
$data[0]++;
if ($data[0] % 100 == 0) {
$data[1] = rand (1000, 9999);
$message = "Der ".$data[0].". Besucher hat den Gutscheincode
".$data[1].".";
mail('[email protected]', 'Gewinner für Pizzagutschein', $message, 'From: Projektgruppe 5' );
}
$content = implode("|", $data);
rewind($file);
fwrite($file, $content);
fclose($file);
if ($data[0] % 100 != 0) {
?>
<h1>Home</h1>
<p>Hallo auf der intranetseite der <b>Tannenbusch e.V. - Wohngruppe 5<b>
<img src="http://172.16.5.100/images/none.jpg" alt="Gruppenbild" style="width: 50%">
</p>
<?php
}else{
?>
<h1>Herzlichen Glückwunsch zum Pizza-Gutschein</h1>
<p>Gebe einfach den Gutschein-Code <b><?php echo $data[1]; ?></b> an.<br>
Ein Bewohner wurde über dies per Email informiert.</p>
<?php
}
include('foot.inc.php');
?>
Anlagen
6.4.7.
S e i t e | 19
style.css
frame,frameset {
border:0;
}
body {
width:70%;
margin-left: auto;
margin-right: auto;
}
h1 {
border-bottom: solid green thin;
}
b {
font-weight: bold;
}
a {
color: green;
text-decoration:none;
}
textarea {
width: 100%;
height: 10em;
}
p img {
width: 30%;
margin-left: 2em;
margin-bottom: 1em;
float: right;
}
Anlagen
6.5. Datenbank Konfiguration
---------
phpMyAdmin SQL Dump
version 3.3.9
http://www.phpmyadmin.net
Host: localhost
Erstellungszeit: 23. Mai 2011 um 09:46
Server Version: 5.5.8
PHP-Version: 5.3.5
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--- Datenbank: `project`
--- ---------------------------------------------------------- Tabellenstruktur für Tabelle `guestbook`
-CREATE TABLE `guestbook` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(30) DEFAULT NULL,
`date` datetime DEFAULT NULL,
`message` varchar(1024) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
S e i t e | 20
Anlagen
6.6. Abnahmeprotokoll
S e i t e | 21
Anlagen
S e i t e | 22
Herunterladen