|
Tablica Ogłoszeń
Aby stworzyć tablicę ogłoszeń utwórz pliki: (pamiętaj aby wszystkie pliki
miały jednakowe kodowanie tekstu)
formularz.php3
zapis.php3
pokaz.php3
w katalogu base utwórz pliki baza1.inc i baza2.inc i nadaj im prawa do zapisu
(chmod 666)
pokaz.php3
--------------------------------------------------------------
<?
include("base/baza1.inc");
include("base/baza2.inc");
?>
formularz.php3
--------------------------------------------------------------
<form method=post action=zapis.php3>
treść:<br>
<textarea rows="9" name="tresc" cols="38"></textarea><br>
e-mail:<br>
<input type=text name=email><br>
<input type=submit value=dodaj><br>
</form>
zapis.php3
--------------------------------------------------------------
<?
setcookie("tablica", "1", time()+10*3);
?>
<html>
<body>
<?
//weryfikacja długości lini, żeby nam nikt nie rozwalił strony
$weryfikacja="ok";
$ntresc=explode(" ",$tresc);
$total=sizeof($ntresc);
for($i=0; $total > $i; $i++){
if(strlen($ntresc[$i])>"30"){
$weryfikacja="";
}}
if ($weryfikacja!="ok") {
echo"Za długi wyraz, chyba nie użyłeś spacji pomiędzy wyrazami
<a href=javascript:history.back();>Wróć i popraw</a>";
}
$file = "base/baza1.inc";
if(($tresc=="") || ($email=="")){
$weryfikacja="bad";
echo"Nie wypełniono prawidłowo pól formularza<br>";
}
elseif ($weryfikacja!="ok"){
echo"formularz został zatrzymany<br>";
}
//jeśli wielkość pliku baza1.inc jest mniejsza od 60kb wykonujemy co poniżej
elseif((filesize($file) < "60000") &&
($tablica!="1")){
//furtka dla tych, którzy nie mają maila
//możesz o tym poinformować lub nie
//jeśli ktoś wpisze w formularzu (pole email) brak@brak.pl
//mail nie będzie wyświetlony, a formularz pozwoli się ogłosić
$email = str_replace("brak@brak.pl","",$email);
$przed=$tresc;
//zamieniamy znaczniki html i ewentualnie cenzurujemy
$tresc=htmlspecialchars($tresc);
//cenzura zamiast buźki możesz zastosować jakiś obrazek
$tresc = str_replace("sex",":(",$tresc);
$datag = date("Y-m-d H:i");
//formatujemy wpis
$dane="$tresc<br>e-mail: <a href=mailto:$email>$email</a><br>(dodano:
$datag)<hr noshade size=1>";
$danedwa=$dane;
$file = "base/baza1.inc";
$fp=fopen("$file", "r+");
$dane=$dane. fread($fp,filesize($file));
rewind($fp);
flock($fp, 2);
fputs($fp, $dane);
flock($fp, 3);
fclose($fp);
//pobieranie informacji data, ip, host
//takie dane lepiej pobierać i przechowywać, z tego względu
//że zdarza się że KGP zwraca się czasem z prośbą o udostępnienie takich
//danych, w sieci działa dużo oszustów itp... więc lepiej się zabezpieczyć.
$data=date("Y-m-d H:i");
$ip=$REMOTE_ADDR;
$host=gethostbyaddr($ip);
$wysylka = "$przed
e-mail: $email
(dodano: $data)
ip: $ip
host: $host";
//wysyłanie ogłoszenia na naszą skrzynkę, utwórz sobie
//regułę wiadomości, ogłoszenia będą wtedy automatycznie zbierane
//w jednym katalogu
$header = "From: Formularz <$email>";
mail("twojadres@com.pl", "Ogłoszenie", "$wysylka","$header");
echo "<b>Ogłoszenie zostało przyjęte.</b><br><b>Dziękujemy
i zapraszamy
ponownie do skorzystania z usług naszego serwisu.</b><br><br>
<b>Treść dodanego ogłoszenia:</b><br>$tresc<br><b>e-mail:</b>
$email<br>
<b>data dodania:</b> $datag<br><br>";
}
elseif (($tablica!="1") && ($weryfikacja=="ok")){
//jeśli wielkość pliku baza1.inc przekroczyła 60 kb
$file = "base/baza1.inc";
$fp=fopen("$file", "r+");
$dane=$dane. fread($fp,filesize($file));
rewind($fp);
//przerzucamy jego zawartość do drugiego pliku, kasując pierwszy
$file = "base/baza2.inc";
$fp=fopen("$file", "w");
flock($fp, 2);
fwrite($fp, "$dane");
flock($fp, 3);
fclose($fp);
//zapisujemy ostatni wpis w pierwszym pliku
$file = "base/baza1.inc";
$fp=fopen("$file", "w");
flock($fp, 2);
fwrite($fp, $danedwa);
flock($fp, 3);
fclose($fp);
}
else{
echo"Przekroczono limit (nie toleruję spamu)";
}
//teraz wyślemy list z podziękowaniami do ogłoszeniodawcy
//list zostanie wysłany tylko przy pierwszym ogłoszeniu
if(($tablica!="1") && ($weryfikacja=="ok")){
//treść listu
$list = "Dziękujemy za skorzystanie z usług naszego serwisu.
Serwis xxx
Reklamka:
";
$header = "From: Serwis xxx <twojadres@com.pl>";
mail("$email","Tytul_maila","$list","$header");
}
?>
</body>
</html>
Tablica tu pokazana jest uproszczoną wersją pokazującą na
jakiej zasadzie można ją zbudować. Można oczywiście rozbudować taki
skrypt o wiele działów, ale na potrzeby niedużej witrynki spokojnie
wystarczy.
dodał: Rip
|