PHP: Kniha návštěv

Na této stránce najdete zdrojový kód jednoduché knihy návštěv. Nebudeme potřebovat databázi, data budeme ukládat do externího souboru.

Kniha návštěv, zdrojový kód

<html><body>
<?php
$action = $_POST['action'];
$jmeno = $_POST['jmeno'];
$mail = $_POST['mail'];
$vzkaz = $_POST['vzkaz'];
$kontrola = $_POST['kontrola'];

function antispam($email, $jmeno){
    $return = "<script type=\"text/javascript\"><!--\ndocument.write('<a href=\"' + 'mailto:' + '";
    for($i=0;$i<strlen($email);$i++){
        $code .= $email{$i}=='@' ? "' + '&#".ord("@")."' + '"
                                   : "&#".ord($email{$i}).";";
    }
    $return .= $code."' + '\">' + '".$jmeno."' + '<\/a>');\n--></script>";
RETURN $return;
}
?>
<form name="form" method="post"
action="kniha.php">
<table><tr><td>jméno:</td>
<input type="hidden" value="uloz" name="action" />
<td><input type="text" name="jmeno" value="<?php echo $jmeno ?>" size="50" /</td>
</tr><tr><td>e-mail:</td>
<td><input type="text" name="mail" value="<?php echo $mail ?>" size="50" /></td>
</tr><tr></tr>
<tr><td valign="top">Vzkaz</td>
<td><textarea name="vzkaz" cols="40" value="<?php echo $vzkaz ?>" rows="5"><?php echo $vzkaz ?>
</textarea></td></tr>
<tr><td></td><td>Ochrana proti spamu: 4 plus 5 =
<input type="text" name="kontrola" value="<?php echo $kontrola ?>" size="8" />
</td>
<tr><td></td><td>
<input type="submit" value="odeslat"></td>
</tr>
</table>
</form>
<table>
<?php
if ($action=='uloz'):
$soubor = "kniha.body";
@$ext = fopen($soubor, "r");
@$obsah = fread($ext, filesize($soubor));
@FClose($ext);

if($kontrola != "9"):
echo "<h6>Špatná odpověď</h6>";
elseif(($vzkaz=="") or ($jmeno=="")):
echo "<h6>Nejsou vyplněny požadované údaje</h6>";
else:
$ext = fopen("kniha.body", "w");
$mail = HTMLSpecialCHars($mail);

if($mail == "")
$mail = "";
else $mail = antispam($mail,$mail);

$jmeno = HTMLSpecialCHars($jmeno);
$vzkaz = HTMLSpecialCHars($vzkaz);
$tab = "<tr><td width=\"300\" >".$jmeno."</td>
<td align=\"right\">".Date(" d/m/Y  H:i:s")."</td>
</tr><tr><td colspan=\"2\">".$vzkaz."</td>
</tr><tr><td width=\"150\">".$mail."</td>
</tr><tr><td colspan=\"2\"><hr size=\"1\"></td>
</tr>";
fputs($ext, "$tab");
fputs ($ext, "$obsah");
FClose($ext);
@$ext = fopen("kniha.body", "r");
@fpassThru($ext);

endif;
else: @$ext = fopen("kniha.body", "r");
@fpassThru($ext); endif;

?>
</table>
</body>
</html>

Trochu vysvětlení

Prostřednictvím formuláře ukládáme data do souboru kniha.body. Konstrukce if ($action=='uloz'): určuje, zda jsme odeslali nějaká data, pokud ano uloží je a vypíše obsah celého souboru. Pokud ne, pouze vypíše obsah souboru. Pokud je zadána e-mailová adresa, skript ji doplní o odkaz a href="mailto:..". Skript kontroluje, zda bylo zapsáno jméno a obsah příspěvku. Soubor s formulářem je nutné pojmenovat kniha.php, nebo změňte URL v hlavičce formuláře (u atributu action). Skript zahrnuje i jednoduchou kontrolu proti spamu (příklad 4 + 5, výsledek 9). Otázku můžete nahradit čímkoli jiným, pouze je pak třeba zapsat do skriptu správný výsledek u if($kontrola != "9"):, místo "9" může být jiné číslo, slovo atd. Funkce antispam() zajišťuje ochranu výpisu e-mailové adresy proti spamu.



Doporučuji
Pro své weby používám *Webhosting C4: 20 GB prostoru, PHP, MySQL, e-maily, subdomény za 1200 Kč (zdarma 2 GB navíc každý rok). Více WebhostingC4.cz.
Potřebujete poradit?


Vyhledávání


Poradna

Pokud si nevíte rady, chcete kontakt na spolehlivého tvůrce webu, či vás zajímá cizí názor, ozvěte se.

Reklama