PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
PHP Forum
Mathe Nachhilfe
Suchmaschinenoptimierung

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&uuml;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&uuml;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&uuml;gt!<br />
Bevor sie eingef&uuml;gt wird, muss sie erst von einem Administratoren bewilligt werden.<br />
<a href="index.php">zur&uuml;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&uuml;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&uuml;ck</a>");    
}
?>


So, und das wärs auch schon. :-) Was nun noch fehlt ist das Design.

Kommentare

Zurück zur Übersicht

Autor Item

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» Entwickler Forum

» insert nach login

» Tabellenzelle zu groß







© PHP-Einfach.de 2003 - 2012