09.09.2010, 11:54 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

center-pc.de

Lieber Besucher, herzlich willkommen bei: CoderZ-Home - Lerne Programmieren. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

ronsn

Level 0,5

Beiträge: 315

Wohnort: Berlin

Beruf: Student

Themenstarter Themenstarter

1

17.10.2009, 23:35

E-Mail-Kontaktformular

Die Frage von VisualCreations war, wie man ein Kontaktformular so macht, dass deren Daten anschließend per E-Mail versendet werden. Zuerst hatte er nur eine reine HTML-Lösung, aber im Laufe der Zeit entwickelte sich eine auf PHP basierende Lösung, die hier nur fortgeführt wird:

Ich hatte jetzt ein wenig Zeit und habe mal die Seite, die du gemacht hast, angesehen.
Es tat mir dann doch schon Leid für dich, dass sich da fast niemand melden wird wenn du kein richtigen Mailer hast.
Ich habe den Code von Selfhtml als Grundlage genommen und es um einiges erweitert.
Den Konfigurationsbereich und den HTML-Quelltext unten kannst du natürlich ändern.

Wahrscheinlich wird XMMX jetzt wieder was zu meckern haben, warum ich dir doch das Skript geschrieben habe. ^^
Das Skript ist trotzdem noch rudimentär, aber es ist zu gebrauchen.
Ach falls ich es noch erklären soll, sag Bescheid. Ich geh mir jetzt mal eben was zu trinken besorgen :)

Die Datei heißt kontakt.php

PHP-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<?php
error_reporting(E_ALL E_STRICT);
$arrValues = array(); // Nicht aendern!
$error = array(); // ACHTUNG  global in parseValue und errorOutputIfExists - Nicht aendern!
$parsedValueByName = array(); // ACHTUNG  global in parseValue und showStrValue - Nicht aendern!



##############################################
/* *** *** * BEGINN Konfiguration * *** *** */
$Empfaenger        "visualcreations@web.de"// E-Mail-Adresse des Empfaengers
$Betreff        'Betreff: Kontakt ueber die Seite jotes-studios.de'// Betreffzeile der E-Mail

$strDelimiter  ":\t"// Zeichen zwischen Feldname und Feldinhalt in der E-Mail (\t = Tabulator, \n = neue Zeile)
$strMailtextPrefix "Diese Mail wurde von Ihrer Website an Sie gesendet und enthaelt folgenden Inhalt:\n\n";    // Wird vor dem Mailtext angefuegt
$strMailtextSuffix "\n\nMit freundlichen Gruessen,\nIhr Webmailprogramm";    // Wird hinter dem Mailtext angefuegt

$LocationWhenMailWasSent    'http://domain.tld/kontakt_2.php'// Wohin soll weitergeleitet werden, wenn die Mail gesendet wurde? Richtige URL angeben!


// Formularauswertungen und -behandlungen
$arrValues[0]['name'] = 'i1';        // Name des Feldes
$arrValues[0]['required'] = true;    // Soll das Feld ausgefuellt werden? Wenn ja: true - Wenn nein: false
$arrValues[0]['noHTML'] = true;    // Soll HTML-Code deaktiviert werden?  Wenn ja: true - Wenn nein: false
//.........^.... Das ist der Index
// Falls noch mehr Input-Felder behandelt werden sollen, bitte mit fortlaufendem Index eintragen

$arrValues[1]['name'] = 'i2';
$arrValues[1]['required'] = true;
$arrValues[1]['noHTML'] = true;

$arrValues[2]['name'] = 'i3';
$arrValues[2]['required'] = true;
$arrValues[2]['noHTML'] = true;

//Beispiel: Imput-Feld i4 muss zwar nicht ausgefuellt werden, aber es soll kein HTML-Code benutzt werden duerfen
$arrValues[3]['name'] = 'i4';
$arrValues[3]['required'] = false;
$arrValues[3]['noHTML'] = true;


/* *** *** * ENDE Konfiguration * *** *** */
############################################





############################################
/* ------- BEGINN: NICHT AENDERN -------- */
function parseValue(&$valueName, &$value$arrTable)
{    
    $numberOfArrVal  count($arrTable);
    
    $valueName htmlspecialchars(trim($valueName));
    
    for($i 0$i $numberOfArrVal$i++)
    {
        if($arrTable[$i]['name'] == $valueName)
        {
            if($arrTable[$i]['required'] === true && trim($value) == '')
            {
                $GLOBALS['error'][] = $valueName;
            }
            
            if($arrTable[$i]['noHTML'] === true)
            {
                $value htmlspecialchars($value);
                $GLOBALS['parsedValueByName'][$valueName] = $value;
            }
        }
    }
    return true;
}

function errorOutputIfExists($valueName$errorDescription 'Fehler: ')
{
    if(in_array($valueName,$GLOBALS['error']))
        echo $errorDescription;
    return true;
}

function showStrValue($valueName)
{
    if(isset($GLOBALS['parsedValueByName'][$valueName]))
    {
        echo $GLOBALS['parsedValueByName'][$valueName];
    }
    else
    {
        if(get_magic_quotes_gpc())
        {
            echo (isset($_POST[$valueName]) ? stripslashes($_POST[$valueName]) : '');
        }
        else
        {
            echo (isset($_POST[$valueName]) ? $_POST[$valueName] : '');
        }

    }
}


if($_POST)
{
    $strMailtext "";
    while(list($strName,$value) = each($_POST))
    {
        if(is_array($value))
        {
            foreach($value as $value_array)
            {
                parseValue($strName$value_array$arrValues);
                $strMailtext .= $strName.$strDelimiter.$value_array."\n";
            }
        }
        else
        {
            parseValue($strName$value$arrValues);
            if($strName != "senden")
            {
                $strMailtext .= $strName.$strDelimiter.$value."\n";
            }
        }
    }

    if(get_magic_quotes_gpc())
    {
        $strMailtext stripslashes($strMailtext);
    }
    
    if(count($error) == 0)
    {        
        if(@mail($Empfaenger$Betreff$strMailtextPrefix.$strMailtext.$strMailtextSuffix))
        {
            header("Location: " $LocationWhenMailWasSent);
            exit;
        }
        else
        {
            die('Fehler: Mail konnte nicht gesendet werden!');
        }
    }
}

/* --------- ENDE: NICHT AENDERN -------- */
############################################
?>



<?php echo '<?xml version="1.0" encoding="utf-8"?>',"\n"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="CONTENT-TYPE" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>

Felder mit Sternchen müssen ausgefüllt werden!
<form action="kontakt.php" method="post">

    <!-- Hier wird Standard-Fehlertext ausgegeben, wenn dieses Feld nicht ausgefuellt wurde.
        Wenn es ausgefuellt wurde, dann wird der geparste String wieder angezeigt -->
    <?php errorOutputIfExists('i1'); ?>
    <input type="text" name="i1" value="<?php showStrValue('i1'); ?>" />*<br />
    
    
    <!-- Hier wird ein eigen definierter Text ausgegeben, wenn dieses Feld nicht ausgefuellt wurde -->
    <?php errorOutputIfExists('i2''Das Feld muss ausgefüllt werden: '); ?>
    <input type="text" name="i2" value="" />*<br />
    
    
    <!-- Dieses Feld bekommt einen roten Rahmen, wenn es nicht ausgefuellt wurde -->
    <input <?php errorOutputIfExists('i3''style="border-color:#ff0000;"'); ?> type="text" name="i3" value="" />*<br />
    
    
    <!-- Hier wird bei einem Fehler nichts ausgegeben. Wenn aber eine Eingabe getaetigt wurde,
        wird sie aber ueberprueft, wie man in der Konfiguration sehen kann -->
    <input type="text" name="i4" value="" /><br />
    
    
    <!-- Wenn dieses Feld ausgefuellt wird, wird der Inhalt nicht validiert. Hier koennte also Schadcode reingelangen. -->
    <input type="text" name="i5" value="<?php showStrValue('i5'); ?>" /><br />
    
    
    <input type="submit" name="senden" value="Absenden" />
    
</form>

</body>
</html>
»ronsn« hat folgende Datei angehängt:
  • kontakt.php.zip (2,26 kB - 44 mal heruntergeladen - zuletzt: 06.09.2010, 13:19)

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »ronsn« (17.10.2009, 23:47)

  • Zum Seitenanfang
Es haben sich bereits 2 registrierte Benutzer bedankt.

Benutzer die sich bedankten:

admin, VisualCreations


VisualCreations

Coder Youngstar

Beiträge: 393

Sprachen: C, VC# und PHP am Lernen; HTML/CSS

2

19.10.2009, 13:35

Ja, vielen Dank ertsmal.
Ma schaun, wann ich das einbaue.

Aber wirklich, danke.
Die Seite ist von mir erstellt: jotes-studios.de!
  • Zum Seitenanfang
Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer die sich bedankten:

-=L.B.R=-


ronsn

Level 0,5

Beiträge: 315

Wohnort: Berlin

Beruf: Student

Themenstarter Themenstarter

3

25.10.2009, 19:14

Mit diesem Mailer-Skript kann man E-Mails zu einer angegebenen Adresse senden lassen. Dafür muss man entweder nichts tun, oder wenn man bestimmte Vorgaben hat, muss man das Skript noch etwas konfigurieren. Ich werde hier anhand einiger Beispiele versuchen zu erläutern, wie man diese Konfiguration vornimmt.

1. Die Vorüberlegungen:
1.1. Was kann das Skript bieten?
a) Wenn man möchte, dass bestimmte Formular-Felder zwingend ausgefüllt werden sollen, dann kann das Skript dafür sorgen, dass diese auch ausgefüllt werden.
b) Wenn man möchte, dass bestimmte Formular-Felder keinen interpretierbaren HTML-Code beinhalten dürfen, dann kann das Skript dies auch erzwingen.
c) Wenn man für ein bestimmtes Formular-Feld festgelegt hat, dass es ausgefüllt werden muss, dann kann man eine Fehlernachricht ausgeben lassen, wenn das Formular abgesendet wurde, das Feld aber nicht ausgefüllt wurde.
d) Wenn ein Fehler aufgetaucht ist, weil zum Beispiel ein benötigtes Feld nicht ausgefüllt wurde, dann kann man für die Felder, die eventuell schon ausgefüllt wurden, den Text nochmal anzeigen lassen, sodass der User nicht nochmal alle Felder ausfüllen muss, wenn nur ein einziger Fehler auftrat.

1.2 Der Konfigurationsbereich
Der Konfigurationsbereich befindet sich zwischen den Zeilen
/* *** *** * BEGINN Konfiguration * *** *** */
und
/* *** *** * ENDE Konfiguration * *** *** */

Zunächst muss man dem Skript mitteilen, an wen die E-Mail gesendet werden soll. Das tut man, indem man der Variablen $Empfaenger die E-Mail-Adresse des Empfängers übergibt.
Damit der Empfänger in seinem E-Mail-Programm gleich sieht, dass er eine E-Mail von diesem Mailscript erhalten hat, trägt man eine aussagekräftige Überschrift in der Variablen $Betreff ein.

Der Variablen $strDelimiter übergibt man eine Zeichenfolge, die zwischen dem Formularfeld-Namen und der Eingabe in diesem Feld hinzugefügt werden soll. Vorgegeben ist :\t , also ein Doppelpunkt und ein Tabulator.

Die E-Mail kann einen Text vor dem gesendeten Inhalt haben, und einen Text danach. Das erreicht man, indem man den Variablen $strMailtextPrefix und $strMailtextSuffix einen Wert (Text) übergibt. Will man das nicht, löscht man den Text zwischen den beiden Hochkommata.

Wenn das Formular abgesendet wurde und die E-Mail versandt wurde, kann es passieren, dass der User die Seite neu lädt (Reload). Dabei würde die E-Mail noch einmal gesendet werden, was auch missbraucht werden könnte. Daher leitet das Skript nach erfolgreichem Versand der E-Mail den Benutzer auf eine andere Seite weiter. Diese Seite muss ein kompletter URL sein, den man der Variablen $LocationWhenMailWasSent übergibt.

1.3 Formularfelder
Jetzt überlegen wir uns, welche Formularfelder wir haben wollen und wir überlegen uns, welche Formularfelder ausgefüllt werden müssen und welche Felder kein interpretierbaren HTML-Code beinhalten dürfen.

Nehmen wir an, man benötigt drei Felder:
Name des Absenders, E-Mail-Adresse und einen Text.
Wir möchten, dass der Name und der Text zwingend ausgefüllt werden sollen und kein interpretierbaren HTML-Code beinhalten sollen.
Das Feld für die E-Mail-Adresse muss nicht ausgefüllt werden, aber wenn es ausgefüllt wurde, dann soll es kein interpretierbaren HTML-Code beinhalten dürfen.

Wir legen also die einzelnen Felder zwischen:

Quellcode

1
<form action="kontakt.php" method="post">
und

Quellcode

1
</form>
an:

1. Feld <input type="text" name="NameDesAbsenders" value="" />
2. Feld <input type="text" name="EmailDesAbsenders" value="" />
3. Feld <textarea name="MailText"></textarea>

Im Konfigurationsbereich des Skriptes müssen wir nun noch die Anweisungen geben, was mit den einzelnen Feldern passieren soll.
Für das erste Feld wollten wir, dass es ausgefüllt wird und kein interpretierbarer HTML-Code eingeschleust werden kann.
Dafür übergeben wir dem Skript zuerst den Namen des Feldes:

PHP-Quelltext

1
$arrValues[0]['name'] = 'NameDesAbsenders';

Als nächstes müssen wir zwei Optionen setzen. (Eine alleine reicht nicht aus!)
Die erste Option ist, dass das Feld benötigt wird, also ausgefüllt werden soll. Daher setzen wir

PHP-Quelltext

1
$arrValues[0]['required'] = true;

Und es soll auch kein HTML genutzt werden können, also setzen wir die Option

PHP-Quelltext

1
$arrValues[0]['noHTML'] = true;


Für das Zweite Feld sähe das dann so aus:

PHP-Quelltext

1
2
3
$arrValues[1]['name'] = 'EmailDesAbsenders';        // Name des Feldes
$arrValues[1]['required'] = false;    // Das Feld muss nicht ausgefüllt werden! Deswegen false!
$arrValues[1]['noHTML'] = true;       // Es darf kein HTML benutzt werden, deswegen true!


das letzte Feld muss ausgefüllt werden und HTML darf auch nicht benutzt werden:

PHP-Quelltext

1
2
3
$arrValues[2]['name'] = 'MailText';        // Name des Feldes
$arrValues[2]['required'] = true;    // Das Feld muss ausgefüllt werden! Deswegen true!
$arrValues[2]['noHTML'] = true;       // Es darf kein HTML benutzt werden, deswegen auch true!


Wichtig ist zu erkennen, das jedes Feld eine Nummer hat, die bei 0 (Null) beginnt. Diese Nummer wird Index genannt, fängt bei 0 an und jedes weitere Feld bekommt die nächst höhere ganze Zahl. Also 0, 1, 2, 3 , usw. Es ist wichtig darauf zu achten, dass diese Reihenfolge eingehalten wird!

Nun fehlt noch der Absende-Button. Dieser sollte den Namen "senden" haben, da er sonst mit der E-Mail mitgesendet würde.
<input type="submit" name="senden" value="..." />

2. Auf Fehler aufmerksam machen
Wenn der User nun vergessen hat seinen Namen einzutragen, aber einen langen Text geschrieben hat und das Formular dann absendet, dann wird die Mail nicht gesendet und das Formular wird erneut angezeigt. Nur leider weiß der User nicht, was passiert ist und warum ihm nun ein leeres Formular angezeigt wird. Der User wird sich fragen: "Wurde die Mail nun abgesendet oder nicht?".
In diesem Fall wäre es doch schön, wenn wir dem User zeigen könnten, in welchem Feld der Fehler aufgetaucht ist.
Dazu gibt es die Funktion errorOutputIfExists(). Die Funktion erwartet mindestens einen Parameter. Und das ist der Name des Formularfeldes. Die Namen werden in einfachen Hochkommata angegeben.
In unserem Fall, indem also der User vergessen hat seinen Namen anzugeben, wollen wir anzeigen lassen, dass dort der Fehler aufgetaucht ist. Also schreiben wir vor dem Formularfeld

PHP-Quelltext

1
<?php errorOutputIfExists('NameDesAbsenders'); ?>

Nun wird ein Standard-Fehlertext "Fehler: " ausgegeben. Möchte man nicht, dass dort "Fehler: " vor dem Feld steht, kann man sich auch einen eigenen Fehlertext ausdenken und den mit einem Komma getrennt und in einfachen Hochkommata übergeben.

PHP-Quelltext

1
<?php errorOutputIfExists('NameDesAbsenders''Hier musst du deinen Namen angeben!'); ?>

Anstelle eines Textes kann man auch CSS-Code (oder auch HTML) übergeben, wenn man beispielsweise möchte, dass das Formularfeld dann einen roten Rand bekommt.
Beispielsweise so:

PHP-Quelltext

1
<input <?php errorOutputIfExists('NameDesAbsenders''style="border-color:#ff0000;"'); ?> type="text" name="NameDesAbsenders" value="" />


Man kann auch mehrere verschiedene Ausgaben für ein und das selbe Feld ausgeben. Beispielsweise den Fehlertext "Dieses Feld muss ausgefüllt werden!" und einen roten Rahmen:

PHP-Quelltext

1
2
<?php errorOutputIfExists('NameDesAbsenders''Dieses Feld muss ausgefüllt werden!'); ?>
<input <?php errorOutputIfExists('NameDesAbsenders''style="border-color:#ff0000;"'); ?> type="text" name="NameDesAbsenders" value="" />



3. Eingegebenen Text wieder herstellen
Der User wurde nun darauf aufmerksam gemacht, dass er vergessen hat das Feld mit seinem Namen zu versehen. Aber leider ist jetzt der ganze Text, den er schon geschrieben hat weg. Das ist nicht so berauschend, wenn man sich doch viel Mühe für den Text gegeben hat. Aber dafür bietet dieses Skript ja glücklicherweise eine Funktion an, die den Text wieder herstellt.
Die Funktion lautet showStrValue() und erwartet als Parameter den Namen des Feldes.
In unserem Fall soll das Textfeld mit dem Mailtext wieder hergestellt werden, also schreiben wir

PHP-Quelltext

1
<textarea name="MailText"><?php showStrValue('MailText'); ?></textarea>


Wenn wir das gleiche auch für die anderen Felder tun wollen, dann muss die Funktion im Value-Attribut notiert werden. Beispiel:

PHP-Quelltext

1
<input type="text" name="EmailDesAbsenders" value="<?php showStrValue('EmailDesAbsenders'); ?>" />


Es empfiehlt sich das bei allen Eingabefeldern zu machen, die einen Text enthalten.

Noch Fragen? Dann her damit!

ronsn

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »ronsn« (25.10.2009, 21:38)

  • Zum Seitenanfang
Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer die sich bedankten:

VisualCreations


VisualCreations

Coder Youngstar

Beiträge: 393

Sprachen: C, VC# und PHP am Lernen; HTML/CSS

4

25.10.2009, 21:38

erstmal keine Fragen, sondern danke!

Supa tut!
Die Seite ist von mir erstellt: jotes-studios.de!
  • Zum Seitenanfang

VisualCreations

Coder Youngstar

Beiträge: 393

Sprachen: C, VC# und PHP am Lernen; HTML/CSS

5

23.11.2009, 19:55

Jetzt doch ne frage:
das war ja jetzt der "grund"teil, könntest du mir nochmal den "Sicherheitscheck"teil erklären?
Wär cool.

VisualCreations
Die Seite ist von mir erstellt: jotes-studios.de!
  • Zum Seitenanfang

ronsn

Level 0,5

Beiträge: 315

Wohnort: Berlin

Beruf: Student

Themenstarter Themenstarter

6

24.11.2009, 21:47

Wenn du zwischen:

Quellcode

1
2
############################################
/* ------- BEGINN: NICHT AENDERN -------- */
und

Quellcode

1
2
############################################
/* --------- ENDE: NICHT AENDERN -------- */
nichts verändert hast, dann ist das schon ok, weil keine zusätzlichen Header-Informationen gesendet werden.
  • Zum Seitenanfang

VisualCreations

Coder Youngstar

Beiträge: 393

Sprachen: C, VC# und PHP am Lernen; HTML/CSS

7

25.11.2009, 15:23

ja, danke, dass ist mir schon klar, aber ich möchte den rest auch gerne verstehen.
Die Seite ist von mir erstellt: jotes-studios.de!
  • Zum Seitenanfang

ronsn

Level 0,5

Beiträge: 315

Wohnort: Berlin

Beruf: Student

Themenstarter Themenstarter

8

02.12.2009, 19:40

Was genau willst du denn wissen? Einige Funktionen habe ich ja schon erklärt.
  • Zum Seitenanfang

VisualCreations

Coder Youngstar

Beiträge: 393

Sprachen: C, VC# und PHP am Lernen; HTML/CSS

9

03.12.2009, 19:01

du hast doch am anfang gesagt, dass mein ursprüngliches Skript u.A. unsicher ist.
Nun wollte ich wissen, wie die Funktionen dort zu verstehen sind, die es sicherer machen.
Die Seite ist von mir erstellt: jotes-studios.de!
  • Zum Seitenanfang

ronsn

Level 0,5

Beiträge: 315

Wohnort: Berlin

Beruf: Student

Themenstarter Themenstarter

10

03.12.2009, 22:16

Also das größte Risiko lag in den Header-Informationen, die du in die mail()-Funktion hinzugefügt hast:

PHP-Quelltext

1
mail($MailAddresse$Betreff$strMailtext"From: ".$Absender)

Die Sicherheitslücke liegt in der Variablen $Absender, deren du am Anfang des Skriptes den Wert von $_POST['Name'] übergeben hast:

PHP-Quelltext

1
$Absender       "Name: $_POST['Name']";

Wenn nun beispielsweise in $_POST['Name'] etwas steht wie:

Zitat


Dann wird die Email an alle diese Adressen geschickt und somit kann jemand von deinem Mail-Skript aus seinen Spam verbreiten.
Diese weiteren Header-Informationen haben dein Skript unsicher gemacht und in meinem sind sie gar nicht erst angegeben.
Da mein Skript noch rudimentär (nicht voll ausgebildet) ist, kann es erweitert werden. Dann könnte es sein, dass eine HTML-Mail gesendet wird. Und wenn dort nun vom User selbst HTML-Code eingegeben wird, dann wird das durch mein Skript unterbunden, falls der Benutzer es wünscht. Siehe dazu auch: http://www.php.net/manual/de/function.htmlspecialchars.php
  • Zum Seitenanfang

Ähnliche Themen

Schülerpraktikum
Blinkster - Das Coumputerforum - dolph-in-forum.de - mynotiz.de - online Notizen - Coole Onlinespiele



Impressum