Uitgebreider Gastenboek
Ik heb het gastenboek van Donhertog gebruikt voor mijn eigen website. Omdat ik problemen heb met mijn regel-website, kan ik niet bij mijn SQL-server komen, en moet ik al mijn SQL-werk mbv PHP-scripts regelen. Daarom heb ik het script aangepast zodat ik ook alles kan beheren in het gastenboek: - Berichten verwijderen - Scheldwoordenfilter uitbreiden - Smiley's toevoegen (uploaden) en verwijderen Wat ik nog toevoegen in de toekomst: - Inloggen voor de webmaster - IP-ban - Bij veel berichten meerdere pagina's aanmaken (bv 10 berichten per pagina) Tabellen: Voor het gastenboek: $qTabelmaken = 'CREATE TABLE `gastenboek` ( `id` int(55) NOT NULL auto_increment, `naam` varchar(55) NOT NULL, `reactie` text NOT NULL, `email` varchar(55) NOT NULL, `datum` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14'; $rTabelmaken = mysql_query( $qTabelmaken ); Voor de scheldwoordenfilter: $qTabelmaken = 'CREATE TABLE `gastenboekscheldwoorden` ( `id` int(55) NOT NULL auto_increment, `woord` varchar(55) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14'; $rTabelmaken = mysql_query( $qTabelmaken ); voor de smiley's: $qTabelmaken = 'CREATE TABLE `gastenboeksmiley` ( `id` int(55) NOT NULL auto_increment, `afbeelding` varchar(55) NOT NULL, `afkorting` varchar(120) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14'; $rTabelmaken = mysql_query( $qTabelmaken ); Ik hoop dat Donhertog het niet erg vind dat ik dit post, zo wel, laat maar weten, dan verwijder ik hem direct weer.
[code]
<!DOCTYPE html PUBLIC "-//W3C//
DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR?xhtml1/DTD/
xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/
xhtml">
<head>
<meta http-equiv="content-type"
content="text/html; charset=
iso-8859-1"/>
<title>GASTENBOEK</title>
<script language='javascript' type='text/javascript'>
function emoticon(text) {
text = ' ' + text + ' ';
if (document.book.message.createTextRange && document.book.message.caretPos) {
var caretPos = document.book.message.caretPos;
caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
document.book.message.focus();
} else {
document.book.message.value += text;
document.book.message.focus();
}
}
</script>
</head>
<body>
<?php
include "connect.php"; // Verbinding maken met de database
include "style.css"; //optioneel
$actie=$_GET['actie'] OR $actie=$_POST['actie'];
if ($actie == 'webmaster') //
{
if ($webmasteractie =='verwijder') // Items verwijderen uit de lijst
{
$result = mysql_query ("SELECT * FROM gastenboek order by id desc")or die (mysql_error());
while ($array = mysql_fetch_array($result))
{
// Maak per bericht een FORM aan, aan de hand van de id in de FORM ACTION wordt de geselecteerde item verwijderd
?>
<form action="gastenboek.php?actie=webmaster&webmasteractie=delete&id=<? echo $array['id'] ?>" method="post" name="delete">
<table border=1 cellspacing=0 width=650 align=center>
<tr>
<td width='300'>
<a href='mailto:<? echo $array['email'] ?>'> <? echo $array['naam'] ?></a>
</td>
<td align="left">
<? echo $array['datum'] ?>
</td>
</tr>
<tr>
<td colspan="2">
<? echo $array['reactie']; ?>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="wissen" value="Wissen">
</td>
</tr>
</table><br><br>
<?php
}
?>
</form>
<?php
}
else if ($webmasteractie == 'delete') //Het verwijderen van berichten
{
$news_SQL_del="DELETE FROM gastenboek WHERE id=$id";
$bool=mysql_query($news_SQL_del);
?>
<table align=center><tr><td>Bericht is verwijderd<br>
<a href='gastenboek.php'>Gastenboek</a> - <a href=gastenboek.php?actie=webmaster>Webmaster</a></td></tr></table>
<?
}
else if ($webmasteractie == 'scheldwoorden') //Het toevoegen van scheldwoorden
{
?>
<form action="gastenboek.php?actie=webmaster&webmasteractie=scheldwoordentoevoegen" method="post" name="scheldwoordentoevoegen">
<table align="center"><tr><td>Scheldwoord: <input type="text" name="woord"><input type="submit" value="toevoegen"></td></tr></table>
</form>
<?
}
else if ($webmasteractie == 'scheldwoordentoevoegen') //Het toevoegen van scheldwoorden
{
$sql = ("INSERT INTO gastenboekscheldwoorden (id, woord) VALUES ('', '$woord')");
$result = mysql_query ($sql) or die (mysql_error());
?>
<table align="center"><tr><td>
Het scheldwoord <? echo $woord; ?> is toegevoegd aan de filter.<br>
<a href=gastenboek.php?actie=webmaster&webmasteractie=scheldwoorden>Nog een woord toevoegen</a><br />
<a href=gastenboek.php?actie=webmaster>Webmaster-site</a>
</td></tr></table>
<?
}
else if ($webmasteractie == 'smiley') //Het uploaden van smileys, hierbij wordt ervan uitgegaan dat de smiley's in images/smilies/ staan
{
?>
<form method="post" action="gastenboek.php?actie=webmaster&webmasteractie=smileyupload" enctype="multipart/form-data">
<table align="center"><tr><td>
<input type="file" name="afbeelding"><br>
Afkorting: <input type="text" name="afkorting">
</td></tr>
<tr><td align="center">
<input type="submit" name="submit" value="uploaden">
</td></tr>
</table>
</form>
<table align="center"><tr><td colspan="2"><b>Reeds gebruikte afkortingen:</b></td></tr>
<?
$result = mysql_query ("SELECT * FROM gastenboeksmiley order by id desc")or die (mysql_error());
while ($array = mysql_fetch_array($result))
{
echo "<tr><td>".$array['afkorting']."</td><td><img src=images/smilies/".$array['afbeelding']."></td></tr>";
}
?>
</table>
<?
}
else if ($webmasteractie == 'smileyupload') //Het uploaden van smileys
{
$locatie="images/smilies/"; //of een andere map, vergeet niet de w-rechten
if(is_uploaded_file($_FILES['afbeelding']['tmp_name']))
{
//controleer grootte
if($_FILES['afbeelding']['size']>15000)
{ //bepaal zelf de max. grootte in bytes
echo "Het bestand is te groot<br><a href=javascript:history.go(-1)>Terug</a>";
}
//controleer extensie, voeg maar andere toe
elseif(!eregi("((.gif|.jpg)$)", $_FILES['afbeelding']['name']))
{
echo "het bestand is niet van het juiste type<br><a href=javascript:history.go(-1)>Terug</a>";
}
elseif(!move_uploaded_file($_FILES['afbeelding']['tmp_name'],
$locatie.$_FILES['afbeelding']['name']))
{
echo "het bestand kan niet worden verplaatst<br><a href=javascript:history.go(-1)>Terug</a>";
}
else
{
$bestandsnaam=$_FILES['afbeelding']['name'];
$sql = ("INSERT INTO gastenboeksmiley (id, afbeelding, afkorting) VALUES ('', '$bestandsnaam', '$afkorting')");
$result = mysql_query ($sql) or die (mysql_error());
?>
<table align="center"><tr><td>
De smiley <? echo "<img src=images/smilies/".$bestandsnaam."> met afkorting ".$afkorting; ?> is toegevoegd aan de smiley-lijst.<br>
<a href=gastenboek.php?actie=webmaster&webmasteractie=smiley>Nog een smiley toevoegen</a><br />
<a href=gastenboek.php?actie=webmaster>Webmaster-site</a>
</td></tr></table>
<?
}
}
}
elseif ($webmasteractie =='smileyverwijder') // Smileys verwijderen uit de database. Ik ben er nog niet achter hoe ik hem ook al bestand verwijder, maar dat kan ik ook via FTP
{
$result = mysql_query ("SELECT * FROM gastenboeksmiley order by id desc")or die (mysql_error());
while ($array = mysql_fetch_array($result))
{
// Maak per bericht een FORM aan, aan de hand van de id in de FORM ACTION wordt de geselecteerde item verwijderd
?>
<form action="gastenboek.php?actie=webmaster&webmasteractie=smileydelete&id=<? echo $array['id'] ?>" method="post" name="delete">
<table border=1 cellspacing=0 width=650 align=center>
<tr>
<td>
<? echo "<img src=images/smilies/".$array['afbeelding']."> ".$array['afkorting']; ?>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" name="wissen" value="Wissen">
</td>
</tr>
</table><br><br>
</form>
<?php
}
}
else if ($webmasteractie == 'smileydelete') //Het verwijderen van de smileys uit de database
{
$news_SQL_del="DELETE FROM gastenboeksmiley WHERE id=$id";
$bool=mysql_query($news_SQL_del);
?>
<table align=center><tr><td>Smiley is verwijderd<br>
<a href=gastenboek.php?actie=webmaster&webmasteractie=smileyverwijder>Nog een smiley verwijderen</a><br />
<a href=gastenboek.php?actie=webmaster>Webmaster-site</a></td></tr></table>
<?
}
else //Als er geen webmasteractie is aangegeven, dan gewoon het 'homepage' van de webmaster weergeven
{
?>
<table align="center">
<tr><td><a href=gastenboek.php>Bezoekerskant van het gastenboek</a></td></tr>
<tr><td><a href=gastenboek.php?actie=webmaster&webmasteractie=verwijder>Items verwijderen</a></tr>
<tr><td><a href=gastenboek.php?actie=webmaster&webmasteractie=scheldwoorden>Lijst met scheldwoorden aanvullen</a></td></tr>
<tr><td><a href=gastenboek.php?actie=webmaster&webmasteractie=smiley>Smileys toevoegen</a></td></tr>
<tr><td><a href=gastenboek.php?actie=webmaster&webmasteractie=smileyverwijder>Smileys verwijderen uit database</a></td></tr>
</table>
<?
}
}
else if ($actie == 'teken') // Nieuw item invullen
{
?>
<form action='gastenboek.php?actie=toevoegen' method='post' name="book">
<table border='1' cellspacing='0' width="600" align="center">
<tr>
<td width="75">
Naam:
</td>
<td>
<input type='tekst' name='naam' size='20'>
</td>
</tr>
<tr>
<td width="75">
Email:
</td>
<td>
<input type='tekst' name='email' size='20'>
</td>
</tr>
<tr>
<td colspan="2">
<textarea name='message' rows='10' cols='71'></textarea>
</td>
</tr>
<tr>
<td align="center" colspan="2">
<table align="center"><tr><td colspan="9">Klik op een smiley om deze toe te voegen!</td></tr>
<tr>
<? // Smiley-lijst oproepen
$result = mysql_query ("SELECT * FROM gastenboeksmiley order by afkorting desc")or die (mysql_error());
$x=1;
while ($array = mysql_fetch_array($result))
{
if ($x==10){
echo "</tr><tr>";
$x=1;
}
echo "<td><img src=images/smilies/".$array['afbeelding']." border=0"; ?> onclick="javascript:emoticon('<? echo $array['afkorting']; ?>')">
<? echo "</td>";
$x++;
}
?>
</tr>
</table>
</td>
</tr>
<tr>
<td align='center' colspan="2">
<input type="hidden" name="datum" value="<? echo date('d-m-Y, h:m') //Datum toevoegen aan het bericht ?>">
<input type='submit' name='actie' value='toevoegen'>
</td>
</tr>
</table>
</form>
</center>
<?php
}
else if ($actie =='toevoegen') // Het ingevoerde bericht in de database plaatsen
{
$naam=$_POST['naam'];
$naam = ucfirst(strtolower($_POST['naam']));
$email=$_POST['email'];
$reactie=$_POST['message'];
if ($naam == '' OR $email == '' OR $reactie =='')
{
echo "Je moet wel alles invullen<br><a href=javascript:history.go(-1)>Terug</a>";
}
else if($naam == 'Admin' OR $naam =='Webmaster' OR $naam =='Administrator' )
{
echo "Probeer je niet voor te doen als iemand die je niet bent!<br><a href=javascript:history.go(-1)>Terug</a>";
}
else
{
//naam
$naam = htmlspecialchars($naam);
//email
$email = htmlspecialchars($email);
//reactie
$reactie = htmlspecialchars($reactie);
$reactie = nl2br ($reactie);
$result = mysql_query ("SELECT * FROM gastenboeksmiley order by afkorting desc")or die (mysql_error());
while ($array = mysql_fetch_array($result))
{
$af = $array['afkorting'];
$img = "<img src=images/smilies/".$array['afbeelding'].">";
$reactie = str_replace($af,$img,$reactie);
}
// scheldwoorden er uit filteren
$result = mysql_query ("SELECT * FROM gastenboekscheldwoorden order by id desc")or die (mysql_error());
while ($array = mysql_fetch_array($result))
{
$woord = $array['woord'];
$reactie = str_replace($woord,'******', $reactie);
}
//alles toevoegen
$sql = ("INSERT INTO gastenboek (id, naam, reactie, email, datum) VALUES ('', '$naam', '$reactie', '$email', '$datum')");
$result = mysql_query ($sql) or die (mysql_error());
echo"
<table align=center><tr><td>je bericht is toegevoegd.<br>
klik <a href='gastenboek.php'>hier</a> om je bericht te bekijken.</td></tr></table>";
}
}
else // als er geen actie is aangegeven, gewoon het gastenboek laten zien
{
?>
<table border='1' cellspacing='0' width="600" align="center">
<tr>
<td align="center">
WELKOM BIJ het GASTENBOEK
</td>
</tr>
<tr>
<td align="center">
<a href='gastenboek.php?actie=teken'>klik hier om iets in het gastenboek te schrijven</a>
</td>
</tr>
</table>
<br /><br />
<?php
$result = mysql_query ("SELECT * FROM gastenboek order by id desc")or die (mysql_error());
while ($array = mysql_fetch_array($result))
{
?>
<table border=1 cellspacing=0 width=650 align=center>
<tr>
<td width='300'>
<a href='mailto:<? echo $array['email'] ?>'> <? echo $array['naam'] ?></a>
</td>
<td align="right">
<? echo $array['datum'] ?>
</td>
</tr>
<tr>
<td colspan="2">
<? echo $array['reactie']; ?>
</td>
</tr></table><br><br>
<?php
}
}
?>
</body>
</html>
[/code]
Reacties
0