»Korisnik: »Password:   Zapamtime? 
Forum HOME / WEB PROGRAMIRANJE / PHP i MySQL / Edukacija izrade boksa za poruke
Objavljeno:  06 Feb 2010 15:34   Zadnji put editovao: izuzetan
U zadneje vreme sve više sajtova omogućava posetiocima da komentarišu teme na stranicama.

Ti elementi na stranicama koji omogucavaju da se ostavljaju poruke se obicno nazivaju boksovi za poruke, ili shoutmix-evi i slično.

U nastavku ću dati skripticu koja dočarava osnovnu logiku tih bokseva za poruke:
Code:


<html><head></head>
<body></body>
<?
$nik=$_POST['nik'];
echo '<form method="POST" action="">
    Nick: <input type="text" name="nik" value="'.$nik.'" size="20"><br>
    Poruka: <textarea rows="4" name="poruka" cols="49"></textarea><br>
    <input type="submit" value="Posalji/Refres">
</form>
';
if ($poruka=$_POST['poruka']){
      $upis='<hr><b>'.$nik.'</b><br>'.$poruka.'<br>';
      $fp=fopen("podaci.txt", "a");
      fwrite($fp, $upis);
      fclose($fp);
}   
readfile("podaci.txt");
?>
</body></html>

Iako je verujem ova skriptica uglavnom svima jasna ajde da je prokomentarišemo:
Code:

<?
$nik=$_POST['nik'];
?>
<form method="POST" action="">

Ovde izvlačimo promenjljivu $nik obavezno iznad FORME zato što treba da se pojavi NIK u formi uvek nakon slanja svake poruke da ne bi posetilac morao svaki put kad pise poruku pisao ponovo i nik.
Code:

if ($poruka=$_POST['poruka']){

Ovde izvlačimo poruku u promenjljivu i ujedno ukoliko postoji sledi ubacivanje poruke i nik u tekst fajl. Na primer ako neko pritisne dugme posalji/refres i kad nije upisao poruku onemogućiće se upisivanje prazne poruke u fajl.
Code:

$upis='<hr><b>'.$nik.'</b><br>'.$poruka.'<br>';

Ovde pravimo ono što se prikazuje u redovima u displej chat-a. Nije potrebno ubacivati neke posebne graničnike koji bi signalizirali za nov red jer prikazivanjem na displeju uvažava se HTML tag za novi red.
Code:

$fp=fopen("podaci.txt", "a");
fwrite($fp, $upis);
fclose($fp);

Ovde je klasično upisivanje podataka u tekstualni fajl.
Code:

readfile("podaci.txt");

Kad se naidje na funkciju readfile automatski se isčitava kompletan fajl.

E sad, ova skriptica je osnovni
Navodnik:
kostur
za boksove za poruke a u nastavku možemo svi zajedno unapredjivati ovaj kod. Na primer sad se nove poruke ispisuju jedna ispod druge ali moše da se napravi vrlo jednostavno da se ispisuje navo poruka pri vrhu. Zatim možemo bezbednosno osigurati kod, odnosno da isfiltriramo svu HTML ili PHP sintaksu koju bi posetioci unosili. Pa možemo napraviti brojač znakova i ograničiti veličinu unetog teksta preko tekst areje kako na strani poslužitelja tako i na strani servera. Pa onda možemo malo unaprediti grafički izgled čitave strane korišćenjem CSS. Možemo takodje ograničiti i broj prikazivanja poruka na displeju, ili organizovati da se prave stranice. Takodje ovde smo poruke skladištili u tekst fajl ali možemo napraviti da se koristi MySQL baza itd itd.

Ako neko želi slobodno neka se uključi i da ovde napravimo baš kompletnu skripticu za ostavljanje komentara na stranicama ili za shoutbox.

Naravno možemo ubaciti i ajax kako bi se sve dešavalo u realnom vremenu, što kasnije možemo nastaviti u izradi CHAT-a, itd itd.
Objavljeno:  15 Feb 2010 23:47
Imam jedno pitanje, zasto svaki put pises u jednom dokumentu i php i html, zar nije lepse odvojeno to da se radi pa da se nekom metodom, post recimo, prosledjuju podaci php skripti. Ovako kada ovo pokrenes javlja se dosta greskica.
Objavljeno:  16 Feb 2010 00:12   Zadnji put editovao: izuzetan
Kad se radi jako veliki sajt u programskom smislu i ako imaš jako mnogo fajlova vremenom će dovesti do velike nepreglednosti.

Praktičnije je da se kodovi rasčlanjuju po fajlovima više u zavisnosti da li se radi na primer o login delu, boksu za poruke, mejl forma, i slično a ne prema tipu ili načinu pisanja koda.

Kasnije, kroz neko duže vreme kad želiš nešto da dogradiš ili izmeniš mnogo je lakše da se snadješ u toj šumi fajlova.
Objavljeno:  16 Feb 2010 01:13
Dobro ima i toga ali na jednom sajtu neces imati milion skripti za komentare, milion login formi, milion ovih ili onih to je par njih ali dobro ima to smisla. Nego sto meni ova skripta u mom wampu prijavljuje greskice?
Objavljeno:  16 Feb 2010 01:46
a jel prijavljuje neku konkretnu gresku ili samo nece da radi skripta?

Skripta je jako kratka i kod mene radi kako treba na serveru. Stvarno neynam sta bi moglo da izazove problem. Ima par funkcija koje ne bi trebalo da prave neki problem jedino ako se uvukla neka sintaksna greskica ali koliko vidim nema. Iskopirao sam upravo sada celu skriptu bez ikakve izmene i radi bez problema.