Gästebuch Tutorial mit IP Speicherung

vom 16.04.2008, 14:02 Uhr

Wie hat euch das Tutorial gefallen?

Umfrage endete am 23.04.2008, 14:02
Sehr gut
0
Keine Stimmen
Gut
1
25%
Befriedigend
1
25%
Genügend
1
25%
Nicht genügend
1
25%
 
Abstimmungen insgesamt : 4

Guten Tag!
In diesem Tutorial möchte ich Euch zeigen, wie man mit Hilfe von PHP ein Gästebuch erstellt.
ANMERKUNG: Tutorial mit MySQL und nicht mit .txt Dateien!!
Zu Beginn überlegen wir, was für Eingabe-Felder wir denn überhaupt für das Gästebuch benötigen.
In diesem Beispiel verwende ich folgende Felder:
------------------------------------HTML CODE-------------------------------------------
Namen: || Name: <input type=”text” name=”Name” size=”20”>
------------------------------------------------------------------------------------------------
E-Mail: || E-Mail: <input type=”text” name=”Mail” size=”20”>
------------------------------------------------------------------------------------------------
Homepage || Homepage: <input type=”text” name=”hp” size=”20”>
------------------------------------------------------------------------------------------------
Nachricht: || Nachricht: <textarea name="nachricht" cols="40"
rows="10"></textarea>
------------------------------------------------------------------------------------------------

So... nun haben wir die Eingabefelder.
Kommen wir weiter zum schwierigeren Teil: Der PHP Datei und der Datenbank.

Fangen wir mit der Datenbank an:
Wir brauchen 6 Felder:
Feld Nummer 1: ID
Feld Nummer 2: IP
Feld Nummer 3: Name
Feld Nummer 4: E-Mail
Feld Nummer 5: Homepage
Feld Nummer 6: Nachricht

Dazu könnt ihr gleich den vorbereiteten Script Benützen:

CREATE TABLE guestbook (
ID Int(11) NOT NULL auto_increment,
IP VarChar(100) NOT NULL default '',
Name VarChar(100) NOT NULL default '',
E-Mail VarChar(100) NOT NULL default '',
Nachricht VarChar(100) NOT NULL default '',
PRIMARY KEY (Id)
)

Als nächstens legen wir auf dem Server eine PHP Datei mit dem Namen “eintrag.php” an.
In diese schreiben wir:

<?php
$verbindung = mysql_connect ("localhost",
"Username", "Passwort")
or die ("Benutzern. oder PW sind falsch");

mysql_select_db("guestbook")
or die ("Die Datenbank ist nicht vorhanden!");
?>

 Dieser Script stellte eine Verbindung mit der Datenbank her.
Ihr müsst einfach nur noch bei Username euren Benutzernamen und bei Passwort euer Passwort angeben!

Als nächstens werden die Einträge von der Abfrage auf die Datenbank gespeichert:

<?php
$eintrag = "INSERT INTO guestbook
(IP, Name, E-Mail, Homepage, Nachricht)

VALUES
('$IP', '$Name', '$E-Mail', '$Homepage', '$Nachricht')";

$eintragen = mysql_query($eintrag);
?>

Damit die Variablen noch einen Wert bekommen müsst ihr folgendes hinzufügen:
$IP = $_SERVER['REMOTE_ADDR'];
$Name = $_POST['Name'];
$E-Mail = $_POST['E-Mail'];
$Homepage = $_POST['Homepage'];
$Nachricht = $_POST['Nachricht'];

Am Schluss zeig ich euch noch, wie ihr die Einträge in einer Tabelle anzeigen könnt (neue Datei auf dem Server anlegen mit Name: anzeigen.php):

<?php
$abfrage = "SELECT Name, E-Mail, Homepage, Nachricht FROM guestbook";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "<table border=’1’>";
echo "<tr>";
echo "<td>";
echo "Name:";
echo "</td>";
echo "<td>";
echo "$row->Name";
echo "</td>";
echo "</tr>";

echo "<tr>";
echo "<td>";
echo "E-Mail:";
echo "</td>";
echo "<td>";
echo "$row->E-Mail";
echo "</td>";
echo "</tr>";

echo "<tr>";
echo "<td>";
echo "Homepage:";
echo "</td>";
echo "<td>";
echo "$row->Homepage";
echo "</td>";
echo "</tr>";

echo "<tr>";
echo "<td>";
echo "Nachricht:";
echo "</td>";
echo "<td>";
echo "$row->Nachricht";
echo "</td>";
echo "</tr>";
echo "</table>";
}
?>

Hier noch einmal den ganzen Script:

Datei: index.htm:
<form name=“cmd“ action=“guestbook.php“ method=“POST“>
Name: <input type=”text” name=”Name” size=”20”>
E-Mail: <input type=”text” name=”Mail” size=”20”>
Homepage: <input type=”text” name=”Homepage” size=”20”>
Nachricht: <textarea name="Nachricht" cols="40" rows="10"></textarea>

Datei guestbook.php:

<?php
$verbindung = mysql_connect ("localhost",
"Username", "Passwort")
or die ("Benutzern. oder PW sind falsch");

mysql_select_db("guestbook")
or die ("Die Datenbank ist nicht vorhanden!");

$eintrag = "INSERT INTO guestbook
(IP, Name, E-Mail, Homepage, Nachricht)

VALUES
('$IP', '$Name', '$E-Mail', '$Homepage', '$Nachricht')";

$eintragen = mysql_query($eintrag);
?>


Datei anzeigen.php:
<?php
$abfrage = "SELECT Name, E-Mail, Homepage, Nachricht FROM guestbook";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo "<table border=’1’>";
echo "<tr>";
echo "<td>";
echo "Name:";
echo "</td>";
echo "<td>";
echo "$row->Name";
echo "</td>";
echo "</tr>";

echo "<tr>";
echo "<td>";
echo "E-Mail:";
echo "</td>";
echo "<td>";
echo "$row->E-Mail";
echo "</td>";
echo "</tr>";

echo "<tr>";
echo "<td>";
echo "Homepage:";
echo "</td>";
echo "<td>";
echo "$row->Homepage";
echo "</td>";
echo "</tr>";

echo "<tr>";
echo "<td>";
echo "Nachricht:";
echo "</td>";
echo "<td>";
echo "$row->Nachricht";
echo "</td>";
echo "</tr>";
echo "</table>";
}
?>


Bei Fragen könnt ihr euch gerne an mich per PN wenden. Oder ihr hinterlässt einfach ein Kommentar, falls etwas nicht funktioniert hat…

Liebe Grüße,
Alexander Breuss

» noname1994-2 » Beiträge: 34 » Talkpoints: 0,13 »



Hi,
also ich sehe überflüssige codes drin. Am besten wäre es wenn du es alles speichern würdest und irgendwo hochlädst.

» Cekic » Beiträge: » Talkpoints: Gesperrt »


Hallo Alexander,

danke für die Mühe!
Ich hab zwar so meine Zweifel, daß ich es hinbekomme, das alles umzusetzen, aber trotzdem werde ich es mal versuchen. Dann kann ich dir auch antworten, wie mir das Tutorial gefallen hat, wie verständlich ich es finde etc. ;)

Aber was ich nicht verstehe:
Was mache ich mit diesem CREATE TABLE guestbook? Ich hab phpMyAdmin. Gebe ich das dort ein, um eine neue Datenbank(-Tabelle?) anzulegen?
Ansonsten gut, daß du unten nochmal alles aufgezählt hast, was man alles anlegen muß und so. Ob nun überflüssige Code-Schnipsel enthalten sind oder nicht, kann ich als PHP-Laie nicht beurteilen… ;)

Viele Grüße vom lalelu

Benutzeravatar

» lalelu » Beiträge: 161 » Talkpoints: -1,28 » Auszeichnung für 100 Beiträge



Hallo!

Freue mich, dass Du mein Tutorial umsetzt!
Hab ich ganz vergessen zu erwähnen, wie das mit dem CreateTable funktioniert :?

Hier der Nachtrag:
Du startest PHPmyAdmin.
Dann befindet sich in der oberen Spalte:
Anzeigen -- Struktur -- SQL -- Suche -- ...

Hier wählst du SQL aus!
Dann kopierst du einfach folgenden Text in das große weiße Feld:
CREATE TABLE guestbook (
ID Int(11) NOT NULL auto_increment,
IP VarChar(100) NOT NULL default '',
Name VarChar(100) NOT NULL default '',
EMail VarChar(100) NOT NULL default '',
Nachricht VarChar(100) NOT NULL default '',
PRIMARY KEY (Id)
)

Danke, dass du mich darauf noch einmal aufmerksam gemacht hast!
Und nun habe ich noch einen kleinen Fehler bemerkt:
es muss
EMail VarChar(100) NOT NULL default '', und nicht
E-Mail VarChar(100) NOT NULL default '', heißen!!

Folgende Zeilen ändern sich zu:
$abfrage = "SELECT Name, EMail, Homepage, Nachricht FROM guestbook";

$eintrag = "INSERT INTO guestbook
(IP, Name, EMail, Homepage, Nachricht)

Bei Interesse, kann ich den ganzen Script korrigiert noch einmal hineinkopieren...

LG. Alex

» noname1994-2 » Beiträge: 34 » Talkpoints: 0,13 »



Danke dir!
Vielleicht kann das ja ein Moderator im oberen ersten Beitrag noch ändern, was du gerade verbessert hast?
Ich berichte dann heute abend mal, wie es geklappt hat. Ich hoffe, ich finde noch eine freie Datenbank zum Experimentieren. Bisher wirkt das noch alles so, als sei es recht einfach umzusetzen – das dachte ich aber schon so einige Male, und dann endete es im halben Chaos…  :lol:

Benutzeravatar

» lalelu » Beiträge: 161 » Talkpoints: -1,28 » Auszeichnung für 100 Beiträge


So, habe mich mal rangesetzt. Für mich als PHP-Laie ist es eine Nummer zu hoch und nur mit Hilfe des Threads hier nicht umsetzbar. Erstelle ich die Dateien so, wie es hier angeben ist, kann ich erst gar nichts eintragen, denn die Seite zum Eintragen (ist doch die index.htm?) hat keinen Submit-Button. ;) Wie ich den erstelle, so daß es auch funktioniert, wüßte ich selbst nicht.

Dann habe ich keine Ahnung, was ich mit
<?php
$eintrag = "INSERT INTO guestbook
(IP, Name, E-Mail, Homepage, Nachricht)

VALUES
('$IP', '$Name', '$E-Mail', '$Homepage', '$Nachricht')";

$eintragen = mysql_query($eintrag);
?>
anfange. Wohin damit?

Dasselbe frage ich mich bei
$IP = $_SERVER['REMOTE_ADDR']; usw.

Jemand, der Ahnung von der Materie hat, kann sicherlich etwas damit anfangen, ich leider nicht…

Benutzeravatar

» lalelu » Beiträge: 161 » Talkpoints: -1,28 » Auszeichnung für 100 Beiträge


Es wäre vielleicht auch besser, wenn du mehr auf die Funktionen eingehst, damit PHP-Anfänger auch wissen, was was macht und so auch selber Bugs fixen und das Script modifizieren können. Außerdem kann ich dir nur zu mysql_escape_string() raten. Das erhöht die Sicherheit deines Scripts um einiges und es kommt bei falschen Eingaben keine plötzlichen Fehler.

Benutzeravatar

» Diablo » Beiträge: 358 » Talkpoints: 0,34 » Auszeichnung für 100 Beiträge



Hallo!

Da hat's mir doch tatsächlich 2 Zeilen rausgelöscht :twisted::
Der Inhalt der index Datei:

<form name=“cmd“ action=“guestbook.php“ method=“POST“>
Name: <input type=”text” name=”Name” size=”20”>
E-Mail: <input type=”text” name=”Mail” size=”20”>
Homepage: <input type=”text” name=”Homepage” size=”20”>
Nachricht: <textarea name="Nachricht" cols="40" rows="10"></textarea>
<input type="submit" value="Absenden" name="absenden">
</form>

Werde mich morgen Abend noch einmal hinhocken und das Tutorial überarbeiten. Die Überarbeitete Fassung werde ich dann morgen Abend ober übermorgen Morgen wieder ins Netz stellen...

Bis dahin bitte ich Euch noch zu warten :)
Dann werden auch die einzelnen Schritte erklärt.

Liebe Grüße,
Alexander Breuss

» noname1994-2 » Beiträge: 34 » Talkpoints: 0,13 »


Ähnliche Themen

Weitere interessante Themen

^