login  Naam:   Wachtwoord: 
Registreer je!
 Scripts:

Scripts > PHP > Gastenboeken > Gastenboek 2.1

Gastenboek 2.1

Auteur: Joel - 25 augustus 2004 - 22:11 - Gekeurd door: Mokka - Hits: 36764 - Aantal punten: 4.39 (23 stemmen)




Installatie van het script:
==============================

Het script bestaat uit 3 paginas:

-config.php (MySQL gegevens, CSS stijlen, ...)
-functies.php (PHP functies)
-lezen.php (Het lezen van de berichten)
-schrijven.php (Het schrijven van de berichten)

Verder zijn er nog 8 Smileys die in de map "smileys/" komen te staan.
De smileys kan je downloaden op: http://www.sitemasters.be/bestanden/gastenboek.zip

Voer onderstaande query uit:

CREATE TABLE gastenboek (
id int(5) NOT NULL auto_increment,
naam varchar(50) NOT NULL default '',
emailadres varchar(100) NOT NULL default '',
website varchar(100) NOT NULL default '',
bericht text,
datum datetime,
PRIMARY KEY (id)
) TYPE=MyISAM;

===================================

Veel plezier met het gastenboek !!!

Code:
config.php

  1. <?php
  2.  
  3. //Deze gegevens correct veranderen !!!
  4. mysql_connect("localhost", "Gebruikersnaam", "******");
  5. mysql_select_db("Database_naam");
  6.  
  7. $max = 10; //Aantal berichten tonen per pagina:
  8.  
  9. $conf['url'] = "http://www.jedomein.com/gastenboek/"; //url naar de map waar het gastenboek geïnstalleerd staat
  10.  
  11. $pagina_lezen = "lezen.php"; //pagina van lezen
  12. $pagina_schrijven = "schrijven.php"; //pagina van schrijven
  13.  
  14. $seconden = 60*60*24; //Na hoeveel seconden men terug een bericht kan plaatsen (standaard 1 dag)
  15. $tijd_cookie = time() + $seconden;
  16. ?>
  17. <style type="text/css">
  18. /*Je kan hier nog meerdere CSS stijlen toevoegen*/
  19.  
  20. .gastenboek {
  21. font-family: Verdana;
  22. color: #000000;
  23. font-size: 11px;
  24. background: #FFFFFF;
  25. }
  26.  
  27. a:link {
  28. color: #0000FF;
  29. text-decoration: none;
  30. }
  31. a:active {
  32. color: #0000FF;
  33. text-decoration: none;
  34. }
  35.  
  36. a:visited {
  37. color: #0000FF;
  38. text-decoration: none;
  39. }
  40.  
  41. a:hover {
  42. color: #FF0000;
  43. text-decoration: none;
  44. }
  45.  
  46. textarea, select, input {
  47. background-color: #FFFFFF;
  48. border-color: #000000;
  49. border-style: solid;
  50. border-width: 1px;
  51. color: #000000;
  52. font-family: Arial, Helvetica, sans-serif;
  53. font-size: 10pt;
  54. }
  55. </style>


functies.php

  1. <?php
  2.  
  3. //maand van de datum in het Nederlands
  4. function maand_datum($datum) {
  5. switch($datum) {
  6. case "01": $maand_naam = "januari"; break;
  7. case "02": $maand_naam = "februari"; break;
  8. case "03": $maand_naam = "maart"; break;
  9. case "04": $maand_naam = "april"; break;
  10. case "05": $maand_naam = "mei"; break;
  11. case "06": $maand_naam = "juni"; break;
  12. case "07": $maand_naam = "juli"; break;
  13. case "08": $maand_naam = "augustus"; break;
  14. case "09": $maand_naam = "september"; break;
  15. case "10": $maand_naam = "oktober"; break;
  16. case "11": $maand_naam = "november"; break;
  17. case "12": $maand_naam = "december"; break;
  18. }
  19. return $maand_naam;
  20. }
  21.  
  22. // datetime naar datum in't Nederlands
  23. function datum($datum) { //vb: 2004-05-09 13:35:19
  24. $jaar = substr($datum, 0, 4); //dit geeft 2004
  25. $maand = substr($datum, 5, 2); //dit geeft 04
  26. $dag = substr($datum, 8, 2); //dit geeft 09
  27. $uur = substr($datum, 11, 2); //dit geeft 12
  28. $min = substr($datum, 14, 2); //dit geeft 45
  29.  
  30. return $dag." ".maand_datum($maand)." ".$jaar." - ".$uur.":".$min;
  31. }
  32.  
  33. //controleren of het e-mailadres geldig is dmv reguliere expressies (functie van FangorN)
  34. function check_email($in) {
  35. $patroon = "/^([a-z0-9_-]+\.)*[a-z0-9_-]+@([a-z0-9_-]{2,}\.)+([a-z0-9_-]{2,})$/i";
  36. return preg_match($patroon, $in);
  37. }
  38.  
  39. //UBB en smileys
  40. function ubb_smiley($bericht, $dir = "smileys") {
  41.  
  42. //UBB-code
  43. $bericht = preg_replace("/\[B\](?U)((.|\n|\r)*)\[\/B\]/", "<B>\\1</B>", $bericht);
  44. $bericht = preg_replace("/\[U\](?U)((.|\n|\r)*)\[\/U\]/", "<U>\\1</U>", $bericht);
  45. $bericht = preg_replace("/\[I\](?U)((.|\n|\r)*)\[\/I\]/", "<I>\\1</I>", $bericht);
  46. $bericht = preg_replace("/\[S\](?U)((.|\n|\r)*)\[\/S\]/", "<S>\\1</S>", $bericht);
  47. $bericht = eregi_replace("\\[COLOR=([^\\[]*)\\]([^\\[]*)\\[/COLOR\\]","<font color=\"\\1\">\\2</font>",$bericht);
  48. $bericht = eregi_replace("\\[SIZE=([^\\[]*)\\]([^\\[]*)\\[/SIZE\\]","<font size=\"\\1\">\\2</font>",$bericht);
  49. $bericht = eregi_replace("\\[ALIGN=([^\\[]*)\\]([^\\[]*)\\[/ALIGN\\]","<p align=\"\\1\">\\2</p>",$bericht);
  50. $bericht = eregi_replace("\\[EMAIL=([^\\[]*)\\]([^\\[]*)\\[/EMAIL\\]", "<a href=\"mailto:\\1\">\\2</a>",$bericht);
  51. $bericht = eregi_replace("\\[URL=([^\\[]*)\\]([^\\[]*)\\[/URL\\]","<a href=\\1 target=_blank>\\2</a>",$bericht); ;
  52.  
  53. //Smileys-code
  54. $bericht = str_replace(":)", "<img src='".$dir."/blij.gif'>", $bericht);
  55. $bericht = str_replace(":(", "<img src='".$dir."/droevig.gif'>", $bericht);
  56. $bericht = str_replace(":s", "<img src='".$dir."/verward.gif'>", $bericht);
  57. $bericht = str_replace(":P", "<img src='".$dir."/tong.gif'>", $bericht);
  58. $bericht = str_replace(":D", "<img src='".$dir."/tanden.gif'>", $bericht);
  59. $bericht = str_replace(";)", "<img src='".$dir."/knipoog.gif'>", $bericht);
  60. $bericht = str_replace(":omg:", "<img src='".$dir."/omg.gif'>", $bericht);
  61. $bericht = str_replace(":cool:", "<img src='".$dir."/cool.gif'>", $bericht);
  62.  
  63. //Per 50 letters een nieuwe regel beginnen
  64. $bericht = wordwrap($bericht, 50);
  65.  
  66. return $bericht;
  67. }
  68. ?>


schrijven.php

  1. <?php
  2.  
  3. include ("functies.php");
  4. include ("config.php");
  5. ?>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  8. <html>
  9. <head>
  10. <title>Schrijf een bericht in het gastenboek</title>
  11. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  12. <script language="JavaScript">
  13. //Deze functie hebben we later nodig voor de UBB code
  14. function Invoegen(Smiley) {
  15. var edit;
  16. var HuidigeTekst = document.gastenboek.bericht.value;
  17. edit = HuidigeTekst+Smiley+" ";
  18. document.gastenboek.bericht.value=edit;
  19. document.gastenboek.bericht.focus();
  20. return;
  21. }
  22.  
  23. function smiley() {
  24. return;
  25. }
  26. </script>
  27. </head>
  28. <body>
  29. <?php
  30. if (isset($_POST['Submit'])) {
  31.  
  32. if (!trim($_POST['naam'])) {
  33. $error="Je moet je naam invullen";
  34. }
  35. elseif(!check_email($_POST['emailadres'])) {
  36. $error="Je moet een geldig e-mailadres invullen";
  37. }
  38. elseif (!trim($_POST['bericht'])) {
  39. $error="Je moet een bericht invullen";
  40. }
  41. elseif ($_COOKIE['Gastenboek'] == "1") {
  42. $error="Je kan geen bericht posten omdat je er al één hebt gepost";
  43. }
  44.  
  45. //Als er een veld niet is ingevuld of wanneer het e-mailadres niet bestaat komt er een error
  46.  
  47. if ($error != "") {
  48. ?>
  49. <center>
  50. <table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="2">
  51. <tr>
  52. <td>
  53. <center>
  54. <b><?=$error?></b><br>
  55. <form method="post" action="javascript:history.go(-1)">
  56. <input type="submit" name="Terug" value="Terug" />
  57. </form>
  58. </center>
  59. </td>
  60. </tr>
  61. </table>
  62. </center>
  63. <?php
  64. } else {
  65. //Als alles correct is ingevuld gaan we over naar het posten van de gegevens naar de database
  66. mysql_query ("INSERT INTO gastenboek (naam, emailadres, website, bericht, datum) VALUES ('".$_POST['naam']."', '".$_POST['emailadres']."', '".$_POST['website']."', '".$_POST['bericht']."', NOW())") or die (mysql_error());
  67.  
  68. //Om SPAM te vermijden maken we een COOKIE (zie config)
  69. setcookie (Gastenboek, 1, $tijd_cookie);
  70.  
  71. //Na het verzenden sturen we de gebruiker terug naar het gastenboek
  72. header ("location: ".$pagina_lezen);
  73. }
  74.  
  75. } else {
  76. ?>
  77. <center>
  78. <form name="gastenboek" action="" method="post">
  79. <table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="2">
  80. <tr>
  81. <td height="20" colspan="2"><strong>Bericht posten in het gastenboek:</strong></td>
  82. </tr>
  83. <tr>
  84. <td width="44%">Naam:</td>
  85. <td width="56%">
  86. <input name="naam" type="text" id="naam" size="30" maxlength="50" />
  87. </td>
  88. </tr>
  89. <tr>
  90. <td>Website:</td>
  91. <td>
  92. <input name="website" type="text" id="website" value="http://" size="30" maxlength="50" /><br />
  93. <font style="color: #FF0000">(<strong>niets invullen</strong> als je<strong> geen website</strong> hebt)</font>
  94. </td>
  95. </tr>
  96. <tr>
  97. <td>E-mail adres:</td>
  98. <td>
  99. <input name="emailadres" type="text" id="emailadres" size="30" maxlength="50" />
  100. </td>
  101. </tr>
  102. <tr>
  103. <td align="center" colspan="2">Bericht:</td>
  104. </tr>
  105. <tr>
  106. <td align="center" colspan="2">
  107. <table width="27%" border="0" cellspacing="0" cellpadding="0">
  108. <tr>
  109. <td align="center" height="21" colspan="4">
  110. <small><i><b>Ubb-code:</b></i></small>
  111. </td>
  112. </tr>
  113. <tr>
  114. <td align="center" height="27" colspan="4">
  115. <input type="button" name="b" value="B" style="font-weight: bold; width: 30px;" onClick="javascript:Invoegen('[B]...[/B]');" />
  116. <input type="button" name="u" value="U" style="text-decoration: underline; width: 30px;" onClick="javascript:Invoegen('[U]...[/U]');" />
  117. <input type="button" name="i" value="I" style="font-style: italic; width: 30px;" onClick="javascript:Invoegen('[I]...[/I]');" />
  118. <input type="button" name="s" value="S" style="text-decoration: line-through; width: 30px;" onClick="javascript:Invoegen('[S]...[/S]');" />
  119. <input type="button" name="url" value="http://" onClick="javascript:Invoegen('[URL=http://...]...[/URL]');" />
  120. </td>
  121. </tr>
  122. <tr>
  123. <td align="center" height="21" colspan="4">
  124. <input type="button" name="align" value="Align" onClick="javascript:Invoegen('[ALIGN=...]...[/ALIGN]');" />
  125. <input type="button" name="color" value="Kleur" onClick="javascript:Invoegen('[COLOR=...]...[/COLOR]');" />
  126. <input type="button" name="size" value="Grootte" onClick="javascript:Invoegen('[SIZE=...]...[/SIZE]');" />
  127. <input type="button" name="e-mail" value="E-mail" onClick="javascript:Invoegen('[EMAIL=...]...[/EMAIL]');" />
  128. </td>
  129. </tr>
  130. <tr>
  131. <td align="center" height="21" colspan="4"><small><i><b>Smileys:</b></i></small></td>
  132. </tr>
  133. <tr>
  134. <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>
  135. <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>
  136. <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>
  137. <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>
  138. </tr>
  139. <tr>
  140. <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>
  141. <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>
  142. <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>
  143. <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>
  144. </tr>
  145. </table>
  146. <br>
  147. <textarea name="bericht" cols="50" rows="10" id="bericht"></textarea><br />
  148. </td>
  149. </tr>
  150. <tr>
  151. <td height="25" colspan="2" align="center">
  152. <input type="submit" name="Submit" value="Verzenden" />&nbsp;
  153. <input name="Reset" type="submit" id="Reset" value="Opnieuw" />
  154. </td>
  155. </tr>
  156. </table>
  157. </form>
  158. </center>
  159. <?php
  160. }
  161. ?>
  162. </body>
  163. </html>


lezen.php

  1. <?php
  2.  
  3. include ("functies.php");
  4. include ("config.php");
  5. ?>
  6.  
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  8. <html>
  9. <head>
  10. <title>Gastenboek</title>
  11. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  12. <script language="JavaScript">
  13. function doorverwijzen(object){
  14. window.location=object.options[object.selectedIndex].value;
  15. }
  16. </script>
  17. </head>
  18. <body>
  19. <table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="1">
  20. <tr>
  21. <td height="19"><a href="<?=$pagina_schrijven?>">Schrijf een bericht</a></td>
  22. </tr>
  23. </table>
  24. <br />
  25. <?php
  26. $rtel = mysql_result(mysql_query("SELECT count(id) FROM gastenboek"),0);
  27. // aantal items ophalen
  28.  
  29. if ($rtel != 0) {
  30. // als er items aanwezig zijn
  31. $max = $max;
  32. // Variabele globaal aanmaken
  33. $rtel /= $max;
  34. $paginas = ceil($rtel);
  35.  
  36. if (isset($_GET['pagina'])) $nav = $_GET['pagina'];
  37. // als er nav in de url voorkomt is dit de huidige pagina
  38.  
  39. if (!isset($nav)) $nav = 1;
  40. // als er geen nav in de url voorkomt beginnen we bij 1
  41.  
  42. $van = ($nav-1)*$max;
  43. // de eerste limit-parameter
  44.  
  45. if ($nav > $paginas) {
  46. // als de nav groter is dan er pagina's zijn gaan we terug naar 1
  47. $nav = 1;
  48. $van = 0;
  49. }
  50.  
  51. $navs = "<form name=\"navigatie\" action=\"\" method=\"post\">\n";
  52. $navs = "<select class=\"navigatie\" onChange=\"javascript:doorverwijzen(this);\">\n";
  53. // beginstukje van de navigatie
  54.  
  55. for ($i = 1; $i <= $paginas; $i++) {
  56. // voor iedere pagina de lus ff doorlopen
  57. if ($nav == $i) {
  58. $navs .= "<option name=\"lijst\" value=\"".$conf['url'].$pagina_lezen."?pagina=".$i."\" selected>".$i."</option>\n";
  59. } else {
  60. $navs .= "<option name=\"lijst\" value=\"".$conf['url'].$pagina_lezen."?pagina=".$i."\">".$i."</option>\n";
  61. }
  62. }
  63.  
  64. $navs .= "</select>\n";
  65. $navs .= "</form>\n";
  66. // eindstukje van de navigatie
  67.  
  68. $eerste = ($nav-1) ? "<input class=\"navigatie\" type=\"button\" value=\"&lt;&lt;\" onClick=\"window.location='".$conf['url'].$pagina_lezen."/'\" />\n" : "";
  69. // Naar eerste pagina
  70.  
  71. $vorige = ($nav-1) ? "<input class=\"navigatie\" type=\"button\" value=\"&lt;\" onClick=\"window.location='".$conf['url'].$pagina_lezen."?pagina=". ($nav - 1) . "'\" />\n" : "";
  72. // Naar vorige pagina
  73.  
  74. $volgende = ($nav-$paginas) ? "&nbsp;<input class=\"navigatie\" type=\"button\" value=\"&gt;\" onClick=\"window.location='".$conf['url'].$pagina_lezen."?pagina=". ($nav + 1) . "'\" />\n" : "";
  75. // Naar volgende pagina
  76.  
  77. $laatste = ($nav-$paginas) ? "<input class=\"navigatie\" type=\"button\" value=\"&gt;&gt;\" onClick=\"window.location='".$conf['url'].$pagina_lezen."?pagina=". $paginas . "'\" />\n" : "";
  78. // Naar laatste pagina
  79.  
  80. $navigatie = $eerste.$vorige.$navs.$volgende.$laatste;
  81. }
  82.  
  83. //berichten selecteren
  84. $data = mysql_query("SELECT * FROM gastenboek ORDER BY id DESC LIMIT ".$van.",".$max) or die (mysql_error());
  85.  
  86. while ($obj = mysql_fetch_object($data)) {
  87. //We zorgen ervoor dat de schrijver geen HTML kan gebruiken in zijn bericht
  88. $bericht = htmlspecialchars($obj->bericht);
  89. //nl2br() zorgt er voor dat er bij elke enter ook een nieuwe lijn komt
  90. $bericht = nl2br($bericht);
  91. //Onze zelf gemaakte functie ubb_smiley() zal de UBB code en SMILIES omzetten in HTML
  92. $bericht = ubb_smiley($bericht);
  93. ?>
  94. <table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="2">
  95. <tr>
  96. <td width="88%" valign="top">
  97. <b>Gepost door</b>: <?= $obj->naam; ?>
  98. <b>Gepost op</b>: <?= datum($obj->datum); ?>
  99. </td>
  100. </tr>
  101. <tr>
  102. <td valign="top">
  103. <?=$bericht?>
  104. <br /><hr size="1" noshade />
  105. <?php
  106. if (($obj->website != "http://") && ($obj->website != "") && ($obj->website != "/")) {
  107. echo "[<a href=\"".$obj->website."\" target=\"_blank\">Website</a>]&nbsp;";
  108. }
  109. ?>
  110. [<a href="mailto:<?= $obj->emailadres; ?>">E-mail</a>]
  111. </td>
  112. </tr>
  113. </table>
  114. <br />
  115. <?php
  116. }
  117. ?>
  118. <br />
  119. <table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="1">
  120. <tr>
  121. <td align="center" height="19"><?=$navigatie?></td>
  122. </tr>
  123. </table>
  124. <br />
  125. <table class="gastenboek" width="100%" border="1" cellspacing="0" cellpadding="1">
  126. <tr>
  127. <td height="19"><a href="<?=$pagina_schrijven?>">Schrijf een bericht</a></td>
  128. </tr>
  129. </table>
  130. </body>
  131. </html>
Download code! Download code (.txt)

 Stemmen
Niet ingelogd.

 Reacties
Post een reactie
Lees de reacties (67)
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.077s