» Startseite
» Newsübersicht
» Kontakt
» Impressum

» Forum
» Gästebuch

» Einführung PHP
   » Anfang
   » Erste Schritte
   » Variablen
   » if-Anweisung
   » Log. Operatoren
   » Übung
   » Dateien
   » Schleifen
   » Array
   » Dateien Teil 2
   » Datum & Zeit
   » Mail Funktion
   » Sessions

» Einführung MySQL

PHP-Einfach.de

Counterdienst:
Digicount.de
Unser werbefreier Counter- und Statistikdienst

Übung

Dann wollen wir das Gelernte mal etwas anwenden.


Als erstes machen wir eine Passwortabfrage, bei der das Passwort verschlüsselt wird.

Zuerst brauchen wir wieder ein Formular.

Das sieht ungefähr so aus:
<form action="seite2.php" method="post">
Benutzername:<br>
<input type="Text" name="username"><br><br>

Passwort:<br>
<input type="Password" name="passwort">

<input type="Submit" value="Absenden">
</form>

Passwortabfragen sollten immer mit post übermittelt werden, denn wenn es mit get übermitteln wurde, würde jeder später im Verlauf sehen können, welches Passwort man benutzt.

Jetzt kommen wir zum PHP Teil

<?php
$username = $_POST["username"];
$passwort = $_POST["passwort"];

$pass = md5($passwort);
?>
Als erstes fragen wir die übertragenden Daten ganz einfach wieder ab.

Mit md5 verschlüsseln wie jetzt das Passwort. Benutzt man dafür md5 so kann dieser Verschlüsselung nicht wieder rückgängig gemacht werden.

Ein Wort das mit md5 verschlüsselt wurde, sieht dann ca. so aus:
fd0d9cdefd5d42dfa36c74a449aa8214 (php-einfach)

Damit wir jetzt eine if-Anweisung machen können, müssen wir zuerst das Passwort in einen md5-String (Text) umwandeln.

Dafür können wir den md5-Generator benutzen, oder wir machen einen eigenen Generator.

Unseren Code müssen wir dann so abwandeln.

<?php
$username = $_POST["username"];
$passwort = $_POST["passwort"];

$pass = md5($passwort);

echo $pass;
?>
Drücken wir auf Absenden bei dem Formular, erhalten wir das eingegebene Wort als md5-String (Text) wieder ausgegeben. Diesen Code kopieren wir uns dann.

Achtung: Die md5-Funktion unterscheidet zwischen Groß- und Kleinschreibung.

clanwissen sieht umgewandelt so aus:
c6a7fa7d60010437e84ad75cae1fa928

Clanwissen sieht umgewandelt so aus:
5d959937101f826b0b67bb3a8c1cbb27

Jetzt kommt die if-Anweisung. Damit überprüfen wir, ob das verschlüsselte Passwort das gleiche ist, das wir gespeichert haben.

Unser Code sieht dann so aus:

<?php
$username = $_POST["username"];
$passwort = $_POST["passwort"];

$pass = md5($passwort);

if($username=="Andavos" and
$pass=="fd0d9cdefd5d42dfa36c74a449aa8214")
   {
   echo "Herzlich Willkommen";
   }
else
   {
   echo "Login Fehlgeschlagen";
   }
?>
In der if-Anweisung schreiben wir jetzt unseren md5-String (Text) hinein.

Drückt man bei dem Formular auf Absenden, so werden diese Daten an seite2.php gesendet.
seite2.php fragt diese Eingaben ab, und verschlüsselt das Textfeld passwort in einen md5-String.
Die if-Anweisung fragt dann ab, ob das eingegebene, verschlüsselte Passwort das gleiche ist, das in der if-Anweisung steht.

Was habe ich jetzt davon?
Wenn jemand jetzt deinen Quelltext sieht, kann er nicht sofort erkennen, welches Passwort man braucht, um in den internen Bereich zu kommen.
Die md5-Funktion ist auch wichtig, wenn man später Datenbanken benutzt, bei dem sich der User mit Passwort und Benutzername einträgt.

Wenn man ein Passwort in einer Variable speichert, dann kann man bei manchen Free-Webspace Anbietern ganz einfach diese Variable "ausspionieren". Diese Person hat dann ihr Passwort.
Wenn es aber verschlüsselt abgespeichert wurde, erhält er nur den md5-String, und weil man diesen nicht entschlüsseln kann, ist ihm dieser Code so gut wie nutzlos.


Als nächstes überprüfen wir, ob alle Felder ausgefüllt wurden.

Wieder brauchen wir ein Formular:

<form action="seite2.php" method="post">
E-Mail:<br>
<input type="Text" name="email"><br><br>

Kommentar:<br>
<textarea name="kommentar" cols="30" rows="5">
</textarea>

<input type="Submit" value="Absenden">
</form>
In diesem Formular gibt man seine E-Mail Adresse an und ein Kommentar.

Diese Daten werden an seite2.php geschickt:
<?php
$email = $_POST["email"];
$kommentar = $_POST["kommentar"];

if($email=="" OR $kommentar=="")
   {
   echo "Bitte füllen Sie alle Felder aus";
   }

else
   {
   echo "Ihr Eintrag wurde gespeichert";
   }
?>
Wie immer fragen wir zuerst die übermittelten Daten ab.
Mit der if-Anweisung schauen wir, ob beide Felder ausgefüllt wurden, dazu brauchen wir OR.

Wenn ein oder beide Felder leer sind, erhält der Besucher eine Fehlermeldung.
Wenn er sie aber ausgefüllt hat, werden seine Eingaben gespeichert.
Wie das speichern geht, erfahrt ihr später.

Solch eine if-Anweisung braucht man ziemlich oft, z.B. bei Gästebüchern wird eine solche if-Anweisung fast immer eingebaut.

Wie bereits versprochen, kann man mit PHP mehrere (unendlich) HTML-Dokumente in einer PHP-Datei speichern.

Dies geht ganz einfach mit der GET Methode.

Deswegen braucht unser PHP-Dokument eine GET-Abfrage.

Die sieht so aus:
<?php
$seite = $_GET["seite"];
?>
Damit haben wir jetzt als Eingabefeldnamen seite benutzt. Dieser Wert ist in der Variable $seite gespeichert. Natürlich könnt ihr auch andere Namen benutzen, dann müsst ihr aber später aufpassen.

Wie wir bereits gelernt haben, werden Daten, die mit GET übermittelt werden, an die URL angehängt. Also brauchen wir kein Formular, um bestimmte Eingaben zu senden, sondern hängen wir diese einfach an die URL dran und drücken dann Enter.

Danach brauchen wir eine IF-Anweisung, die prüft was eingegeben wurde.

Diese kann so aussehen:
<?php
if($seite=="index")
   {
   echo "Herzlich Willkommen auf der Indexseite";
   }
?>
Rufen wir dann im Browser diese Datei auf, erhalten wir zuerst eine leere Seite. Hängen wir aber jetzt an die URL ?seite=index dran, erhalten wir die Ausgabe, die zwischen unserer IF-Anweisung steht.

Somit können wir jetzt beliebig viele Unterseiten einfügen.

Das sieht dann ca. so aus:

<?php
$seite = $_GET["seite"];

if($seite=="index")
   {
   echo "Indexseite";
   }

if($seite=="start")
   {
   echo "Startseite";
   }
?>
Rufen wir jetzt unsere URL mit dem Anhang ?seite=index auf, erhalten wir als Ausgabe nur Indexseite, rufen wir allerdings diese Seite mit dem Anhang ?seite=start auf, erhalten wir als Ausgabe nur Startseite.

Somit können wir viele Unterseiten in einer PHP-Datei speichern.

Wenn man möchte, das der Browser eine bestimmte Seite aufruft, wenn man nichts an die URL drangehängt, brauchen wir isset. Damit können wir überprüfen, ob eine Variable (z.B. $seite) einen Inhalt besitzt. Falls wir überprüfen möchten, ob eine Variable leer ist, benutzen wir !isset

Das Ausrufungszeichen ! steht für NOT. Die Funktion isset(); gibt entweder TRUE, sofern die Variable existiert, sonst FALSE. Das NOT davor dreht das Ergebnis um.
Dies bedeutet, wenn die Variable existiert, wir aber !isset(); schreiben, erhalten wir ein FALSE. Wenn sie nicht existiert, ein TRUE.

Der Script sieht dann so aus:


<?php
$seite = $_GET["seite"];

if(!isset($seite))
   {
   $seite="index";
   }

if($seite=="index")
   {
   echo "Indexseite";
   }

if($seite=="start")
   {
   echo "Startseite";
   }
?>
Wenn wir die Datei ohne Anhang aufrufen, erhalten wir die Ausgabe von ?seite=index.

Links könnten dann so aussehen:
<a href="seite1.php?seite=index">Indexseite</a>
<a href="seite1.php?seite=start">Startseite</a>
Natürlich könnten die Links auch in einer der if-Anweisungen stehen, ca. so:
<?php
$seite = $_GET["seite"];

if(!isset($seite))
   {
   $seite="index";
   }

if($seite=="index")
   {
   echo "Indexseite";
   echo "<a href=\"?seite=start\">Zur Startseite</a>";
   }

if($seite=="start")
   {
   echo "Startseite";
   echo "<a href=\"?seite=index\">Zur Indexseite</a>";
   }
?>
Formulare können wir auch innerhalb einer Datei verschicken, dafür müssen wir nur bei action den richtigen Anhang eintragen.

Ungefähr so:
<form action="?seite=start" method="post">
Wenn das Formular innerhalb eines Dokumentes verschickt werden soll, reicht der Anhang, wenn wir das aber an eine andere Seite schicken möchten, dann müssen wir auch den Dateinamen angeben.

Wozu braucht man dies?
Klar könnten wir alles in verschiedenen Dateien speichern, aber hat man z.B. bei einer Registration mehrere Schritte (z.B. 10), dann müsste man 10 Dateien anlegen, mit diesem Prinzip aber nur 1 Datei.

Als nächstes Speichern wir etwas in eine Datei

Autor Andavos

News

Forum

Newsletter


© PHP-Einfach.de 2003 - 2007