Jednoduchá návštěvní kniha, která příspěvky ukládá do souboru na serveru s jednoduchou ochranou proti spamu. Funguje v PHP ve verzi 4.x a vyšší a v prohlížeči zapnuté Cookies.
<?php
/**
* Funkce zobrazí komentáře
*/
function vypisKomentare () {
global $soubor,$zobraz;
if (file_exists($soubor)) {
$poleSouboru = file($soubor);
$radek = sizeof($poleSouboru);
$od = is_numeric($_GET['od']) ? $_GET['od'] : 1;
if($radek > $zobraz) {
echo'Zobrazuji komentáře '.$od.' - '.($od+$zobraz-1).'<br>';
if($od != 1) echo '<a href="?od=1"><<</a> ';
if($od > $zobraz) echo '<a href="?od=' . ($od-$zobraz) . '"><</a> ';
if($od + $zobraz <= $radek) echo '<a href="?od='.($od+$zobraz).'">></a> ';
if($od <= $radek - $zobraz) echo '<a href="?od='.($radek-$zobraz+1).'">>></a> ';
echo "<br>\n";
for($i = 1;$i <= $radek; $i += $zobraz) {
if($i != $od) echo '<a href="?od='.$i.'">['.$i.' - '.($i+$zobraz-1).']</a> ';
else echo '<strong>['.$i.' - '.($i+$zobraz-1).']</strong> ';
}
}
echo "<br><br>\n";
// vypíše vybrané komentáře
for($i = $radek - $od; ($i > $radek-$zobraz-$od) & ($i >= 0) ; $i--) {
echo "<p>".$poleSouboru[$i]."<hr></p>\n";
}
}
}
/**
* Funkce vytvoří nabídku se smajlíky
*/
function nabidkaSmajliku () {
global $smajlici;
if (is_array($smajlici)) {
echo "<p>";
foreach ($smajlici as $znacka=>$obrazek) {
echo '<a href="javascript:smile(\''.$znacka.'\')">'.$obrazek.'</a> ';
}
echo "</p>\n";
}
}
/**
* Generování náhodného čísla pro starší verze PHP
*/
function make_seed() {
list($usec, $sec) = explode(' ', microtime());
return (float) $sec + ((float) $usec * 100000);
}
session_start();
// jméno souboru kam se budou komentáře ukládat (musí mít povolený zápis)
$soubor = "komentare.txt";
// počet zobrazených kometářů na stránku
$zobraz = 5;
/*** smajlíci, pokud je nechcete používat tak je stačí zde smazat ***/
$smajlici["*:-)*"] = '<img border="0" src="./img/smich.gif" alt=":-)">';
$smajlici["*:-/*"] = '<img border="0" src="./img/normal.gif" alt=":-/">';
$smajlici["*:-(*"] = '<img border="0" src="./img/mrac.gif" alt=":-(">';
$smajlici["*:-O*"] = '<img border="0" src="./img/udiv.gif" alt=":-O">';
/*********************************************************************/
// zpracování komentáře
if (isset($_POST['odesli']) && ($_POST[$_SESSION["random"]]!= "") && ($_POST['komentar']!="")) {
// načtení jména
$jmeno = htmlSpecialchars( substr($_POST[$_SESSION["random"]],0,30));
// načtení emailové adresy
$mailVstup = htmlSpecialchars( substr($_POST['email'],0,50));
// vytvoření datumu
$datum = (date ("j.m.Y H:i"));
// načtení komentáře
$komentar = htmlSpecialchars(wordwrap( substr($_POST['komentar'],0,999),40," ",1));
// nahrazení entru html značkou
$komentar = str_replace (chr(10),"<br>",$komentar);
$komentar = str_replace (chr(13),"",$komentar);
// nahrazení značek smajlíků obrázky
if (is_array($smajlici)) $komentar = str_replace(array_keys($smajlici), $smajlici, $komentar);
// zjistí jestli zadaný email může existovat, pokud nemůže tak email nepoužije
$mail = "";
if ( eregi("^([a-zA-Z0-9.-])+@([a-zA-Z0-9-]+\.)+([a-zA-Z0-9]{2,4})$" , $mailVstup)) {
$mail = "<b>Email:</b>$mailVstup<br>";
}
// formát textu jak se vloží do souboru
$text = "\n<b>Jméno: </b>$jmeno<br>$mail<b>Napsal: </b>$komentar<br><i>Dne: $datum</i>";
// uložení do souboru
$dw = fopen($soubor,"a");
FPuts($dw,$text);
fclose($dw);
header("Location: ?");
exit;
}
// jednoduchá ochrana proti spam-robotům
mt_srand(make_seed());
$random = mt_rand();
$_SESSION["random"] = $random;
?>
Předchozí kód MUSÍ být umístěný na začátku souboru s webovou stránku jinak bude hlásit chybu. Pak už jen stačí do stránky vložit následující kód. Komentáře se zobrazí v místě kde se volá funkce vypisKomentare().
<form name="koments" method="post" action="">
<p>
<label for="name">Jméno</label>
<input type="text" id ="name" name="<?=$random?>" maxlength="30" size="30">
</p>
<p>
<label for="email">E-mail</label>
<input type="text" id="email" name="email" maxlength="50" size="30">
</p>
<p>
<textarea name="komentar" rows="4" cols="54"></textarea>
</p>
<p>
<input type="submit" name="odesli" value="Odeslat">
<input type="reset" value="Smazat">
</p>
<?=nabidkaSmajliku()?>
</form>
<?=vypisKomentare();?>
copyright 2008 - 2015 DaVee. All rights reserved.