Aby wykonać księgę gości z mojej porady będą nam potrzebne dwa pliki - index.php (plik właściwy księgi) oraz czysty plik wpisy.txt (plik na wpisy), któremu należy nadać chmody 777. Kod pliku index.php:
<?php
if ((isset($_POST["wyslij"])) AND (isset($_COOKIE["ksiega"]))) {
$wyrzut = "Nie możesz tak szybko wysłać kolejnego wpisu!"; }
else if (isset($_POST["wyslij"])) { //jeśli zostanie wysłane to:
$ksiega = "wpisy.txt";
$nick = $_POST["nick"];
$gg = $_POST["gg"];
$imail = $_POST["imail"];
$strona = $_POST["strona"];
$tresc = $_POST["tresc"];
$data = date("d.m.Y, H:i:s");
$strona = str_replace("http://", "", $strona);
$tresc = str_replace("\r\n", " ", $tresc);
$tresc = str_replace("|", "", $tresc);
/** zamienia < i >, na encje (jeżeli ktoś wpisze kod HTML to nie zostanie on sparsowany), oraz w polach: gg, amail i strona zamieniany jest na nic;) **/
$nick = str_replace("<", "<", $nick);
$gg = str_replace("<", "", $gg);
$imail = str_replace("<", "", $imail);
$strona = str_replace("<", "", $strona);
$tresc = str_replace("<", "<", $tresc);
$nick = str_replace(">", ">", $nick);
$gg = str_replace(">", "", $gg);
$imail = str_replace(">", "", $imail);
$strona = str_replace(">", "", $strona);
$tresc = str_replace(">", ">", $tresc);
/** koniec zamiany **/
$kom = NULL;
if (empty($nick)) { // jeśli puste pole nick to wyrzuca błąd
$error = 1;
$warmings["nick"] = " style=\"background:#fffadf;\" ";
$kom .= 'Wypełnij pole Nick!<br /><br />'; }
if (empty($tresc)) { // jeśli puste pole treść to wyrzuca błąd
$error = 1;
$warmings["tresc"] = " style=\"background:#fffadf;\" ";
$kom .= 'Wypełnij pole Treść!<br /><br />'; }
if ( (strlen($tresc) >= 1) && (strlen($tresc) <= 5) ) { // jeśli pole treść ma mniej bądź równe 5 znaków to wyrzuca błąd
$error = 1;
$warmings["tresc"] = " style=\"background:#fffadf;\" ";
$kom .= 'Twój wpis jest za krótki!<br /><br />'; }
if (strlen(trim($tresc)) > 500) {// jeśli pole treść ma więcej niż 500 znaków to wyrzuca błąd
$error = 1;
$warmings["tresc"] = " style=\"background:#fffadf;\" ";
$kom .= 'Twój wpis jest za długi!<br /><br />'; }
if ($error == 0) { // jeśli nie ma błędu to otwiera plik i robi z nim co trzeba
$otwiera = fopen($ksiega,"a");
$rek = "`$nick`$strona`$tresc`$data`$imail`$gg`"; // wygląd pliku z wpisami
$rek = ereg_replace(10," ",$rek);
$rek = ereg_replace(13," ",$rek);
fputs($otwiera,"$rek\n");
fclose($otwiera);
setcookie ("ksiega", "ksiega", time()+120);
header ("Location: http://".$_SERVER['HTTP_HOST'] .dirname($_SERVER['PHP_SELF']) ."/index.php"); // wymuszone przeładowanie strony
unset($nick); // czyści pola formularza
unset($imail);
unset($strona);
unset($tresc);
} }
?>
<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
<meta http-equiv="Content-Language" content="pl" />
<meta name="Author" content="ucho24" />
<meta name="Robots" content="all" />
<title>:: uchoGB - uchoGuestBook demo.</title>
</head>
<body>
<?php
$ksiega = "wpisy.txt";
$wpisy = file($ksiega);
$wpisy = array_reverse($wpisy); //odwraca tablice (czyta od końca pliku)
$ile = count($wpisy);
echo
/** wyświetla formularz **/
'<div id="kontener"><a href="http://www.ucho24.info/porady/ksiegagosci.php">POWRÓT</a><div id="ksiega">'.$kom.$wyrzut.'Wpisów: <b>'.$ile.'</b><br /><br />
<form action="'.$_SERVER['PHP_SELF'].'" method="post">
<fieldset><legend>Wpisz się do księgi</legend>
Nick:<input value="'.$nick.'" type="text" name="nick" id="nik" '.$warmings[nick].' />
GG:<input value="'.$gg.'" type="text" name="gg" id="gg" '.$warmings[gg].' />
E-Mail:<input value="'.$imail.'" type="text" name="imail" id="email" />
Strona WWW:<input value="'.$strona.'" type="text" name="strona" id="page" />
Treść:<textarea name="tresc" cols="40" rows="20" id="wpis" '.$warmings[tresc].'>'.$tresc.'</textarea>
<div id="inputy">
<input id="wyslij" type="submit" name="wyslij" value="Wyślij" />
<input id="wyczysc" type="reset" name="wyczysc" value="Wyczyść" />
</div>
</fieldset>
</form>';
?>
<?php
$ksiega = "wpisy.txt";
$nick = $_POST["nick"];
$gg = $_POST["gg"];
$imail = $_POST["imail"];
$strona = $_POST["strona"];
$tresc = $_POST["tresc"];
$wpisy = file($ksiega);
$wpisy = array_reverse($wpisy); //odwraca tablice (czyta od końca pliku)
$ile = count($wpisy);
for ($i = 0;$i<$ile;$i++) {
$wpis = explode("`",$wpisy[$i]);
/** wyświetla wpis **/
echo '
<div class="wsio">
<p>Nick: '.$wpis[1].'</p>
<p class="biale">GG: <a href="gg:'.$wpis[6].'">'.$wpis[6].'</a></p>
<p>E-Mail: <a href="mailto:'.$wpis[5].'">'.$wpis[5].'</a></p>
<p class="biale">Strona WWW: <a href="http://'.$wpis[2].'" onclick="target=\'_blank\'">'.$wpis[2].'</a></p>
<p class="wpisik">Wpis: '.$wpis[3].'</p>
<p class="data">Dodano: '.$wpis[4].'</p>
</div>';
}
echo "</div>";
/** nie masz prawa tego usunąć, bo złamiesz prawa autorskie **/
echo "<div>Wykonał <a href=\"http://www.ucho24.info\">ucho24</a></div></div>";
?>
</body>
</html>
Podaję jeszcze przykładowy arkusz CSS dla księgi
body {
text-align:center;
}
#kontener {
width:870px;
margin:0 auto;
background:#f1f1f1;
border:1px solid #000000;
padding-top:15px;
padding-bottom:15px;
}
#ksiega {
width:835px;
margin:0 auto;
background:#ffffff;
padding-bottom:15px;
padding-top:15px;
}
* {
font-family:verdana;
font-size:11px;
color:#333333;
font-weight:bold;
}
.wsio {
width:798px;
margin:0 auto;
margin-top:15px;
background:#f1f1f1;
border:1px solid #000000;
}
p {
text-align:left;
margin-top:3px;
margin:0;
padding-left:2px;
padding-top:2px;
padding-bottom:2px;
}
p.data {
width:794px;
line-height:15px;
background:#000000;
color:#ffffff;
font-size:10px;
text-align:right;
padding-right:2px;
}
p.wpisik {
padding-top:5px;
padding-left:2px;
padding-bottom:5px;
}
p.biale {
background:#ffffff;
}
fieldset {
width:798px;
margin:0 auto;
border:1px solid #000000;
background:#f1f1f1;
border-bottom:19px solid #000000;
padding:0;
padding-bottom:20px;
}
legend {
margin-left:30px;
padding:0;
padding-left:4px;
padding-right:4px;
background:none;
}
form {
width:800px;
margin:0 auto;
text-align:center;
position:relative;
}
#inputy {
width:178px;
position:absolute;
bottom:8px;
left:307px;
}
input#nik, input#email, input#gg, input#page, textarea#wpis {
width:300px;
margin:0 auto;
margin-top:4px;
margin-bottom:5px;
border:1px solid #000000;
background:#ffffff;
color:#333333;
cursor:text;
display:block;
}
input#wyslij {
width:80px;
padding:2px;
border:1px solid #000000;
background:#000000;
color:#ffffff;
cursor:pointer;
float:left;
}
input#wyczysc {
width:80px;
padding:2px;
border:1px solid #000000;
background:#000000;
color:#ffffff;
cursor:pointer;
float:right;
}
input#wyslij:hover, input#wyczysc:hover {
color:#008aff;
}
textarea {
height:180px;
}
p a, a {
color:#000000;
font-weight:bold;
text-decoration:underline;
}
p a:hover, a:hover {
color:#008aff;
text-decoration:none;
}
kliknij żeby zobaczyć demo
