Code: Zaznacz cały
<?php switch ($id)
{
case 1:
?>
<div class="styl"><br><font size="4">Twój wpis do księgi:<br><br><br></font>
<form action="ksiega.php?id=2" method="POST">
Autor:
<input type="text" size="30" maxlength="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" name="Autor"><BR><BR>
E-mail:
<input type="text" size="30" maxlength="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" name="Adres"><BR><BR>
www:
<input type="text" size="30" maxlength="30" style="background-color: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" name="Web"><BR><BR>
<font size="2">(pola e-mail i www mogą pozostać puste)</font><BR><BR>
<textarea name="Tresc" cols=50 style="BACKGROUND-COLOR: #BBBBBB; font-family: Verdana; font-size: 12pt color: #00FF00" ROWS=5></textarea><BR><BR><BR>
<input type="submit" value= " Dopisz " style="BACKGROUND-COLOR: #333333; FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF">
<input type="reset" value=" Wyczyść " style="BACKGROUND-COLOR: #333333; FONT-FAMILY : Verdana; FONT-SIZE : 12; color: #FFFFFF">
</form></div>
<?php break; ?>
<?php
case 2:
if(($Autor=="") or ($Tresc=="")) // był jeszcze sprawdzanie pole e-mail, ale zrezygnowałem: or ($adres=="")
//jesli pole autor lub tresc jest puste pojawia sie komunikat monitujacy
{
print("<BR><BR><P class=\"styl\"><B>Nie wypełniłeś wszytkich pól</B></P>");
print("<BR><BR><P class=\"styl\"><A HREF=\"ksiega.php?id=1\">powrót do formularza</A></P>");
print("<P class=\"styl\"><A HREF=\"ksiega.php\">powrót do księgi</A></P>");
exit;
}
//tu obrabia sie wpis przez usuniecie ewentualnych znakow niebezpiecznych,
//a enter zamienia sie na przejscie do nowej linii
$Web = filter_var($_POST['Web'], FILTER_SANITIZE_STRING);
$Autor = filter_var($_POST['Autor'], FILTER_SANITIZE_STRING);
$Tresc = filter_var($_POST['Tresc'], FILTER_SANITIZE_STRING);
$Tresc = ereg_replace("\n", "<BR>", $Tresc);
// Dzieli wyrazy dłuższe niż 40 znaków
$Tresc = wordwrap($Tresc, 40, " ", true);
//wpisy ksiegi gosci pamietane sa w pliku o nazwie ksiazka.txt - oczywiscie mozna to zmienic
$nazwa = "ksiazka.txt";
// IP wpisujacego
if($_SERVER['HTTP_CLIENT_IP'])
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
else if($_SERVER['HTTP_X_FORWARDED_FOR'])
{
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip = $_SERVER['REMOTE_ADDR'];
}
$nazwa = "ksiazka.txt";
$myFile = fopen($nazwa, "r");
$i=1;
while(!feof($myFile)) {
$myLine = fgets($myFile, 3000);
$i++;
}
fclose($myFile);
//nie wysilalem sie z weryfikacja wpisanego przez goscia adresu wlasnej strony
//po prostu mozna tutaj wpisac tylko adres w ktorym wystepuje ciag znakow ".pl"
//moze jest to krzywdzace dla posiadaczy stron bez takich znakow w adresie,
//ale z pewnoscia uchroni to ksiege przed wpisem zlosliwego goscia np. http://dupa.jasiu
//jak widac nizej wpis zawiera nie tylko dane wpisane przez goscia, ale takze rozmaite znaczniki
//HTML formatujace wpis do postaci przydatnej do natychmiastowego wyswietlenia.
//jest to rozwiazanie spotykane w wielu ksiegach gosci
$wpis = "<table cellspacing='0' border='0'><tr border='0' bgcolor='d7d7d7'><td width='650px' style='text-align: justify;'><font style='font-size: 12px; text-align: left;'>[#$i] Autor: <b>$Autor</b></font><td width='200px' align='right'><font style='font-size: 10px; text-align: right;'><a href='mailto:$adres'><img title='$adres' src='obrazki/email.png' alt='$adres'></a> <a href='http://$web'><img title='$web' src='obrazki/home.png' alt='$web'></a> <img title='Adres IP to: $ip' src='obrazki/search.png' alt='Adres ip to: $ip'> ".date("d.m.Y")."r. ".date("H:i:s")."</font></td></tr><tr border='0'><td bgcolor='e0e0e0' colspan='2' style='text-align:justify;'><font style='font-size: 18px; '>$Tresc</font><br></td></tr></table>\n";
$myFile = fopen($nazwa, "r+");
$wpis=$wpis.fread($myFile, filesize($nazwa));
rewind($myFile);
fputs($myFile, $wpis);
fclose($myFile);
print("<BR><BR><P class=\"styl\"><B>Dziękuję za wpis!</B></P><BR>");
print("<BR><BR><P class=\"styl\"><A href=\"ksiega.php\">obejrzyj swój wpis</A></P>");
//w tym miejscu jest hiperlink do powrotu do strony glownej naszego serwisu np index.php lub index.htm itp.
print("<P class=\"styl\"><A href=\"ksiega.php\">powrót do strony</A></P>");
break;
default: //id nie równa się 1 ani 2
print "<A HREF=\"?id=1\"> ";
print " >> <input type='submit' class='ksiega' value='Kliknij by dodać wpis'></input> <<</A>";
print ("<BR><font color=#000000>liczba wpisów do księgi (od 01.02.2012): ");
// zliczanie dotychczasowych wpisów
// tu istotny moment liczba 3000 lilka linii nizej okresla w przyblizeniu dlugosc calego wpisu
//ktory mozna dokonac. Jezeli gosc wpisze caly elaborat to moze on zostac podzielony na 2
//albo na wiecej wpisow w ksiedze, ktore beda wyswietlone jeden za drugim jakby byly to 2 wpisy
//jezeli liczba 3000 jest za mala to mozna ja zmienic
$nazwa = "ksiazka.txt";
$myFile = fopen($nazwa, "r");
$i=0;
while(!feof($myFile)) {
$myLine = fgets($myFile, 3000);
$i++;
}
fclose($myFile);
print(" $i<BR><BR></B></font>"); // drukowanie liczby wpisow;
print "<HR color=#0000FF width=\"500\"><BR>";
$nazwa = "ksiazka.txt";
$myFile = fopen($nazwa, "r");
$k=1;
$end=$st+9;
while(!feof($myFile)) // dopóki nie jest koniec pliku - drukowanie po jednym wpisie (1 wpis = 1 linia pliku
{ // ale 1 linia pliku ma już w sobie format w jakim jest drukowana - zajmuje kilka linii)
$myLine = fgets($myFile, 2000);
if ($k>=$st) {
if ($k<=$end) {
print("<P class=\"styl\">$myLine</P><HR width=\"500\" color=#0000FF><BR>");
};
};
$k++;
}
//wpisy w ksiedze sa wyswietlane "w dawkach" po 10 sztuk na jednej stronie;
//kolejne wpisy sa dostepne na innych stronach ksiegi, do ktorych mozna wejsc
//przez hiperlinki u dolu strony
fclose($myFile);
print("<P class=\"styl\"><B><font color=#000000>inne strony księgi<BR>");
$ile=floor($i/11); //obliczenie ilości stron ksiegi
$ctpage=floor($st/11)+1; //numer strony biezacej
for ($z=0;$z<=$ile;$z++) {
$y=$z+1; //numery stron są od 1 a nie od 0
if ($y==$ctpage) {print ("<FONT color=#000000> $y ");} //piszemy numer biezacej strony nie jako hiperlink
else {print ("<A HREF=\"ksiega.php?st=".$z."1\"> $y </A>");} //numery innych stron to hiperlinki
};
break;} //koniec switcha
Proszę o pomoc.