|
|
|
Gästebuch mit Admin-Freigabe
Zurück zur Übersicht Gästebücher gibt es duzende in Internet. Professionell, gratis und gut. Doch die meisten haben einen riesigen Copyright-Vermerk, oder so komplizierte Quelltexte, dass es einem als Anfänger unmöglich ist den Code zu ändern bzw. das Design zu personifizieren. Weiter werden bei den meisten Gästebücher die Beiträge gleich veröffentlicht. Viele finden es besser, den Beitrag erst freizugeben. Ich habe mir dieses Problem einmal angeschaut, und mit eine kleine Lösung mit MySQL überlegt.
Ich habe es hier in einem kleinen Tutorial dargestellt. (Es ist kein Design vorhanden - den muss man selbst machen).
Benötigt werden dafür lediglich Grundkenntnisse in PHP.
Das Gästebuch mit Admin-Freigabe besteht aus 6 Dateien...
MySQL:
Es wird eine Tabelle benötigt. Folgenden Code sollst du eingeben:
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
CREATE TABLE `guestbook`(
`id` INT( 11 ) NOT NULL AUTO_INCREMENT ,
`title` VARCHAR( 100 ) NOT NULL ,
`name` VARCHAR( 50 ) NOT NULL ,
`email` VARCHAR( 50 ) NOT NULL ,
`message` VARCHAR( 500 ) NOT NULL ,
`show` VARCHAR( 1 ) NOT NULL , PRIMARY KEY ( `id` )
);
|
|
Nun braucht es noch eine "Kerndatei". Ein "config.php", wo die MySQL-Verbindung drin ist:
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
|
<?
//Datenbankverbindung
$host = "localhost";
$host_user = "USERNAME";
$host_password = "PASSWORD";
$host_db = "DATENBANK";
//Admin-Login
$username = "USERNAME";
$password = "PASSWORD";
mysql_connect("$host", "$host_user", "$host_password")or die("Fehler beim verbinden!");
mysql_select_db("$host_db")or die("Kann keine Verbindung mit der Datenbank herstellen!");
?>
|
|
Danach folgt "index.php". Dort kann man einen Eintrag machen, und via SELECT werden alle Beiträge mit "show=1" (also freigegebene Beiträge) angezeigt:
| PHP |
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:
|
<?php
include("config.php");
//Die Dateien werden ausgelesen. show=1 sind alle Beiträge, welche freigegeben wurden.
$sql="SELECT * FROM `guestbook` WHERE `show` = '1'";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){
//Das Design musst du dann selbst machen. :-)
?>
<table border="1" width="500">
<tr>
<td colspan="2"><big><b><? echo $rows['title']; ?></b></big></td>
</tr>
<tr valign="top">
<td width="100">Von: <? echo $rows['name']; ?><br /><a href="mailto:<? echo $rows['email']; ?>"><? echo $rows['email']; ?></a></td>
<td width="400"><? echo $rows['message']; ?></td>
</tr>
</table>
<?
}
mysql_close();
?>
<br /><br />
<hr>
<!-- Hier noch das Formular für einen neuen Beitrag //-->
<b>Einen neuen Beitrag einfügen:</b><br />
<form action="input.php" method="post">
<table>
<tr>
<td>Titel</td>
<td>:</td>
<td><input type="text" name="title" /></td>
</tr>
<tr>
<td>Name</td>
<td>:</td>
<td><input type="text" name="name" /></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><input type="text" name="email" /></td>
</tr>
<tr>
<td>Nachricht</td>
<td>:</td>
<td><textarea name="message"></textarea></td>
</tr>
<tr>
<td colspan="3"><input type="submit" name="submit" value="Einfügen" /></td>
</tr>
</table>
</form>
<br />
<center><small><a href="admin.php">Admin-Bereich</a></small></center>
|
|
Wie man sieht, benötigt man für das Einfügen eines neuen Beitrages die Datei "input.php". Diese besteht lediglich aus einem einfachen MySQL-INPUT Befehl.
| PHP |
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:
|
<?php
include("config.php");
//Alle Variabeln, die man dazu braucht...
$title=$_POST['title'];
$name=$_POST['name'];
$email=$_POST['email'];
$message=$_POST['message'];
$sql="INSERT INTO `guestbook` (`title` , `name` , `email` , `message` , `show` ) VALUES ('$title', '$name', '$email', '$message', '0');";
$result=mysql_query($sql);
if($result){
//Auch hier - Design
?>
Deine Nachricht wurde erfolgreich eingefügt!<br />
Bevor sie eingefügt wird, muss sie erst von einem Administratoren bewilligt werden.<br />
<a href="index.php">zurück</a>
<?
}else {
echo "Fehler beim einfügen!";
}
mysql_close();
?>
|
|
So, nun ist das Gästebuch eigentlich schon fertig. Nun braucht es noch einen Admin-Bereich, mit dem man die Beiträge freigibt:
"login.php" - es ist sehr sicher, da man hier mit sessions arbeitet. Hier werden zudem die Daten aus "config.php" benötigt.
| PHP |
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:
|
<?
session_start();
include("config.php");
if($_SESSION['admin']){
header("Location:admin.php");
}
?>
<form action="" method="post">
<table>
<tr>
<td>Benutzername</td>
<td>:</td>
<td><input type="text" name="username" /></td>
</tr>
<tr>
<td>Password</td>
<td>:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td colspan="3"><input type="submit" name="submit" value="Einloggen" /></td>
</tr>
</table>
</form>
<?
$user = $_POST['username'];
$pw = $_POST['password'];
if(empty($user) || empty($pw)){
echo("Bitte aufüllen!");
}else{
if($username == $user && $password == $pw){
$_SESSION['admin'] = $user;
echo("Du hast dich erfolgreich angemeldet!<br /><a href='admin.php'>Zum Administrations-Bereich</a>");
}
}
?>
|
|
Es fehlt nun noch der Admin-Bereich. "admin.php" besteht ebenfalls aus einer einfachen Abfrage, welche alle Zeilen mit "show=0" abruft.
| PHP |
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:
|
<?
session_start();
if(!$_SESSION['admin']){
header("Location:login.php");
}
include("config.php");
$sql="SELECT * FROM `guestbook` WHERE `show` = '0'";
$result=mysql_query($sql);
while($rows=mysql_fetch_array($result)){
$id = $rows['id'];
?>
<table>
<tr>
<td>Titel</td>
<td>:</td>
<td><? echo $rows['title']; ?></td>
</tr>
<tr>
<td>Name</td>
<td>:</td>
<td><? echo $rows['name']; ?></td>
</tr>
<tr>
<td>Email</td>
<td>:</td>
<td><? echo $rows['email']; ?></td>
</tr>
<tr>
<td>Nachricht</td>
<td>:</td>
<td><? echo $rows['message']; ?></td>
</tr>
<tr>
<td colspan="3"><form action="change.php?id=<? echo $rows['id']; ?>" method="post"><input type="submit" name="submit" value="Freigeben" /></form></td>
</tr>
</table>
<?
}
mysql_close();
?>
|
|
Wie man aus dem Code entnehmen kann, braucht es nun noch die Datei "change.php". Damit ändert es die Zeile mit der id "$id" zu "show=1".
| PHP |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
<?
session_start();
include("config.php");
if(!$_SESSION['admin']){
header("Location:login.php");
}
$id = $_GET['id'];
$sql="UPDATE `guestbook` SET `show` = '1' WHERE `id` = '$id'";
$result=mysql_query($sql);
if($result){
echo("Du hast Beitrag #".$id." erfolgreich freigegeben!<br /><a href='admin.php'>zurück</a>");
}
?>
|
|
So, und das wärs auch schon. :-) Was nun noch fehlt ist das Design.
Kommentare
Zurück zur Übersicht
Autor Item
|
|
|
|