|
Home -> Manuali e Tutorials -> Guida PHP -> TagBoard (3/3)
Scarica il tutorial | Stampa il tutorial | Cerca nel sito
REALIZZARE UNA TAG BOARD IN PHP
Tag-board realizzata su file
La stessa tag può essere realizzata tramite supporto di file di testo e quindi senza MySQL; per cui l'applicazione comprenderà gli stessi files smilies.php e tagboard.js dell'applicazione precedente, poi un file di testo su cui verranno memorizzati i vari messaggi, una index.php e il file fFile.php. Per vedere in anteprima l'applicazione, cliccate qui.
Vediamo ora la index.php :
<HTML>
<HEAD>
<LINK HREF="stile.css" type="text/css" rel="stylesheet" >
// Codice JS per il conteggio dei caratteri rimanenti
<SCRIPT language=JavaScript>
<!--
function initcharsleft()
{
charsleft(document.forms["tagform"].text);
}
function charsleft(feld)
{
var anz = feld.value.length;
if (anz> 150 )
{
feld.value = feld.value.substring(0,225);
frei = 0;
}
else
{
frei = 150 -anz;
}
document.forms["tagform"].num.value = frei;
}
//-->// -->
</SCRIPT>
// Codice HTML per la struttura della Tag
</HEAD>
<BODY>
<TABLE border=0 cellpadding=0 cellspacing=0 width="20%" class=tableborder height="70%">
<TR>
<TD class=row4>
<TABLE border=0 cellpadding=0 cellspacing=4 width="100%">
<TR>
<TD>
<TABLE border=0 cellpadding=0 cellspacing=0 width="100%" class=tableborder>
<TR>
<TD valign=top class=row2><div class=div_tag>
<?php // Codice PHP per il recupero dei mess da file e relativo print
if ($_GET["act"]=="printa")
{
if(file_exists("tag.txt"))
{
include_once("fFile.php");
lista("tag.txt");
}
}
if ($_GET["act"]=="exit" || !isset($_GET["act"]) || isset($_POST["ok"]))
{
print("<CENTER><BR><A HREF='index.php?act=printa'>Vedi Tag</A></CENTER><BR><BR>");
}
?>
</div></TD>
</TR>
</TABLE>
</TD>
</TR>
<TR height=10>
<TD> </TD>
</TR>
<TR>
<TD valign="top"><FORM METHOD="POST" name="tagform" ACTION="index.php?act=insert">
<SCRIPT language="Javascript" src="tagboard.js" type="text/javascript"></SCRIPT>
<CENTER><TABLE border=0 cellpadding=0 cellspacing=1 width="100%">
<TR height=25>
<TD class=row3 colspan=2 align=middle><INPUT TYPE="text" NAME="nome" MAXLENGTH="20" size=20 value="NOME"></TD>
</TR>
<TR height=25>
<TD class=row3 colspan=2 align=middle><INPUT TYPE="text" NAME="email" MAXLENGTH="30" size=20 value="EMAIL"></TD>
</TR>
<TR>
<TD class=row3 valign=middle align=middle><input size=3 value=150 name="num"><BR><A onclick="return pop_up_smilies();" href="smilies.htm" target=_blank class=genmed> <I>smilies</I></A></TD>
<TD class=row3 valign=middle align=middle><TEXTAREA name="message" ROWS="3" COLS="10" maxlength="150" onKeyPress=charsleft(this); onKeyDown=charsleft(this); onBlur=charsleft(this); onKeyUp=charsleft(this); onFocus=charsleft(this); wrap=VIRTUAL onChange=charsleft(this);></TEXTAREA></TD>
</TR>
<TR height=30>
<TD colspa n=2 class=row3 valign=middle><CENTER><INPUT TYPE="submit" value=" Invia " name="ok" class=mainoption></CENTER></TD>
</TR>
</TABLE></CENTER></FORM></TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
<?php // Codice PHP per la memorizzazione del nuovo mess su file
if ($_GET["act"]=="insert")
{
if ($_POST["nome"]!="NOME" && $_POST["message"]!="" && $_POST["nome"]!="nome" && $_POST["nome"]!="")
{
if(file_exists("tag.txt"))
{
include_once("fFile.php");
include_once("smilies.php");
foreach($smile_array as $smile_face=>$smile_image) // Sostituisco il codice SMILIE con quello HTML
{
$_POST["message"] = str_replace($smile_face, $smile_image, $_POST["message"]);
}
$appo=make_string($_POST);
insert($appo,"tag.txt");
}
}
}
?>
|
Le porzioni di codice html sono le stesse, ma ovviamente cambiano quelle php; la prima parte di codice php serve per printare i messaggi, verificando prima l'esistenza del file di testo. La seconda parte di codice php, invece, effettua dei controlli sui valori di MESSAGE e NOME, sostituisce il codice delle smilies con quello html dei tag IMG, viene creata poi una stringa $appo attraverso la funzione make_string, e successivamente viene eseguito il suo inserimento su file di testo, attraverso la funzione insert, anche essa presente sul file fFile.php .
Vediamo poi in dettaglio il file fFile.php che contiene tutte le funzioni necessarie per gestire il file di testo "tag.txt".
N.B.: se dovete usare questa versione della Tag su un server Linux, dovete impostare il CHMOD del file di testo "tag.txt" a 777, cambiando i suoi permessi di accesso, esattamente come mostra la figura di sotto, altrimenti non potrete salvare i messaggi sul file stesso.

<?php
function lista($file_name) // Printa la tabella con tutti i mess
{
print("<TABLE border=0 cellpadding=0 cellspacing=4 width=100%>");
print("<TR height=10><TD class=row4> </TD></TR>");
$fp=fopen($file_name,"r");
while(!feof($fp))
{
$riga=fgets($fp,4096);
if($riga!="")
{
$appo=make_record($riga);
echo($appo);
}
}
print("</TABLE>");
print("<br><br><CENTER><A HREF='index.php?act=exit'>Exit</A></CENTER><BR><BR>");
fclose($fp);
}
function make_record($val) // Ritorna una riga HTML (TR) contenente il mess passatogli come stringa
{
$arr=explode("|",$val);
$stringa="<TR><TD class=row1><SPAN class=genmed><B> Nome:</B> ".$arr[0]."<BR><B> Email:</B> ".$arr[1]."</span></TD></TR><TR><TD valign=top class=row3><SPAN class=genmed><B> Mex:</B> ".$arr[2]."</span></TD></TR><TR height=10><TD class=row4> </TD></TR>";
return $stringa;
}
function make_string($arr) // Crea una stringa a partire dall'array contenente il mess
{
$stringa=$arr["nome"]."|".$arr["email"]."|".$arr["message"]."|";
return $stringa;
}
function insert($value,$file_name) // Salva il mess su file di testo
{
$fp=fopen($file_name,"r");
$old_data=fread($fp,filesize($file_name));
fclose($fp);
$totale=$value."\n".$old_data;
$fp=fopen($file_name,"w");
fwrite($fp,$totale,80000);
fclose($fp);
}
?>
|
In ordine quindi sono riportate le funzioni lista, che apre in lettura il file di testo, e fino a quando non viene raggiunta la sua fine ( condizione !feof($fp) del ciclo while ), legge una riga per volta e la memorizza su di una stringa, $riga, e poi, attraverso la funzione make_record, printa la tabella dei messaggi.
Bisogna ora precisare come vengono memorizzati i dati nel file di testo; per questo analizziamo la funzione insert, che apre il file dapprima in lettura per leggere tutti i messaggi precedentemente inseriti ( attraverso la funzione natia fread, viene riportato tutto il contenuto del file su di una stringa chiamata $old_data ), chiude il file per poi riaprirlo in scrittura e scriverci una stringa complessiva di vecchi e nuovi dati , $totale appunto.
Quindi tutti i dati relativi allo stesso messaggio vengono memorizzati su di una stessa riga; è quindi necessario accodare ad una stringa, $stringa appunto, il nome, l'email ed il messaggio separati da un carattere jolly, "|", che a noi serve per riconoscere la fine e quindi l'inizio dei tre successivi valori memorizzati. Ad esempio una riga salvata su file potrebbe essere la seguente:
Andrea|andruska1@fastwebnet.it|ciao a tutti!! <IMG SRC=smilies/bye1.gif WIDTH=26 HEIGHT=18 BORDER=0> |
e nel caso in cui non venga inserita l'email, unico campo non necessario per l'inserimento del mess, la riga sarebbe:
Andrea||Ciao a tutti!! <IMG SRC=smilies/bye1.gif WIDTH=26 HEIGHT=18 BORDER=0> |
Tutto ciò è realizzato dalla funzione make_string.
La funzione make_record, invece, ricevendo come input una stringa corrispondente ad una riga, non fa altro che separare i tre campi e printarli nella tabella html.
Torna su | Indice Guida | Pagina << 28 >>
|