<? 
// Ttitle of the web page
  $title = "- - - Welcome to my guestbook - -";

//####Change "admin" with your own password. It's required when you delete an entry
  $admin_password = "admin";

//Maximum entry per page when you view your guestbook
  $max_entry_per_page = "10";
//Name of file used to store your entry
  $data_file = "data.dat";
//Maximum entry stored in data file
  $max_record_in_data_file = "500";
//Color & font setting
  $background = "#FFFFFF";
  $table_top = "#9999CC";
  $table_content_1a = "#c6d7ec";
  $table_content_2a = "#D9E4F2";
  $table_bottom = "#D9E4F2";
  $table_border = "#000000";
  $link = "blue";
  $visited_link = "blue";
  $active_link = "red";
  $font_face = "verdana";
  $message_font_face = "arial";
  $message_font_size = "2";

if (!empty($_GET)) {
	if (isset($_GET["do"])) $do = $_GET["do"];
	if (isset($_GET["id"])) $id = $_GET["id"];
	if (isset($_GET["page"])) $page = $_GET["page"];
} else if (!empty($HTTP_GET_VARS)) {
	if (isset($HTTP_GET_VARS["do"])) $do = $HTTP_GET_VARS["do"];
	if (isset($HTTP_GET_VARS["id"])) $id = trim($HTTP_GET_VARS["id"]);
	if (isset($HTTP_GET_VARS["page"])) $page = trim($HTTP_GET_VARS["page"]);
}

if (isset($_POST["do"])) $do = $_POST["do"];
else if (isset($HTTP_POST_VARS["do"])) $do = $HTTP_POST_VARS["do"];

if (!isset($PHP_SELF)) {
	if (isset($_SERVER["PHP_SELF"])) $PHP_SELF = $_SERVER["PHP_SELF"];
	else if (isset($HTTP_SERVER_VARS["PHP_SELF"])) $PHP_SELF = $HTTP_SERVER_VARS["PHP_SELF"];
}

if (!isset($do)) $do = "";
else if (preg_match("/\W/",$do)) $do = "";

if (!isset($page) or $page == 0) $page=1;

if (!file_exists($data_file)) {
    echo "<B>Error !!</B> Can't find data file : $data_file.<BR>";
	exit;
} else {
  if ($max_record_in_data_file <> 0) {
     $f = file($data_file);
     rsort($f);
     $j = count($f);
     if ($j > $max_record_in_data_file) {
        $rf = fopen($data_file,"w");
              for ($i=0; $i<$max_record_in_data_file; $i++) {
                  fwrite($rf,$f[$i]);	     
	           }
		    fclose($rf);
     }
  }
}

switch ($do) {
case "":
   $record = file($data_file);
   rsort($record);
   $jmlrec = count($record);
?>
   <HTML>
   <HEAD><TITLE><?echo "$title"?></TITLE></HEAD>

<!-- Start Style For Font Displaying in the Record Table -->
<STYLE type=text/css>.font1 {
	COLOR: #000000; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 11px
}
.font2 {
	COLOR: #000000; FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 10px
}
.font3 {
	COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif; FONT-SIZE: 7.5pt; FONT-WEIGHT: bold
}
.select {
	FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 9pt
}
.input {
	FONT-FAMILY: Verdana, Arial, Helvetica, sans-serif; FONT-SIZE: 9pt
}
</STYLE>
<!-- End Style -->

   <BODY bgcolor="<?echo "$background"?>" link="<?echo "$link"?>" vlink="<?echo "$visited_link"?>" alink="<?echo "active_link"?>" topmargin="0" marginheight="0">
   
<!-- start Top Navigation -->
<TABLE align=center border=0 cellPadding=2 cellSpacing=0 width="95%">
  <TBODY>
  <TR>
    <TD width="56%"><IMG height=15 src="gbook.gif" 
    width=140></TD>
    <TD align=right class=font2 
      width="44%">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG 
      height=12 src="sign.gif" width=9> 
      <A HREF="<?echo "$PHP_SELF?do=add_form&page=$page"?>"><B>Sign the Guestbook</B> </a>
      </TD></TR>
  <TR>
    <TD class=font2 width="56%"><? echo date("l dS of F Y h:i:s A"); ?>
<BR><b>Welcome to 
      my Guest Book</b></TD>
    <TD align=right vAlign=bottom width="44%"></TD></TR></TBODY></TABLE><br>
<!-- End Top Navigation -->

   <TABLE align=center bgColor=#000000 border=0 cellPadding=5 cellSpacing=1 width="95%">

 <TR bgColor=#9999cc>
    <TD width="32%"><FONT color=#ffffff 
      FACE="<?echo $font_face?>" size=2><B>Name</B></FONT></TD>
    <TD width="68%"><FONT color=#ffffff 
      FACE="<?echo $font_face?>" 
    size=2><B>Comments</B></FONT></TD><TD width="15%"><FONT color=#ffffff 
      FACE="<?echo $font_face?>" 
    size=2><B>Del</B></FONT></TD></TR>

<?
      $jml_page = intval($jmlrec/$max_entry_per_page);
      $sisa = $jmlrec%$max_entry_per_page;
      if ($sisa > 0) $jml_page++;
      $no = $page*$max_entry_per_page-$max_entry_per_page;
      if ($jmlrec == 0) echo "<TR><TD colspan=3 bgcolor='$table_content_1a' align='center'><FONT color='#ffffff' SIZE='3' FACE='$font_face'><b>There is no entry yet.</b></FONT></TD></TR>";

		$w = 0; //--Color
        for ($i=0; $i<$max_entry_per_page; $i++) {
		    $no++;
		    $recno = $no-1;
		    if (isset($record[$recno])) {
		       $row = explode("|~~|",$record[$recno]);
			   if ($w==0) { 
				   $warna = $table_content_1a;
					//$warna = "#c6d7ec";
				   	 $w=1;
			   } else { 
				   $warna = $table_content_2a;
					//$warna = "#D9E4F2";
					$w=0;
				    }
//---Displaying Records--

		echo "<TR bgColor='$warna'><TD vAlign=top width='32%'>
		<TABLE border=0 cellPadding=2 cellSpacing=0>
       		<TBODY><TR><TD class=font2 vAlign=top width='8%'><B>$no .</B></TD>	
		<TD width='92%'>&nbsp;";

		if (trim($row[7])<>"" and trim($row[7])<>"http://") 
		{
        	if (ereg("^http://", trim($row[7]))) 
	echo " <A HREF='$row[7]'TARGET='_blank'><IMG SRC='homepage.gif' BORDER=0 ALT=\"$row[3]'s homepage\"></A>";
                 else 
	echo " <A HREF='http://$row[7]' TARGET='_blank'><IMG SRC='homepage.gif' BORDER=0 ALT=\"$row[3]'s homepage\"></A>";
		}


	echo "</TD></TR>";

	echo "<TR><TD class=font1 colSpan=2><b>$row[3] &nbsp;<IMG border=0 height=17 
            	src='user.gif' width=18></img></TD><TR>";
	echo "<TR><TD class=font1 colSpan=2>$row[4]</TD></TR>";
 	echo "<TR><TD class=font2 colSpan=2>Location <b>:&nbsp;</b>$row[5]</TD></TR>";
	echo "</TBODY></TABLE></TD>";

	echo "<TD class=font1 vAlign=top width='68%'><DIV align=left class=font3><IMG height=9 				src='post.gif' width=9>$row[2]";
	//  if ($row[4] == "")
	//	{	
  		echo "&nbsp;&nbsp;<A href='mailto:$row[4]'><IMG alt='Send E-mail' border=0 height=15 src='email.gif' width=15></A></DIV><HR SIZE=1>
	     		<DIV align=left>$row[6]</DIV></TD>";
//	}
	echo "<TD valign='bottom' align='center'width='15'>
		<A HREF='$PHP_SELF?do=del&id=$row[1]&page=$page'>
		<IMG SRC='del.gif' ALT='Delete entry # $no' border=0 align='center'></A>
		</TD>";
	echo "</td></tr>";
	

	} //--end if		
} //--end for

//--- Page Count Start
      echo "<TR><TD colspan=3 bgcolor='$table_bottom' align='center' width='600'><FONT SIZE='1' FACE='$font_face'>";	  	  
      if ($jml_page > 1) {	   
	   if ($page <> 1) echo "[<A HREF='$PHP_SELF?page=1'>Top</A>] "; else echo "[Top] "; 
	   echo "Page # ";
       if ($jml_page > 10) {
	 	 if ($page < 5) {
		    $start = 1;
			$stop = 10;
		 } elseif ($jml_page - $page < 5) {
		    $start = $jml_page - 9;
			$stop = $jml_page;
		 } else {
		    $start = $page-4;
			$stop = $page+5;
		 }
		 if ($start <> 1) echo "... ";
         for ($p=$start; $p<=$stop; $p++) {
	         if ($p == $page) echo "<FONT color='$active_link'><B>$p</B></FONT>&nbsp;&nbsp;";
			 else echo "<A HREF='$PHP_SELF?page=$p'>$p</A>&nbsp;&nbsp;";
         }
		 if ($stop <> $jml_page) echo "... ";		 		 
		 echo "of $jml_page ";
       } else {
         for ($p=1; $p<=$jml_page; $p++) {
	         if ($p == $page) echo "<FONT color='$active_link'><B>$p</B></FONT>&nbsp;&nbsp;";
			 else echo "<A HREF='$PHP_SELF?page=$p'>$p</A>&nbsp;&nbsp;";
         }
	   }	   
       if ($page <> $jml_page) echo "[<A HREF='$PHP_SELF?page=$jml_page'>Bottom</A>]"; else echo "[bottom]"; 
      } else echo "Page #1 of 1";        
	  echo "</FONT></TD></TR>";
//---Page Count End
?>
        </TABLE>        
		<P>
</CENTER>
   </BODY>
   </HTML>
<?
break;
case "add_form":
?>
<!-- Start Form --->
<html>
<head>
<title><?echo "$title"?></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="<?echo "$background"?>">
<div align="center"> <br>
  <form method="post" action="<?echo "$PHP_SELF"?>">
  <input type="hidden" name="do" value="add">
    <table width="460" border="0" cellspacing="0" cellpadding="0" bgcolor="<?echo "$table_border"?>">
      <tr>
      <td>
        <div align="center">
            <table width="100%" border="0" cellspacing="1" cellpadding="5">
	  	<tr>
    		<TD bgColor=#9999cc colSpan=2><B><FONT color=#ffffff 
      face="Verdana, Arial, Helvetica, sans-serif" size=2>Sign the 
      Guestbook:</FONT></B></TD></tr>
              <tr bgcolor="<?echo "$table_content_1a"?>"> 
                <td width="28%"> 
                  <div align="left"><font face="<?echo $font_face?>" size="2"><IMG border=0 height=17 src='user.gif' width=18></img>&nbsp;*Name 
                    : </font></div>
                </td>
                <td width="72%"> 
                  <input type="text" name="vname" size="30" maxlength="70">
                </td>
              </tr>
              <tr bgcolor="<?echo "$table_content_1a"?>"> 
                <td width="28%"> 
                  <div align="left"><font face="<?echo $font_face?>" size="2"><IMG border=0 height=17 src='email.gif' width=18></img>&nbsp;Email&nbsp;(Optional)
                    : </font></div>
                </td>
                <td width="72%"> 
                  <input type="text" name="vemail" size="30" maxlength="100">
                </td>
              </tr>
              <tr bgcolor="<?echo "$table_content_1a"?>"> 
                <td width="28%"> 
                  <div align="left"><font face="<?echo $font_face?>" size="2"><IMG border=0 height=17 src='home.gif' width=18></img>&nbsp;Website
                    : </font></div>
                </td>
                <td width="72%"> 
                  <input type="text" name="vurl" size="30" maxlength="150" VALUE="http://">
                </td>
              </tr>
              <tr bgcolor="<?echo "$table_content_1a"?>"> 
                <td width="28%"> 
                  <div align="left"><font face="<?echo $font_face?>" size="2"><IMG border=0 height=17 src='location.gif' width=18></img>&nbsp;*Location 
                    : </font></div>
                </td>
                <td width="72%"> 
<input type="text" name="vcountry" size="30" maxlength="100">
                </td>
              </tr>
              <tr bgcolor="<?echo "$table_content_1a"?>"> 
                <td valign="top" width="28%"> 
                  <div align="left"><font face="<?echo $font_face?>" size="2"><IMG border=0 height=17 src='message.gif' width=18></img>&nbsp;*Comment 
                    : </font></div>
                </td>
                <td width="72%"> 
                  <textarea name="vcomment" cols="40" rows="7" wrap="VIRTUAL"></textarea><BR><font size=1 FACE="<?echo $font_face?>">* Required field</font>
                </td>
              </tr>
              <tr bgcolor="<?echo "$table_content_1a"?>"> 
                <td colspan="2"> 
                  <div align="center"><font face="<?echo $font_face?>" size="3"> 
                    <font size="2">
                    <input type="submit" value="Submit">
                    <input type="reset" value="Reset">
					<input type="button" value="Back" onclick="window.location='<?echo "$PHP_SELF?page=$page"?>'">
                    </font></font></div>
                </td>
              </tr>
            </table>
        </div>
      </td>
    </tr>
  </table>
  </form>
</div>
</body>
</html>
<!-- End of entry form -->
<?
break;
case "add":
   if (!empty($_POST)) {
	   if (isset($_POST["vname"])) {
		   $vname = $_POST["vname"];
		   if (strlen($vname) > 70) $vname = substr($vname,0,70);
	   }
	   if (isset($_POST["vemail"])) {
		   $vemail = $_POST["vemail"];
		   if (strlen($vemail) > 100) $vemail = substr($vemail,0,100);
	   }
	   if (isset($_POST["vurl"])) {
		   $vurl = $_POST["vurl"];
		   if (strlen($vurl) > 150) $vurl = substr($vurl,0,150);
	   }
	   if (isset($_POST["vcountry"])) {
		   $vcountry = $_POST["vcountry"];
		   if (strlen($vcountry) > 50) $vcountry = substr($vcountry,0,50);
	   }
	   if (isset($_POST["vcomment"])) $vcomment = $_POST["vcomment"];
   } else if (!empty($HTTP_POST_VARS)) {
	   if (isset($HTTP_POST_VARS["vname"])) {
		   $vname = $HTTP_POST_VARS["vname"];
		   if (strlen($vname) > 70) $vname = substr($vname,0,70);
	   }
	   if (isset($HTTP_POST_VARS["vemail"])) {
		   $vemail = $HTTP_POST_VARS["vemail"];
		   if (strlen($vemail) > 100) $vemail = substr($vemail,0,100);
	   }
	   if (isset($HTTP_POST_VARS["vurl"])) {
		   $vurl = $HTTP_POST_VARS["vurl"];
		   if (strlen($vurl) > 150) $vurl = substr($vurl,0,150);
	   }
	   if (isset($HTTP_POST_VARS["vcountry"])) {
		   $vcountry = $HTTP_POST_VARS["vcountry"];
		   if (strlen($vcountry) > 50) $vcountry = substr($vcountry,0,50);
	   }
	   if (isset($HTTP_POST_VARS["vcomment"])) $vcomment = $HTTP_POST_VARS["vcomment"];
   }

   if (trim($vname)=="" or trim($vcountry)=="" or trim($vcomment)=="") {
      echo "<HTML><BODY bgcolor='#ffffff'><H2>Error !</H2><FONT SIZE=2 FACE='$font_face'>You may left some fields. Please click <B><A HREF='javascript:history.back()'>here</A></B> and try again.</FONT></BODY></HTML>";
	  exit;
   }

   if (trim($vemail)!="" and !preg_match("/([\w\.\-]+)(\@[\w\.\-]+)(\.[a-z]{2,4})+/i", $vemail)) {
      echo "<HTML><BODY bgcolor='#ffffff'><H2>Error !</H2><FONT SIZE=2 FACE='$font_face'>Invalid email address. Please click <B><A HREF='javascript:history.back()'>here</A></B> and try again.</FONT></BODY></HTML>";
	  exit;
   }

   if (trim($vurl) <> "") {
	  if (strtolower(trim($vurl)) <> "http://") {
         if (!preg_match ("#^http://[_a-z0-9-]+\\.[_a-z0-9-]+#i", $vurl)) {
		    echo "<HTML><BODY bgcolor='#ffffff'><H2>Error !</H2><FONT SIZE=2 FACE='$font_face'>Website Invalid URL format. Please click <B><A HREF='javascript:history.back()'>here</A></B> and try again.</FONT></BODY></HTML>";
	        exit;
          }
      }
   }

   $test_comment = explode(" ",$vcomment);
   $jmltest = count($test_comment);
   for ($t=0; $t<$jmltest; $t++) {
      if (strlen(trim($test_comment[$t])) > 35) {
        echo "<HTML><BODY bgcolor='#ffffff'><H2>Error!</H2><FONT SIZE=2 FACE='verdana'>Please don't abuse my guestbook. Click <B><A HREF='javascript:history.back()'>here</A></B> and try again.</FONT></BODY></HTML>";
	    exit;	     
	  }
   }

   //--only 2000 characters allowed for comment
   $maxchar = 2000;
   if (strlen($vcomment) > $maxchar) $vcomment = substr($vcomment,0,$maxchar)."...";
   $idx = date("YmdHis");
   $tgl = date("F d, Y - h:i A");
   $vname = str_replace("<","",$vname);
   $vname = str_replace(">","",$vname);
   $vname = str_replace("~","-",$vname);
   $vname = str_replace("\"","&quot;",$vname);

   $vcomment = str_replace("<","&lt;",$vcomment);
   $vcomment = str_replace(">","&gt;",$vcomment);
   $vcomment = str_replace("~","-",$vcomment);
   $vcomment = str_replace("\"","&quot;",$vcomment);

   $vurl = str_replace("<","",$vurl);
   $vurl = str_replace(">","",$vurl);
   $vcomment = str_replace("\r\n","<BR>",$vcomment);
   $vcomment = str_replace("\r","",$vcomment);
   $vcomment = str_replace("\n","",$vcomment);
   
   if (preg_match("#<|>|\"\~#",$vcountry)) exit;
   if (preg_match("/[^a-z ]/i",$vcountry)) $vcountry = "...";
   $newdata = "|~~|$idx|~~|$tgl|~~|$vname|~~|$vemail|~~|$vcountry|~~|$vcomment|~~|$vurl|~~|\n";
   $newdata = stripslashes($newdata);

   $tambah = fopen($data_file,"a");
   fwrite($tambah,$newdata);
   fclose($tambah);

   echo "<HTML><META HTTP-EQUIV='REFRESH' CONTENT='1; URL=$PHP_SELF'><BODY bgcolor='#FFFFFF'><CENTER><H2>Thank you, your entry has been added.</H2>Please wait...</CENTER></BODY></HTML>";

break;
case "del":
   $record = file($data_file);
   $jmlrec = count($record);
   for ($i=0; $i<$jmlrec; $i++) {
       $row = explode("|~~|",$record[$i]);
	   if ($id == $row[1]) {
	      echo "
		  <HTML><TITLE>Delete record</TITLE>
		  <BODY bgcolor='$background'>
		  <CENTER>
		  <FONT FACE='$font_face' SIZE='4'>Delete Confirmation</FONT>
		  <BR><BR>
		  <TABLE border=0 cellpadding=5 cellspacing=1 width=450>
			<TR>
			<TD bgcolor='$table_content_1a'>
            <FONT SIZE=2 FACE='$font_face'>
			<FONT SIZE='1'><B>$row[2]</FONT><BR>$row[3]</B> from $row[5]<BR><A HREF='mailto:$row[4]'>$row[4]</A><P>$row[6]
			</FONT> 
			</TD>
			</TR>
		  </TABLE>
		  ";
	      break;
	   }
   }   
   echo "<FORM ACTION='$PHP_SELF' METHOD='post'><FONT FACE='$font_face' SIZE=2><B>Admin password : </B></FONT><INPUT TYPE='password' NAME='pwd'><INPUT TYPE='hidden' NAME='do' VALUE='del2'><P><INPUT TYPE='submit' VALUE='Delete this record'> <INPUT TYPE='button' VALUE='Cancel' onclick=\"window.location='$PHP_SELF?page=$page'\"><INPUT TYPE='hidden' NAME='id' VALUE='$id'><INPUT TYPE='hidden' NAME='page' VALUE='$page'></FORM></CENTER></BODY></HTML>";
break;
case "del2":
   if (isset($_POST["pwd"])) $pwd = $_POST["pwd"];
   else if (isset($HTTP_POST_VARS["pwd"])) $pwd = $HTTP_POST_VARS["pwd"];

   if (isset($_POST["id"])) $id = $_POST["id"];
   else if (isset($HTTP_POST_VARS["id"])) $id = $HTTP_POST_VARS["id"];

   if (isset($_POST["page"])) $page = $_POST["page"];
   else if (isset($HTTP_POST_VARS["page"])) $page = $HTTP_POST_VARS["page"];

   if ($pwd <> $admin_password) {
         echo "<HTML><HEAD><META HTTP-EQUIV='REFRESH' CONTENT='1; URL=$PHP_SELF?page=$page'></HEAD><BODY bgcolor='#ffffff'><CENTER><H2>Invalid admin password !</H2>Please wait...</CENTER></BODY><HTML>";
         exit;
   }

   $record = file($data_file);
   $jmlrec = count($record);
   for ($i=0; $i<$jmlrec; $i++) {
       $row = explode("|~~|",$record[$i]);
       if ($id==$row[1]) {
	      $record[$i] = "";
		  break;
	   }
   }
   $update_data = fopen($data_file,"w");
 	for ($j=0; $j<$jmlrec; $j++) {
        if ($record[$j] <> "") fputs($update_data,$record[$j]);
	}
 	fclose($update_data);

   echo "<HTML><HEAD><META HTTP-EQUIV='REFRESH' CONTENT='1; URL=$PHP_SELF?page=$page'></HEAD><BODY bgcolor='#ffffff'><CENTER><H2>Record has been deleted !</H2>Please wait...</CENTER></BODY><HTML>";

break;
} //--end switch
?>