Gästebuch mit PHP (?) programmieren
Steffi
- php
0 OCC0 Steffi0 Twilo0 Tom0 Steffi
-2 Martin2004
2 Tom0 Sebastian Becker1 Schuer-1 Tom
Hallo,
ich möchte gerne ein eigenes einfaches und gutes Gästebuch. Ich weiß nicht mit welcher Programmiersprache, dass machen kann. Aber soweit ich weiß mit PHP.
Es wäre klasse, wenn noch beschrieben wird, wie man es verschönern kann. Weil ich mich in Sachen PHP nicht gut auskenne (eher mit HTML).
Vielen Dank!
LG
Steffi
Also: das layout musst du sowieso mit html machen, nur die funktionen mit php.
Hi,
kann mir auch jemand ein Tutorial geben? Danke für die bisherigen Antworten!
LG
Steffi
Hallo,
kann mir auch jemand ein Tutorial geben? Danke für die bisherigen Antworten!
tut.php-q.net <-- Tutorial
php-faq.de <-- eine kleine FAQ
mfg
Twilo
Hello,
kann mir auch jemand ein Tutorial geben? Danke für die bisherigen Antworten!
Nicht speziell für Gästebücher, aber für PHP allgemein (sollte man vorher sowieso durchgehen...) ist http://tut.php-q.net empfehlenswert. Bis zur Lernkontrolle (ungefähr in der Mitte) solltest Du es wirklich Seite für Seite durchgehen und alles selber ausprobieren. Bitte auch eigene Ideen dazu entwickeln und dann hier ruhig Fragen stellen, wenn die NICHT klappen. Dabei lernt man am meisten.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Vielen Dank! :-)
Hi Steffi,
Hier bekommst du mal ein Code. Denn habe ich auch so mal geschickt bekommen. Wenn du es leiber per Mail haben willst dann schreib mir deine Mail Adresse, denn schicke ich dir das auch zu.
Gruß Martin
Hier kommt der CODE:
Also ich schreibe erst den code dann erklär ich es.
Fangen wir mal an:
install.php
<?php
$connect = mysql_connect("localhost", "root", "") or die (mysql_error());
mysql_select_db("gb") or die (mysql_error());
$sql = 'CREATE TABLE guestbook
('
. 'id
INT( 5 ) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,'
.'name
VARCHAR( 20 ) NOT NULL ,'
.'hp
VARCHAR( 20 ) NOT NULL ,'
.'email
VARCHAR( 100 ) NOT NULL ' .'icq
VARCHAR( 100 ) NOT NULL ' .'beitrag
TEXT NOT NULL ,'
.'ip
VARCHAR( 20 ) NOT NULL ,'
.')';
mysql_query($sql) or die(mysql_error()); ;
mysql_close($connect);
echo "Tabbellen wurden erstellt";
?>
[/code]
Einfach hochladen und install.php klicken und db´s werden erstellt.
index.php
Code:
<html>
<body>
<center><a href="index.php?content=formular">Neuer Eintrag</a>
</center>
<center><br>
<?php
$db= mysql_connect("localhost", "root", "");
mysql_select_db("db");
$anfrage = "SELECT * FROM guestbook
LIMIT 4";
echo "<table border=0 width=378 height=69>";
$ergebnis= mysql_query($anfrage);
$anz=mysql_num_rows($ergebnis);
for($a=$anz-1;$a>-1;$a--)
{
mysql_data_seek($ergebnis, $a);
$zeile=mysql_fetch_row($ergebnis);
echo "
<tr>
<td width=37 height=1>#$zeile[0]</td>
<td width=302 height=19>$zeile[1]</td>
<td width=25 height=19>$zeile[4]</td>
<td width=35 height=19><a href=http://$zeile[2]><img border=0 src=http://alex.minden069.server4you.de/dF/Bilder/gb/hp.gif width=14 height=14></a></td>
<td width=111 height=19><a href=mailto:$zeile[3]><img border=0 src=http://alex.minden069.server4you.de/dF/Bilder/gb/email.gif width=16 height=11></a></td>
</tr>
<tr>
<td width=510 valign=top colspan=5 height=38><br>$zeile[5]</td>
</tr>
<tr>
<td width=37 height=1></td>
<td width=302 height=19></td>
<td width=25 height=19></td>
<td width=35 height=19></td>
<td width=111 height=19></td>
</tr>";
}
echo "</table>";
mysql_close($db);
?>
</center>
</body>
</html>
Erklärung:
Code:
$anfrage = "SELECT * FROM guestbook
";
echo "<table border=0 width=378 height=69>";
$ergebnis= mysql_query($anfrage);
$anz=mysql_num_rows($ergebnis);
for($a=$anz-1;$a>-1;$a--)
{
mysql_data_seek($ergebnis, $a);
$zeile=mysql_fetch_row($ergebnis);
bei der anfrage holen wir die Daten von der Datenbank!
Über echo "<table border=0 width=378 height=69>";
erstellen wir eine tabelle, warum davor? ganz einfach, weil er sonst ganz viele tabellen davon erstellt.
Über ergebnis fragen wir die db damit ab und damit auch die Gästebuch einträge sotiert werden, machen wir eine for schleife!
Der rest versteht sich von selbst :-)
Das html formular! ich habe es mal formular.html genannt!
Code:
<html>
<head>
<title>Eintragen</title>
</head>
<body>
<center>
<b>Neuer Gästebuch Eintrag</b>
</center>
<br>
<div align="center">
<form method="post" action="add.php">
<table border="0">
<td width="100">Name:</td>
<td width="200">
<input type="text" name="name">
</td>
</tr>
<tr>
<td width="100">Homepage:</td>
<td width="200">
<input type="text" name="homepage" >
</td>
</tr>
<tr>
<td width="100">Email:</font></td>
<td width="200">
<input type="text" name="email" >
</td>
</tr>
<tr>
<td width="100">ICQ#:</font></td>
<td width="200">
<input type="text" name="icq">
</td>
</tr>
<tr>
<td width="100" valign="top">Beitrag:</font></td>
<td width="200">
<textarea name="beitrag" rows="7" cols="35"></textarea>
</td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td width="100"> </td>
<td width="200">
<input type="submit" name="Submit" value="Neuer Eintrag">
</td>
</table>
</form>
</div>
</body>
</html>
Ich glaube den html code versteht auch jeder ;-)
wenden wir uns lieber den haupteil der add.php an.
add.php
Code:
<?php
$host = "localhost";
$user = "root";
$pwd = "";
$db = "gb";
$name = $_POST['name'];
$hp = $_POST['homepage'];
$email = $_POST['email'];
$icq = $_POST['icq'];
$beitrag = $_POST['beitrag'];
$ip = $_SERVER['REMOTE_ADDR'];
$verbindung = mysql_connect($host, $user, $pwd);
mysql_select_db($db);
if($verbindung)
{
$sql = "INSERT INTO guestbook
( id
, name
, hp
, email
, icq
, beitrag
, ip
)"
. "VALUES ( "$id", "$name", "$hp", "$email", "$icq", "$beitrag", "$ip" );"
. " ";
mysql_query($sql, $verbindung);
echo "Der Eintrag wurde erfolgreich erstellt<br>\n <a href='index.php'>zurück zum Gästebuch";
mysql_close();
}
else
{
echo "Verbindung konnte nicht hergestellt" . " werden.<br>\n";
echo mysql_errno() . ": ". mysql_error() . "<br>\n";
}
?>
Über $_POST holen wir uns die sachen aus dem action!
Das heißt von der formular.html die abgesendet wurde!
Ich habe mal eine if schleife benutzt fals Fehlermeldungen!
Kann man aber auch wegmachen!
Mit INSERT INTO fügt man dann einfach die sachen ein und fertig ist das GB!
Ich hoffe das tutorial hat euch gefallen!
Sonst würde ich noch mehr machen..
mfg aleX
502 mal angeschaut
Hi Martin,
dass ist ja klasse. Würde es gern per E-Mail zugeschickt bekommen.
Hier meine E-Mail: Steffi_Chan4@hotmail.com
Danke!
Hallo,
dass ist ja klasse. Würde es gern per E-Mail zugeschickt bekommen.
Hier meine E-Mail: Steffi_Chan4@hotmail.com
wenn du ein fertiges haben möchtest,
kann ich dir das Burning Book von Woltlab empfehlen
das Gästebuch ist kostenlos,
nur wenn man den Footer (Copyright) entfernen möchte,
kostet das 200 €
Einige Features kannst du hier nachlesen
hier kannst du dir die Demo anschauen
mfg
Twilo
Hello Martin,
das ist zwar einerseits nett, dass Du Steffi einen "Code" schickst, aber das ist nicht sinnvoll, solange Steffi den nicht versteht. So ein Stück Code kann allzuschnell zu Kot für den Server und das ganze Internet werden.
Es gibt keine echten Kontrollen der User-Daten in diesem Script. Da kann man bestimmt einen Weg finden, die Datenbank kaputt zu machen oder gar das Script als Spam-Schleuder zu missbrauchen.
Oder noch schlimmere Sachen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Martin,
Hier bekommst du mal ein Code. Denn habe ich auch so mal geschickt bekommen.
lösch den Code am besten sofort wieder - sowohl html als auch php sind grausam und z.T. gemeingefährlich.
$connect = mysql_connect("localhost", "root", "") or die (mysql_error());
das ist so ziemlich die schlechteste Art wie man MySql betreiben kann (als root und mit leerem Passwort)
<html>
Doctype fehlt.
<body>
title-Element fehlt.
$anfrage = "SELECT *
lies mal http://php-faq.de/q/q-sql-select.html.
FROM
guestbook
LIMIT 4";
und wo werden die folgenden Einträge abgefragt?
echo "
<tr>
<td width=37 height=1>#$zeile[0]</td> [...]
du weißt, dass ein
echo "text $var text";
wesentlich langsamer ist als ein
echo 'text '.$var.' text';
, ja? außerdem solltest du zur Formatierung CSS verwenden ->width- und height-Attribut entfernen.
[...]<img border=0 src=http://alex.minden069.server4you.de/dF/Bilder/gb/hp.gif width=14 height=14>[...]
hier fehlen die Anführungszeichen um den Wert des src-Attributes sowie das alt-Attribut.
<center>
<b>Neuer Gästebuch Eintrag</b>
</center>
[x] du möchtest <h1> (in Verbindung mit text-align:center;) verwenden.
$sql = "INSERT INTO
guestbook
(id
,name
,hp
,icq
,beitrag
,ip
)"
. "VALUES ( "$id", "$name", "$hp", "$email", "$icq", "$beitrag", "$ip" );"
. " ";
das was du hier machst, ist virtueller Selbstmord. Verwende *nie* Daten die vom User kommen ungeprüft ein einem Query! Du musst die Daten *immer* mit mysql_escape_string() entschärfen.
Ich habe mal eine if schleife benutzt fals Fehlermeldungen!
php-FAQ: 27.4. Was sind eigentlich if-Schleifen?
Kann man aber auch wegmachen!
nein kann man nicht. Es ist sogar noch viel zu wenig Fehlerbehandlung enthalten.
Ich hoffe das tutorial hat euch gefallen!
nein.
mfg aleX
502 mal angeschaut
jetzt könntest du noch verraten, von wo du das kopiert hast.
Grüße aus Nürnberg
Tobias
Hallo Tobias!
echo "
<tr>
<td width=37 height=1>#$zeile[0]</td> [...]
du weißt, dass ein
echo "text $var text";
wesentlich langsamer ist als ein
echo 'text '.$var.' text';
, ja?
Ist das so? AFAIK war das in diesem speziellen Fall genau anders herum. Ist aber auch vollkommen egal, weil sich das nicht wirklich "wesentlich" unterscheidet. In einer normalen Anwendung ist ein Unterschied AFAIR nicht messbar.
Aber sonst stimme ich mit dem überein was Du geschrieben hast.
Grüße
Andreas
Hallo Andreas,
du weißt, dass ein
echo "text $var text";
wesentlich langsamer ist als ein
echo 'text '.$var.' text';
, ja?
Ist das so? AFAIK war das in diesem speziellen Fall genau anders herum. Ist aber auch vollkommen egal, weil sich das nicht wirklich "wesentlich" unterscheidet.
Christian Seiler hat da das mal getestet: *archivlinksuch* http://forum.de.selfhtml.org/archiv/2003/8/54141/#m301020 - und da war die Variante mit der Variable im String deutlich schneller. Evtl. wäre es Interessant mal zu testen, ob das jetzt immernoch so ist, da der Test doch schon fast 1,5 Jahre alt ist?
In einer normalen Anwendung ist ein Unterschied AFAIR nicht messbar.
klar - nur bei entsprechender Länge des Codes (und damit auch der Vorkommen von Variablen im String), macht es eben doch einen Unterschied :-)
Grüße aus Nürnberg
Tobias
Hello Steffi,
ich möchte gerne ein eigenes einfaches und gutes Gästebuch. Ich weiß nicht mit welcher Programmiersprache, dass machen kann. Aber soweit ich weiß mit PHP.
Klar, mit Hilfe von PHP geht das. Es geht aber auch mit vielen anderen Sprachen, die von Deinem jeweiligen Webserver unterstützt werden. Darauf solltest Du als erstes achten.
Der zweite Schritt ist dann, dass Du alle Aspekte (Erscheinungsformen, Formulare, etc) deines Gästebuches aufmalst und in kurzen Worten erklärst. Der Dritte Schritt ist dann, die Zusammenhänge zwischen diesen Aspketen zu ermitteln und festzulegen, bei welcher Aktion was passieren soll.
Wenn Du das fertig hast (geht am besten mit kleinen Zettelchen), dann kannst Du den Pseudocode verfassen und ihn in PHP umsetzen.
Damit Du keine Panik bekommst, hier der erste Schritt des Konzeptes:
Mal Dir den Bildschirm auf, der erscheinen soll, wenn jemand auf
den Link "Gästebuch" klickt.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo, Steffi,
hier gibt es ein Tutorial für ein einfaches Gästebuch-Skript ...
Coding a simple Guestbook using PHP and MySQL
Für den praktischen Einsatz macht es allerdings oftmals mehr Sinn, auf in der Praxis bewährte Open-Source-Skripte zurückzugreifen, wie sie bei hotscripts gelistet werden, z.B. phpBook.
Grüße,
Sebastian
Hallo Sebastian,
hier gibt es ein Tutorial für ein einfaches Gästebuch-Skript ...
Coding a simple Guestbook using PHP and MySQL
das ist etwas genauso schlecht wie das von Martin2004 gepostete.
Grüße aus Nürnberg
Tobias
Hello,
hier gibt es ein Tutorial für ein einfaches Gästebuch-Skript ...
Coding a simple Guestbook using PHP and MySQL
das ist etwa genauso schlecht wie das von Martin2004 gepostete.
Ja, finde ich auch.
1.) Es behandelt die Usereingaben nicht, bevor sie in die Datenbank geschrieben werden.
2.) Statt ein "Affenformular" darauds zu machen, wird hier mit "die()" gearbeitet,
wenn ein Feld nicht ausgefüllt wurde. Das ist nicht ergonmomisch.
3.) Witzig finde ich die "Übernahme" von $_POST[*] nach $* (also z.B. $name = $_POST['name']).
Man sollte sich gar nicht erst angewöhnen, nutlose Redundanzen zu schaffen.
Warum also nicht gleich mit den Array-Elementen arbeiten? Gibts einen Grund dafür?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
3.) Witzig finde ich die "Übernahme" von $_POST[*] nach $* (also z.B. $name = $_POST['name']).
Man sollte sich gar nicht erst angewöhnen, nutlose Redundanzen zu schaffen.
Warum also nicht gleich mit den Array-Elementen arbeiten? Gibts einen Grund dafür?
ich persönlich finde es unübersichtlich, wenn ständig im Script
$_POST['name']
oder vielleicht noch besser
isset($_POST['name']) && $_POST['name'] == 'bla' steht
mfg
Twilo
Hello,
ich persönlich finde es unübersichtlich, wenn ständig im Script
isset($_POST['name']) && $_POST['name'] == 'bla' steht
Für einen solchen Einsatz kann man sich auch eine Funktion schreiben, die beides auf einmal sicher überprüft. Das lohnt sich, und die Zeiten, in denen 100 Taktzyklen extra für den Function Call tödlich waren, sind vorbei.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
ich persönlich finde es unübersichtlich, wenn ständig im Script
isset($_POST['name']) && $_POST['name'] == 'bla' steht
Für einen solchen Einsatz kann man sich auch eine Funktion schreiben, die beides auf einmal sicher überprüft. Das lohnt sich, und die Zeiten, in denen 100 Taktzyklen extra für den Function Call tödlich waren, sind vorbei.
ich mache es imemr so
$name = _variabel('name', 'get');
ich kann da noch ein 3 Parameter ranhängen, der dann ein Standardwert ist, falls die Variabel nicht existiert
wie meinst du das mit deiner Funktion udn den 100 Taktzyklen? :-?
mfg
Twilo
Hello,
wie meinst du das mit deiner Funktion udn den 100 Taktzyklen? :-?
Jeder Funktionsaufruf kostet Zeit.
Wenn man einzelne Statements als Sequenz schreibt, und dies redundant an allen Stellen einfügt, an denen die Sequenz erforderlich ist, benötigt das Programm i.d.R. weniger Zeit, als wenn man die Sequenz zu einer Funktion umbaut, und an den entsprechenden Stellen aufruft.
Zu Assemblerzeiten hat man darauf noch oft Rücksicht genommen.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo,
ich möchte gerne ein eigenes einfaches und gutes Gästebuch.
Alex hat da eins für dich: http://www.mylittlehomepage.net/de/gaestebuch_skript.html. Daraus kannst du dann hinterher, wenn du dich näher mit PHP beschäftigen möchtest, auch gleich lernen, wie man sowas macht.
Gruß,
_Dirk°
Hello,
Alex hat da eins für dich: http://www.mylittlehomepage.net/de/gaestebuch_skript.html. Daraus kannst du dann hinterher, wenn du dich näher mit PHP beschäftigen möchtest, auch gleich lernen, wie man sowas macht.
Das sieht tatsächlich schon ganz gut aus.
Nur schade, dass es auch noch teilweise in Spaghetti-Code geschrieben ist und nicht sauber in Funktionen und Steuerfluss aufgeteilt ist.
Es wäre dann bestimmt sogar geeignet, ein Tut drumherum zu schreiben ;-)
Harzliche Grüße aus http://www.annerschbarrich.de
Tom