Scripts

Gastenboek met XML

Eerst heel ff dit: de ubb parser is een licht omgebouwde versie van die van jorik: http://www.phphulp.nl/php/scripts/6/251/. Daar kun je dus ook de smileys vinden ;). Het lijntje tussen berichten heb ik nog niet echt een download plek bezorgt... sorry :P.

gastenboek-met-xml
[gastenboek.php]
[code]<?php

require("functions.php");

?>
<html>
<head>
<script language="javascript" type="text/javascript">
function addText(let) {
   var story = document.gb.bericht.value
   story += let
   document.gb.bericht.value = story
   document.gb.bericht.focus()
}
</script>
</head>
<body>

<h1>Gastenboek</h1>

<?php

if ($_GET["msg"] == 1) {
   $msg = "Succesvol toegevoegd.";
}
elseif ($_GET["msg"] == 2) {
   $msg = "Niet alle velden zijn ingevoerd.";
   $oval = $_GET["ond"];
   $nval = $_GET["naam"];
   $eval = $_GET["email"];
   $bval = $_GET["bericht"];
}

if(isset($msg)) { echo("<font color=\"red\"><b>" . $msg . "</b></font>"); }

?>

<form name="gb" method="post" action="verzenden.php">
<table width="380" border="0">
   <tr>
      <td width="14%"><div align="left"><font face="Verdana" size="2"><b>naam: </b></div></td>
      <td width="86%"><input type="text" name="naam" size="35" value="<?php echo($nval); ?>"></td>
   </tr>
   <tr>
      <td><div align="left"><font face="Verdana" size="2"><B>email: </b></div></td>
      <td><input type="text" name="email" size="35" value="<?php echo($eval); ?>"></td>
   </tr>
   <tr>
      <td><div align="left"><font face="Verdana" size="2"><b>onderwerp: </b></div></td>
      <td><input type="text" name="onderwerp" size="35" value="<?php echo($oval); ?>"></td>
   </tr>
   <tr>
      <td><div align="left"><font face="Verdana" size="2"><b>bericht: </b><br /><br /></div></td>
      <td><textarea name="bericht" cols="26" rows="4"><?php echo($bval); ?></textarea></td>
   </tr>
   <tr>
      <td><div align="left"></div></td>
      <td><input type="submit" value="Teken het gastenboek"></td>
   </tr>
   <tr>
      <td colspan="2">
         <table>
<?php

$x = 0;
$max = 12;
for ($i = 0; $i < count($GLOBALS["smileys"]); $i++) {
   if($x == 0) { echo("<tr>\n"); }
   echo("<td><a href=\"javascript:addText('" . $GLOBALS["smileys"][$i]["icon"] . "')\"><img src=\"" . $GLOBALS["smileys"][$i]["img"] . "\" border=\"0\"></a></td>\n");
   if($x == $max) { echo("</tr>\n"); }
   $x = $x + 1;
   if ($x > $max) { $x = 0; }
}
for ($i = 0; $x < $max + 1; $i++) {
   echo("<td>&nbsp;</td>\n");
   if($x == $max) { echo("</tr>\n"); }
   $x = $x + 1;
}

?>
         </table>
      </td>
   </tr>
</table>
</form>   

<?php echo(xml2String()); ?>

</body>
</html>[/code]
[/gastenboek.php]



[verzenden.php]
[code]<?php 

require("functions.php");

$email = strip_tags($_POST["email"]); 
$naam = strip_tags($_POST["naam"]); 
$onderwerp = strip_tags($_POST["onderwerp"]); 
$bericht = strip_tags($_POST["bericht"]);
$datum = date("r");
if(!$email || !$naam || !$onderwerp || !$bericht){ 
header("Location: gastenboek.php?msg=2&email=" . $email . "&ond=" . $onderwerp . "&naam=" . $naam . "&bericht=" . $bericht);
} 
else { 

$item  = "<item>\n";
$item .= "<subject>" . $onderwerp . "</subject>\n";
$item .= "<date>" . $datum . "</date>\n";
$item .= "<name>" . $naam . "</name>\n";
$item .= "<email>" . $email . "</email>\n";
$item .= "<post>" . $bericht . "</post>\n";
$item .= "</item>\n";

$file = fopen("gastenboek.xml","r"); 
$al = fread($file, filesize("gastenboek.xml")); 
fclose($file);
$al = str_replace("<gastenboek>","",$al);
$al = str_replace("</gastenboek>","",$al);
$txt = "<gastenboek>" . $al . $item . "</gastenboek>";
$file = fopen("gastenboek.xml","w");  
fputs($file,$txt); 
fclose($file); 
header("Location: gastenboek.php?msg=1");
} 
?>[/code]
[/verzenden.php]



[functions.php]
[code]<?php

global  $smileys;
$smileys = array();
$smileys[] = array("icon" => ":)", "img" => "images/smilies/smile.gif");
$smileys[] = array("icon" => "8|", "img" => "images/smilies/huh.gif");
$smileys[] = array("icon" => ":o", "img" => "images/smilies/ohmy.gif");
$smileys[] = array("icon" => ";)", "img" => "images/smilies/wink.gif");
$smileys[] = array("icon" => ":P", "img" => "images/smilies/tongue.gif");
$smileys[] = array("icon" => ":D", "img" => "images/smilies/biggrin.gif");
$smileys[] = array("icon" => "8)", "img" => "images/smilies/cool.gif");
$smileys[] = array("icon" => "*-)", "img" => "images/smilies/rolleyes.gif");
$smileys[] = array("icon" => ":?", "img" => "images/smilies/dry.gif");
$smileys[] = array("icon" => ":@", "img" => "images/smilies/mad.gif");
$smileys[] = array("icon" => ":(", "img" => "images/smilies/sad.gif");
$smileys[] = array("icon" => "8-)", "img" => "images/smilies/unsure.gif");
$smileys[] = array("icon" => ":|", "img" => "images/smilies/blink.gif");
$smileys[] = array("icon" => "|:-|", "img" => "images/smilies/ph34r.gif");
$smileys[] = array("icon" => ":\\", "img" => "images/smilies/happy.gif");
$smileys[] = array("icon" => "|-)", "img" => "images/smilies/sleep.gif");
$smileys[] = array("icon" => "(l)", "img" => "images/smilies/wub.gif");
$smileys[] = array("icon" => ":s", "img" => "images/smilies/wacko.gif");

function ubb_code($string) {
 // HTML codes wegwerken
 $string = htmlspecialchars(strip_tags($string));
 // Enters maken
 $string = nl2br($string);
 // Cursief
 $string = preg_replace("#\[i\](.+?)\[/i\]#is","<i>\\1</i>",$string);
 // Onderstreept
 $string = preg_replace("#\[u\](.+?)\[/u\]#is","<u>\\1</u>",$string);
 // Vetgedrukt
 $string = preg_replace("#\[b\](.+?)\[/b\]#is","<b>\\1</b>",$string);
 // Doorstreept
 $string = preg_replace("#\[s\](.+?)\[/s\]#is","<s>\\1</s>",$string);
 // Links maken met behulp van tags
 $string = preg_replace("#\[url\](http|ftp)(.+?)\[/url\]#is","<a href=\"\\1\\2\" target=\"_blank\">\\1\\2</a>",$string);
 $string = preg_replace("#\[url\](mailto:)(.+?)\[/url]#is","<a href=\"\\1\\2\" target=\"_blank\">\\2</a>",$string);
 $string = preg_replace("#\[mail\](.+?)\[/mail]#is","<a href=\"mailto:\\1\" target=\"_blank\">\\1</a>",$string);
 $string = preg_replace("#\[url\](.+?)\[/url\]#is","<a href=\"http://\\1\" target=\"_blank\">\\1</a>",$string);
 $string = preg_replace("#\[url=(http|ftp|mailto)(.+?)\](.+?)\[/url\]#is","<a href=\"\\1\\2\" target=\"_blank\">\\3</a>",$string);
 $string = preg_replace("#\[url=(.+?)\](.+?)\[/url\]#is","<a href=\"http://\\1\" target=\"_blank\">\\2</a>",$string);
 // Automatisch links maken
 $string = eregi_replace("(^|[\n\r\t])((http(s?)://)(www\.)?([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)", "<a href=\"\\2\" target=\"_blank\">\\2</a>",$string);
 $string = eregi_replace("(^|[\n\r\t])((http(s?)://)(www\.)?([a-z0-9_-]+([a-z0-9_-]+)+)(/[^/ \n\r]*)*)", "<a href=\"\\2\" target=\"_blank\">\\2</a>",$string);
 $string = eregi_replace("(^|[\n\r\t])([a-z_-][a-z0-9\._-]*@[a-z0-9_-]+(\.[a-z0-9_-]+)+)","<a href=\"mailto:\\2\" target=\"_blank\">\\2</a>",$string);
 $string = eregi_replace("(^|[\n\r\t])(www\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\"http://\\2\" target=\"_blank\">\\2</a>",$string);
 $string = eregi_replace("(^|[\n\r\t])(www\.([a-z0-9_-]+([a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\"http://\\2\" target=\"_blank\">\\2</a>",$string);
 $string = eregi_replace("(^|[\n\r\t])(ftp://([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\"\\2\" target=\"_blank\">\\2</a>",$string);
 $string = eregi_replace("(^|[\n\r\t])(ftp://([a-z0-9_-]+([a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\"\\2\" target=\"_blank\">\\2</a>",$string);
 $string = eregi_replace("(^|[\n\r\t])(ftp\.([a-z0-9_-]+(\.[a-z0-9_-]+)+)(/[^/ \n\r]*)*)","<a href=\"\\2\" target=\"_blank\">\\2</a>",$string);
 // Smileys
 for ($i = 0; $i < count($GLOBALS["smileys"]); $i++) {
  $string = str_replace($GLOBALS["smileys"][$i]["icon"],"<img src=\"" . $GLOBALS["smileys"][$i]["img"] . "\" alt=\"Smilie\" />",$string);
 }
 
 // Return
 return $string;
} 

function ubb_back($string) {
 // Cursief
 $string = preg_replace("#<i>(.+?)</i>#is","[i]\\1[/i]",$string);
 // Onderstreept
 $string = preg_replace("#<u>(.+?)</u>#is","[u]\\1[/u]",$string);
 // Vetgedrukt
 $string = preg_replace("#<b>(.+?)</b>#is","[b]\\1[/b]",$string);
 // Doorstreept
 $string = preg_replace("#<s>(.+?)</s>#is","[s]\\1[/s]",$string);
 // Links
 $string = preg_replace("#<a href=\"(http|ftp)(.+?)\" target=\"_blank\">(.+?)</a>#is","[url=\\1\\2]\\3[/url]",$string);
 $string = preg_replace("#<a href=\"mailto:(.+?)\" target=\"_blank\">(.+?)</a>#is","[mail]\\1[/mail]",$string);
 // Smileys
 for ($i = 0; $i < count($GLOBALS["smileys"]); $i++) {
  $string = str_replace("<img src=\"" . $GLOBALS["smileys"][$i]["img"] . "\" alt=\"Smilie\" />",$GLOBALS["smileys"][$i]["icon"],$string);
 }
 
 // Return
 return $string;
} 

function genPost($item) {
   $entry  = "";
   $entry .="<b><font face='Verdana' size='2'>" . $item["subject"] . "</b><br />\n"; 
   $entry .="<font face='Verdana' size='1'><a href='mailto:" . $item["email"] . "'>" . $item["name"] . "</a> (" . date("d-m-Y H:i", strtotime($item["date"])) . ")<br />\n"; 
   $entry .="<font face='Verdana' size='2'>" . ubb_code($item["post"]) . "<br />\n";
   $entry .="<img src='images/lijnbericht.gif' border=0><br />\n\n"; 
   return $entry;
}

function parseXmlFile($filename, $identifier) {
   $data = implode("",file($filename));
   $parser = xml_parser_create();
   xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
   xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
   xml_parse_into_struct($parser,$data,$values,$tags);
   xml_parser_free($parser);

   foreach ($tags as $key=>$val) {
      if ($key == $identifier) {
         $molranges = $val;
         for ($i=0; $i < count($molranges); $i+=2) {
            $offset = $molranges[$i] + 1;
            $len = $molranges[$i + 1] - $offset;
            $tdb[] = parseArray(array_slice($values, $offset, $len));
         }
      } 
      else {
         continue;
      }
   }
   return $tdb;
}
	
function parseArray($mvalues) {
   for ($i=0; $i < count($mvalues); $i++) {
      $mol[$mvalues[$i]["tag"]] = $mvalues[$i]["value"];
   }
   return $mol;
}

function xml2String() {
   $xmlcontent = parseXmlFile("gastenboek.xml", "item");
   $return_str = "";
   foreach ($xmlcontent as $item) {
      $return_str .= genPost($item);
   }
   return $return_str;
}

?>[/code]
[/functions.php]



[gastenboek.xml]
[code]<gastenboek>
<item>
<subject>eerste post</subject>
<date>Sun, 30 Jan 2005 10:59:02 +0100</date>
<name>legolas</name>
<email>erm...</email>
<post>Dit is de eerste post... mag de admin veranderen naar wat hij daar hebben wil :P</post>
</item>
</gastenboek> [/code]
[/gastenboek.xml]

Let op: gastenboek.xml begint zijn leven met een eerste post, het is aan de admin wat er in komt ;).

Reacties

0
Nog geen reacties.