Note: Gepost door Cyberboy, maar in verkeerd forum.
Als je wil hier heb je een gastenboek scriptje..
moet je ook ff dit doorlezen.. en de rest
------------------------------
Ik hoop dat je zelf kan scripten want..
Er zitten veeeel Bugs in
------------------------------
Het script bestaat uit 3 paginas:
-config.php (MySQL gegevens, CSS stijlen, Waardes zoals $max, $tijd_cookie,...)
-lezen.php (De pagina waar de berichten opkomen)
-schrijven.php (De pagina waar men een bericht kan schrijven)
Verder zijn er nog 8 Smileys die in de map "smileys/" komen te staan.
De smileys kan je downloaden op:
http://www.sitemasters.be/test/gastenboek/smileys.zip Je moet ook een TABEL "Gastenboek" aanmaken in de Database:
CREATE TABLE gastenboek (
id int(5) NOT NULL auto_increment,
naam varchar(20) NOT NULL default '',
emailadres varchar(100) NOT NULL default '',
website varchar(100) NOT NULL default '',
bericht text,
datum varchar(11) NOT NULL default '',
tijd varchar(5) NOT NULL default '',
PRIMARY KEY (id)
) TYPE=MyISAM;
------------------
nu het scripje
------------------
Code:
##########
config.php
##########
<?php
//Deze gegevens correct veranderen !!!
mysql_connect ("localhost", "Gebuikersnaam", "Wachtwoord");
mysql_select_db ("Database_naam");
//Aantal berichten tonen per pagina:
$max=10;
//Na hoeveel seconden men terug een bericht kan plaatsen
//Staat nu op 1 dag
$seconden=60*60*24;
$tijd_cookie = time() + $seconden;
?>
<style type="text/css">
/*Je kan hier nog meerdere stijlen toevoegen*/
.gastenboek { font-family: Verdana; color: #000000; font-size: 11px; background: #FFFFFF;}
a:link { color: #0000FF; text-decoration: none; }
a:active { color: #0000FF; text-decoration: none; }
a:visited { color: #0000FF;text-decoration: none; }
a:hover { color: #FF0000;text-decoration: none; }
textarea, select, input { background-color: #FFFFFF; border-color: #000000; border-style: solid;
border-width: 1px; color: #000000; font-family: Arial, Helvetica, sans-serif; font-size: 10pt; }
</style>
############
schrijven.php
############
<?php
ob_start();
?>
<script language="JavaScript">
//Deze functie hebben we later nodig voor de UBB code
function smiley() {
return;
}
function Invoegen(Smiley) {
var edit;
var HuidigeTekst = document.gastenboek.bericht.value;
edit = HuidigeTekst+Smiley+" ";
document.gastenboek.bericht.value=edit;
document.gastenboek.bericht.focus();
return;
}
</script>
<?php
//De config includen voor MySQL gegevens en opmaak van de gastenboek
include ("config.php");
//Als men op Submit gedrukt heeft
if ($_POST['Submit']) {
//Deze functie gebruiken we later om te checken of het e-mailadres wel
//bestaat zodat mensen geen fake e-mailadres kunnen ingeven
function check_email($address) {
list($local, $host) = explode("@", $address);
$pattern_local = "^([0-9a-z]*([-|_]?[0-9a-z]+)*)(([-|_]?)\.([-|_]?)[0-9a-z]*([-|_]?[0-9a-z]+)+)*([-|_]?)$";
$pattern_host = "^([0-9a-z]+([-]?[0-9a-z]+)*)(([-]?)\.([-]?)[0-9a-z]*([-]?[0-9a-z]+)+)*\.[a-z]{2,4}$";
$match_local = eregi($pattern_local, $local);
$match_host = eregi($pattern_host, $host);
if($match_local && $match_host) {
return 1;
} else {
return 0;
}
}
//We gaan controleren of alle velden zijn ingevuld en dat e-mailadres bestaat
//Ook checken we of dat de gebruiker al een bericht heeft gepost om Spam te vermijden
if (!trim($_POST['naam']))
$error="Je moet je naam invullen";
elseif(!check_email($_POST['emailadres']))
$error="Je moet een geldig e-mailadres invullen";
elseif (!trim($_POST['bericht']))
$error="Je moet een bericht invullen";
elseif ($_COOKIE[Gastenboek] == "1") {
$error="Je kan geen bericht posten omdat je er al één hebt gepost";
}
//Als er een veld niet is ingevuld of wanneer het e-mailadres niet bestaat komt er een error
if ($error != "") {
echo "
<center>
<table class=\"gastenboek\" width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\">
<tr>
<td align=\"center\">
<b>$error</b>
<br>
<form method=\"post\" action=\"javascript:history.go(-1)\">
<input type=\"submit\" name=\"Terug\" value=\"Terug\">
</form>
</td>
</tr>
</table>
</center>";
//Als alles correct is ingevuld gaan we over naar het posten van de gegevens naar de database
} else {
//De datum en de tijd maken we aan door de functie date()
$datum = date("Y-m-d");
$tijd = date("H:i:s");
//We maken een query en voeren die uit door mysql_query()
$query="INSERT INTO gastenboek (naam, emailadres, website, bericht, datum, tijd)
VALUES ('$_POST[naam]', '$_POST[email=adres]', '$_POST[website]', '$_POST[bericht]', '$datum', '$tijd')";
mysql_query ($query) or die (mysql_error());
//Om SPAM te vermijden maken we een COOKIE (zie config)
setcookie(Gastenboek,"1",$tijd_cookie);
//Na het verzenden sturen we de gebruiker terug naar het gastenboek
header ("location: lezen.php");
}
//Als men nog niet op Submit gedrukt heeft krijgt men natuurlijk het formulier te zien
} else {
?>
<center>
<form name="gastenboek" action="" method="post">
<table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="2">
<tr>
<td height="20" colspan="2"><strong>Bericht posten in het gastenboek:</strong></td>
</tr>
<tr>
<td width="44%">Naam:</td>
<td width="56%">
<input name="naam" type="text" id="naam" size="30" maxlength="50">
</td>
</tr>
<tr>
<td>Website:</td>
<td>
<input name="website" type="text" id="website" value="http://" size="30" maxlength="50">
<br>
<font color="#FF0000">(<strong>niets invullen</strong> als je<strong> geen website</strong> hebt)</font>
</td>
</tr>
<tr>
<td>E-mail adres:</td>
<td>
<input name="emailadres" type="text" id="emailadres" size="30" maxlength="50">
</td>
</tr>
<tr>
<td align="center" colspan="2">Bericht:</td>
</tr>
<tr>
<td align="center" colspan="2">
<table width="27%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td align="center" height="21" colspan="4"><small><i><b>Ubb-code:</b></i></small>
</td>
</tr>
<tr>
<td align="center" height="27" colspan="4">
<input type="button" name="b" value="B" style="font-weight: bold; width: 30px;" onClick="javascript:Invoegen('
...');">
<input type="button" name="u" value="U" style="text-decoration: underline; width: 30px;" onClick="javascript:Invoegen('
...');">
<input type="button" name="i" value="I" style="font-style: italic; width: 30px;" onClick="javascript:Invoegen('
...');">
<input type="button" name="s" value="S" style="text-decoration: line-through; width: 30px;" onClick="javascript:Invoegen('[S]...[/S]');">
<input type="button" name="url" value="http://" onClick="javascript:Invoegen('
...');">
</td>
</tr>
<tr>
<td align="center" height="21" colspan="4">
<input type="button" name="align" value="Align" onClick="javascript:Invoegen('[ALIGN=...]...[/ALIGN]');">
<input type="button" name="color" value="Kleur" onClick="javascript:Invoegen('[COLOR=...]...[/COLOR]');">
<input type="button" name="size" value="Grootte" onClick="javascript:Invoegen('[SIZE=...]...[/SIZE]');">
<input type="button" name="e-mail" value="E-mail" onClick="javascript:Invoegen('[EMAIL=...]...[/email]');">
</td>
</tr>
<tr>
<td align="center" height="21" colspan="4"><small><i><b>Smileys:</b></i></small></td>
</tr>
<tr>
<td height="41" width="24%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(':)');"><img src="smileys/blij.gif" width="20" border="0"></a></td>
<td height="41" width="24%" align="center" valign="middle"><a href="javascript:smiley();" onClick="javascript:Invoegen(':D');"><img src="smileys/tanden.gif" width="20" height="20" border="0"></a></td>
<td height="41" width="23%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(':P');"><img src="smileys/tong.gif" width="20" height="20" border="0"></a></td>
<td height="41" width="29%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(';)');"><img src="smileys/knipoog.gif" width="20" height="20" border="0"></a></td>
</tr>
<tr>
<td height="36" width="24%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(':cool:');"><img src="smileys/cool.gif" width="20" height="20" border="0"></a></td>
<td height="36" width="24%" align="center" valign="middle"><a href="javascript:smiley();" onClick="javascript:Invoegen(':s');"><img src="smileys/verward.gif" width="20" height="20" border="0"></a></td>
<td height="36" width="23%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(':omg:');"><img src="smileys/omg.gif" width="20" height="20" border="0"></a></td>
<td height="36" width="29%" valign="middle" align="center"><a href="javascript:smiley();" onClick="javascript:Invoegen(':(');"><img src="smileys/droevig.gif" width="20" height="20" border="0"></a></td>
</tr>
</table>
<br>
<textarea name="bericht" cols="50" rows="10" id="bericht"></textarea><br>
</td>
</tr>
<tr>
<td height="25" colspan="2" align="center">
<input type="submit" name="Submit" value="Verzenden">
<input name="Reset" type="submit" id="Reset" value="Opnieuw">
</td>
</tr>
</table>
</form>
</center>
<?php
}
?>
##########
lezen.php
##########
<?php
include ("config.php");
?>
<table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="1">
<tr>
<td height="19"><a href="schrijven.php">Schrijf een bericht</a></td>
</tr>
</table>
<br>
<?php
#### Begin Navigatie code ####
$query = mysql_query("SELECT id FROM gastenboek ORDER BY id DESC") or die(mysql_error());
$aantal = mysql_num_rows($query);
$aantal/=$max;
if ($aantal == 0) {
echo "<div align=center>Er zijn nog <b>geen berichten</b> in het gastenboek!</div>";
} else {
$nav=$_GET['nav'];
if (empty($nav)) {
$nav=1;
}
$van=($nav-1)*$max;
if ($nav > ceil($aantal)) {
$nav=1;
}
for ($i = 1; $i <= ceil($aantal); $i++) {
if ($nav == $i)
$navs[$i] = "<b>$i</b>";
else
$navs[$i] = "<a href=\"lezen.php?nav=$i\">$i</a>";
}
$navs= implode(" | ", $navs);
$vorige = ($nav-1) ? "<a href=\"lezen.php?nav=" . ($nav - 1) . "\">< Vorige</a>" : "";
$volgende = ($nav-ceil($aantal)) ? "<a href=\"lezen.php?nav=" . ($nav + 1) . "\">Volgende ></a>" : "";
if ($vorige && $volgende) {
$navigatie = $vorige." | ".$navs ." | ".$volgende;
} else {
$navigatie = $vorige." | ".$navs." | ".$volgende;
}
#### Einde Navigatie code ####
#### Begin UBB en Smileys code ####
function ubb_smiley($bericht, $dir = "smileys") {
//UBB-code
$bericht = preg_replace("/\[B\](?U)((.|\n|\r)*)\[\/B\]/", "<B>\\1</B>", $bericht);
$bericht = preg_replace("/\[U\](?U)((.|\n|\r)*)\[\/U\]/", "<U>\\1</U>", $bericht);
$bericht = preg_replace("/\[I\](?U)((.|\n|\r)*)\[\/I\]/", "<I>\\1</I>", $bericht);
$bericht = preg_replace("/\[S\](?U)((.|\n|\r)*)\[\/S\]/", "<S>\\1</S>", $bericht);
$bericht = eregi_replace("\\[COLOR=([^\\[]*)\\]([^\\[]*)\\[/COLOR\\]","<font color=\"\\1\">\\2</font>",$bericht);
$bericht = eregi_replace("\\[SIZE=([^\\[]*)\\]([^\\[]*)\\[/SIZE\\]","<font size=\"\\1\">\\2</font>",$bericht);
$bericht = eregi_replace("\\[ALIGN=([^\\[]*)\\]([^\\[]*)\\[/ALIGN\\]","<p align=\"\\1\">\\2</p>",$bericht);
$bericht = eregi_replace("\\[EMAIL=([^\\[]*)\\]([^\\[]*)\\[/EMAIL\\]", "<a href=\"mailto:\\1\">\\2</a>",$bericht);
$bericht = eregi_replace("\\[URL=([^\\[]*)\\]([^\\[]*)\\[/URL\\]","<a href=\\1 target=_blank>\\2</a>",$bericht); ;
//Smileys-code
$bericht = str_replace(":)", "<img src=\"$dir/blij.gif\">", $bericht);
$bericht = str_replace(":(", "<img src=\"$dir/droevig.gif\">", $bericht);
$bericht = str_replace(":s", "<img src=\"$dir/verward.gif\">", $bericht);
$bericht = str_replace(":P", "<img src=\"$dir/tong.gif\">", $bericht);
$bericht = str_replace(":D", "<img src=\"$dir/tanden.gif\">", $bericht);
$bericht = str_replace(";)", "<img src=\"$dir/knipoog.gif\">", $bericht);
$bericht = str_replace(":omg:", "<img src=\"$dir/omg.gif\">", $bericht);
$bericht = str_replace(":cool:", "<img src=\"$dir/cool.gif\">", $bericht);
//Per 50 letters een nieuwe regel beginnen
$bericht = wordwrap($bericht, 50);
return $bericht;
}
#### Einde UBB en Smileys code ####
//Nu gaan we de berichten selecteren
$query=mysql_query("SELECT * FROM gastenboek ORDER BY id DESC LIMIT $van,$max") or die (mysql_error());
//Nu worden alle berichten weergegeven dmv een while
while ($obj = mysql_fetch_object($query)) {
//We zorgen ervoor dat de schrijver geen HTML kan gebruiken in zijn bericht
$bericht=htmlspecialchars($obj->bericht);
//nl2br() zorgt er voor dat er bij elke enter ook een nieuwe lijn komt
$bericht=nl2br($bericht);
//Onze zelf gemaakte functie ubb_smiley() zal de UBB code en SMILIES omzetten in HTML
$bericht=ubb_smiley($bericht);
?>
<table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="2">
<tr>
<td width="88%" valign="top">
<b>Gepost door</b>: <?=$obj->naam?>
<b>Gepost op</b>: <?=$obj->datum?> - <?=$obj->tijd?>
</td>
</tr>
<tr>
<td valign="top">
<?=$bericht?>
<br><hr size="1" noshade>
<?php
if (($obj->website != "http://") && ($obj->website != "") && ($obj->website != "/"))
echo "[<a href=".$obj->website.">Website</a>] ";
?>
[<a href="mailto:<?=$obj->emailadres?>">E-mail</a>]
</td>
</tr>
</table>
<br>
<?php
} //Deze loop wordt herhaald tot dat alle berichten zijn weergegeven
}
?>
<br>
<table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="1">
<tr>
<td align="center" height="19"><?=$navigatie?></td>
</tr>
</table>
<br>
<table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="1">
<tr>
<td height="19"><a href="schrijven.php">Schrijf een bericht</a></td>
</tr>
</table>
Je kunt het ook direct als php bestand downloaden via Php Freakz
door hier te klikken
http://www.phpfreakz.nl/download.php?did=15827