Buongiorno a tutta la comunity, come da titolo e possibile creare una cosa del genere senza ricorrere a MySql. Ovviamente lo scopo per me è puramente didattico quindi, i problemi di sicurezza al momento, li tengo in secondo piano. Entro nel dettaglio:
1 Raccolgo i commenti da un form
<html><head>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<h2><a href="lettura.php">Torna alla lista degli articoli</a></h2>
<form action="action.php" method="post">
<label for="nome">Nome</label>
<input type="text" id="nome" name="nome" />
<label for="mail">La tua mail</label>
<input type="text" id="mail" name="mail" />
<label for="commento">Inserisci il tuo comento</label>
<input type="text" id="commento" name="commento" />
<input type="submit" name="scrivi" value="scrivi" />
</form>
</body>
</html>
2 invio ad action.php che mi salva i dati in un file *.txt
<?phpinclude("../testu_mio/setting.php");
/*************************
SCRITTURA
**************************/
if(isset($_POST['scrivi']))
{
if(!is_writable($my_database_txt)){
exit("il file non ha i permessi di scrittura!");
}
// riceviamo i dati e li filtriamo
$bad_char = array("|", "\r\n", "\r", "\n");
$nome = str_replace($bad_char, "", $_POST['nome']);
$mail = str_replace($bad_char, "", $_POST['mail']);
$commento = str_replace($bad_char, "", $_POST['commento']);
$ip = $_SERVER['REMOTE_ADDR'];
// apriamo il file
$open = fopen($my_database_txt, "a+");
// scriviamo i dati separati dal carattere separatore
fwrite($open, $nome."|".$ip."|".$mail."|".$commento."\r\n");
// chiudiamo il file
fclose($open);
// ritorniamo nella pagina di visualizzazione
header("location: lettura.php");
exit;
}
/*************************
ELIMINARE UN RIGO
**************************/
else if(isset($_GET['delete']))
{
// creiamo l'array con tutti i righi
$array_righi = file($my_database_txt);
// eliminiamo dall'array il rigo
unset($array_righi[$_GET['delete']]);
// apriamo il file resettando il contenuto
$open = fopen($my_database_txt, "w");
foreach($array_righi as $key => $value){
// ri-scriviamo tutti i righi (rimanenti)
fwrite($open, $value);
}
fclose($open);
// ritorniamo nella pagina di visualizzazione
header("location: letturamod.php");
exit;
}
/************************
MODIFICARE UN RIGO
*************************/
else if(isset($_POST['modifica']) AND isset($_POST['row_update']))
{
// creiamo l'array con tutti i righi
$array_righi = file($my_database_txt);
// riceviamo i dati e li filtriamo
$bad_char = array("|", "\r\n", "\r", "\n");
$nome = str_replace($bad_char, "", $_POST['nome']);
$ip = str_replace($bad_char, "", $_POST['ip']);
$mail = str_replace($bad_char, "", $_POST['mail']);
$commento = str_replace($bad_char, "", $_POST['commento']);
// ri-scriviamo il rigo (che sostituirà il precedente)
$array_righi[$_POST['row_update']] = $nome."|".$ip."|".$mail."|".$commento."\r\n";
// apriamo il file resettando il contenuto
$open = fopen($my_database_txt, "w");
foreach($array_righi as $key => $value){
// ri-scriviamo tutti i righi
fwrite($open, $value);
}
fclose($open);
// ritorniamo nella pagina di visualizzazione
header("location: letturamod.php");
exit;
}
?>
3 vado a leggere il contenuto del file *.txt
<html><head>
<link rel="stylesheet" href="../testu_mio/style.css" type="text/css" />
</head>
<body>
<h1>GuestBook</h1>
<h2><a href="../testu_mio/form_insert.php">Inserisci una nuova recensione</a></h2>
<?php
include('../testu_mio/setting.php');
$array_righi = file($my_database_txt);
foreach($array_righi as $key => $commenti){
list($nome, $ip, $mail, $commento) = explode("|", $commenti);
echo '
<p>
Nome: ' .$nome. '<br />
Ip : ' .$ip. '<br />
Mail: ' .$mail. '<br />
Il Suo Commento: ' .$commento. '<br />
</p>
<hr />';
}
?>
</body>
</html>
4 tramite un form di update volevo abilitare la lettura dei dati inseriti inserendo una spunta
<?phpinclude("setting.php");
if(!isset($_GET['row'])){
header("location: lettura.php");
exit;
}
$array_righi = file($my_database_txt);
if(!isset($array_righi[$_GET['row']])){
exit('errore nella chiave dell\'array');
}
list($nome, $ip, $mail, $commento) = explode("|", $array_righi[$_GET['row']]);
?>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<h2><a href="lettura.php">Torna alla lista degli articoli</a></h2>
<form action="action.php" method="post">
<label for="nome">Nome</label>
<input type="text" id="nome" name="nome" value="<?php echo htmlentities($nome, ENT_QUOTES); ?>" />
<label for="ip">Ip</label>
<input type="text" id="ip" name="ip" value="<?php echo htmlentities($ip, ENT_QUOTES); ?>" />
<label for="mail">Mail</label>
<input type="text" id="mail" name="mail" value="<?php echo htmlentities($mail, ENT_QUOTES); ?>" />
<label for="commento">Il suo Commento</label>
<input type="text" id="commento" name="commento" value="<?php echo htmlentities($commento, ENT_QUOTES); ?>" />
<label for="abilita">Abilta commento</label>
<input type="checkbox" name="online">
<input type="hidden" name="row_update" value="<?php echo $_GET['row']; ?>" />
<input type="submit" name="modifica" value="modifica" />
</form>
</body>
</html>
In conclusione vorrei che al passo 3 ( la lettura del file) vengano fuori solo i dati abilitati dal form update.
E' possibile, al momento l'unica via di uscita per me e MySql.
Ringrazio in anticipo per la pazienza
happyman