6.2.2007
Jednoduchá návštěvní kniha, která příspěvky ukládá do souboru na serveru. Funguje v PHP ve verzi 4.x a vyšší.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title> G - book </title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<SCRIPT Language="JavaScript">
<!--
function VlozSmile (str)
{
document.formular.komentar.focus();
document.formular.komentar.value += (str);
}
//-->
</SCRIPT>
<STYLE type=text/css>
body {
background: #000000; color: #FFFFFF;
}
table {
font-variant: small-caps;
}
.navigace {
font-size: 14px; font-variant: small-caps;
}
.navigace a {
font-weight: bold;
}
.komentare div {
text-align: left; width: 600px; border-bottom: 2px #FFFFFF solid;
}
.komentare h3 {
font-size: 18px; font-weight: bold; font-variant: small-caps; padding: 10px 0 3px 0; margin: 0;
}
.komentare h4 {
font-weight: normal; padding: 0px 0px 0px 6px; margin: 0;
}
.komentare h5 {
font-size: 14px; font-weight: normal; background-color: #444444; padding: 4px 4px 4px 6px; margin: 0;
}
.komentare h6 {
font-size: 10px; font-style: italic; padding: 0; margin: 0;
}
</STYLE>
</head>
<body>
<center>
<form action="gbook.php" method="POST" Name="formular">
<table>
<tr><td> Jméno </td><td> <input Type="Text" Name="jmeno" Value="" align=left maxlength="30" size="30"> </td></tr>
<tr><td> E-mail </td><td> <input Type="Text" Name="email" Value="" align=left maxlength="40" size="30"> </td></tr>
<tr><td colspan="2"> <textarea Name="komentar" Rows="5" Cols="54"></textarea> </td></tr>
<tr><td align="left"> <input Type="submit" Name="submit" Value="Odeslat"> </td>
<td align="right"> <input Type="reset" value="Smazat"> </td></tr>
<tr><td colspan="2" align="center">
<a Href="javascript:VlozSmile (' *:-)* ')"><img Border="0" Src="Img/pic1.gif"></a>
<a Href="javascript:VlozSmile (' *:-/* ')"><img Border="0" Src="Img/pic2.gif"></a>
<a Href="javascript:VlozSmile (' *:-(* ')"><img Border="0" Src="Img/pic3.gif"></a>
<a Href="javascript:VlozSmile (' *:-O* ')"><img Border="0" Src="Img/pic4.gif"></a>
</td></tr>
</table>
</form>
<?
// a teď samostatný PHP skript
$jmenoSouboru = "komentare.txt"; // kam se budou ukládat příspěvky
if ( isset($_POST['jmeno']) && $_POST['jmeno']!= null && isset($_POST['komentar'])
&& $_POST['komentar']!= null && isset($_POST['submit']) ) {
$jmeno = htmlSpecialchars (substr ($_POST['jmeno'],0,30)); // odstranění html značek a zkrácení na 30 znaků
$email = htmlSpecialchars (substr ($_POST['email'],0,60));
$komentar = htmlSpecialchars (substr ($_POST['komentar'],0,900)); // komentář bude zkrácen na 900 znaků
$komentar = wordwrap ($komentar,45," ",1); // rozdělení delších slov
$komentar = str_replace (chr(10), "<br>", $komentar); // nahrazení ENTRU za značku <br>
$komentar = str_replace (chr(13), "", $komentar);
$poleCo = array("*:-)*" , "*:-/*" , "*:-(*" , "*:-O*");
$poleNa = array('<img src="Img/pic1.gif">','<img src="Img/pic2.gif">',
'<img src="Img/pic3.gif">','<img src="Img/pic4.gif">');
$komentar = str_replace ($poleCo, $poleNa, $komentar); // řetězce v $poleCo budou nahrazeny za $poleNa
$Today = (date ("j.m.Y H:i")); // datum příspěvku
if ( eregi ("^([a-zA-Z0-9.-])+@([a-zA-Z0-9-]+\.)+([a-zA-Z0-9]{2,4})$" , $email)) {
$Input = "<h3>$jmeno</h3> <h4><b>Email:</b>$email</h4> <h5><b>Napsal:</b>$komentar</h5> <h6><b>Datum:</b>$Today</h6>\n";
}
else {
$Input = "<h3>$jmeno</h3> <h5><b>Napsal:</b>$komentar</h5> <h6><b>Datum:</b>$Today</h6>\n";
}
// zápis do souboru
$datawrite = fopen( $jmenoSouboru,"a");
FPuts($datawrite,$Input);
fclose( $datawrite );
}
// zobrazení příspěvků, pokud soubor existuje
if (file_exists($jmenoSouboru)) {
$zobraz = 20; //počet zobrazovaných příspěvků
$poleSouboru = file($jmenoSouboru);
// pokud nebude zadáno od jakého příspěvků má zobrazovat vybere 1
if ( isset($_GET["od"]) && is_numeric($_GET["od"]) ) $od = $_GET["od"];
else $od = 1;
// pokud bude více příspěvků něž $zobraz tak přidá navigaci
if(count($poleSouboru) > $zobraz) {
echo "<div class=\"navigace\">Zobrazuji komentaře <b>$od - ".($od + $zobraz -1)."</b><br/>";
if ($od != 1) echo " <a href=\"?od=1\"><<</a> ";
if ($od > $zobraz) echo " <a href=\"?od='.($od - $zobraz).'\"><</a> ";
if ($od + $zobraz < count($poleSouboru)) echo "<a href=\"?od=".($od + $zobraz)."\">></a> ";
if ($od < count($poleSouboru) - $zobraz) echo "<a href=\"?od=".(count($poleSouboru) - $zobraz)."\">>></a> ";
echo('<br>');
for($i = 1;$i < Count($poleSouboru); $i += $zobraz) {
if($i != $od) echo "[<a href=\"?od=$i\">$i - ".($i + $zobraz - 1)."</a>] ";
else echo "<b>[$i - ".($i + $zobraz - 1)."]</b> ";
}
echo "</div>\n";
}
echo "<div class=\"komentare\">";
for($i = count($poleSouboru) - ($od); ($i > count($poleSouboru) - $zobraz - $od) & ($i >= 0) ; $i--) {
echo "<div>$poleSouboru[$i]</div>";
}
echo "</div>";
}
?>
</center>
</body>
</html>