|
|||||
Najprej s programom Dreamweaver odpremo novo datoteko in jo poimenujmo index.php.
|
|||||
|
|||||
Dodamo novo polje Textarea in ga poimenujemo polje_komentar.
S pomočjo tega polja bomo kasneje objavljali komentarje. |
|||||
|
|||||
Če se odpre pogovorno okno z vprašanjem Add form tag?, potrdimo z gumbom Yes.
S tem korakom se v našo kodo avtomatsko doda značka <form>, ki omogoča, da se vpisani podatki prenesejo naprej na strežnik. |
|||||
|
|||||
Na stran dodamo še gumb, ob pritisku katerega se bo naš komentar poslal na strežnik.
|
|||||
|
|
|||||
Trenutni rezultat bi morala biti spletna stran, kot je prikazana na sliki.
V naslednjem koraku bomo sedaj dodali kodo, ki bo upravljala s komentarji. Da pridemo v pogled s kodo, kliknemo zavihek Code. |
|||||
|
|||||
Sedaj pod značko </form> prilepimo spodnjo kodo:
<table border="1"> <tr> <td width="161" bgcolor="#CCCCCC">Komentarji</td> </tr> <?php $ime_datoteke = "baza.txt"; //vpis podatkov if (isset($_POST['polje_komentar'])) { //shrani vrednost $datoteka = fopen($ime_datoteke, 'a') or die("Ne morem odpreti datoteke."); $komentar = $_POST['polje_komentar']." "; fwrite($datoteka, $komentar); fclose($datoteka); } //branje podatkov if (is_file($ime_datoteke)) { $datoteka = fopen($ime_datoteke, 'r') or die("Ne morem odpreti datoteke."); while (!feof($datoteka)) { $vrstica = fgets($datoteka, 4096); if (strlen($vrstica)>0) { echo "<tr><td>"; echo htmlspecialchars($vrstica, ENT_QUOTES, 'UTF-8'); echo "</td></tr>"; } } fclose($datoteka); } ?> </table> |
|||||
|
|||||
Seveda se je treba vprašati, kaj omenjena koda sploh počne.
V prvem delu v datoteko vpišemo prejete podatke. $ime_datoteke = "baza.txt"; Najprej v kodi nastavimo ime datoteke, v katero se bodo vpisovali komentarji. Jaz sem izbraz za ime datoteke baza.txt. if (isset($_POST['polje_komentar'])) { S to vrstico preverimo, ali je na strežnik bila poslana vsebina polja za komentarje. V kolikor podatki niso bili poslani, se zaradi uporabi if stavka koda ne izvede. $datoteka = fopen($ime_datoteke, 'a') or die("Ne morem odpreti datoteke."); S funkcijo fopen najprej odpremo datoteko. Pri tem smo dodali dodaten parameter 'a', ki pove, da naj se obstoječi podatki v datoteki ohranijo. $komentar = $_POST['polje_komentar']." "; V spremenjljivko $komentar shrani vrednost, ki je bila poslana na strežnik. fwrite($datoteka, $komentar); S funkcijo fwrite vpišem vrednost spremenljivke $komentar v datoteko. fclose($datoteka); Na koncu datoteko še zapremo z uporabo funkcije fclose. |
|||||
|
|||||
V drugem delu PHP kode iz datotek preberem obstoječe komentarje in jih izpišemo.
if (is_file($ime_datoteke)) { Najprej s funkcijo is_file preverimo, ali datoteka že obstaja. $datoteka = fopen($ime_datoteke, 'r') or die("Ne morem odpreti datoteke."); Sedaj s funkcijo fopen zopet odpremo datoteko. Tokrat smo uporabili parameter 'r', kar pomeni, da jo bomo uporabili samo za branje. Če se datoteke ne da odpreti, dobimo izpisano sporočilo o napaki. while (!feof($datoteka)) { $vrstica = fgets($datoteka, 4096); if (strlen($vrstica)>0) { echo "<tr><td>"; echo htmlspecialchars($vrstica, ENT_QUOTES, 'UTF-8'); echo "</td></tr>"; } } Sedaj uporabimo zanko while, v kateri iz datoteke beremo podatke v kosih velikosti 4096 s funkcijo fgets. Podatke beremo, dokler ni izpolnjen pogoj eof, kar pomeni End of file oz. konec datoteke. S funkcijo strlen preverimo dolžino prebrane vrstice z namenom, da praznih vrstic ne bomo izpisovali. Za izpis podatkov uporabimo funkcijo echo. Pri tem smo iz varnostnih razlogov uporabili še dodatno funkcijo htmlspecialchars, ki znake, kot so > in < zamenja s tekstovno obliko, s čimer se izognemo, da bi nekdo lahko kot komentar objavljal HTML kodo. Uporabili smo tudi izpis značk <tr> in <td>, ki se uporabljata pri izpisu tabel in sta uporabljeni samo zaradi lepše oblike izpisa. fclose($datoteka); Na koncu datoteko zopet zapremo. |
|||||
|
|||||
Sedaj lahko skripto prenesete na spletni strežniku in jo preizkusite, seveda pa jo lahko pred tem tudi oblikovno polepšate.
Celotno kodo iz lekcije pa si lahko prenesete s klikom na Prenos kode |
|||||