Lezione sui file di Testo "Pensione cani" in php per la classe IV D SIA
Lezione del 14 novembre 2017: classe IV D SIA
Il progetto informatico presentato in questo articolo, è stato realizzato dall'alunna Claudia Tenca.
Ha utilizzato il linguaggio Php con un'area riservata che permette di mantenere attiva una sessione.
l'applicazione Web consente di gestire un archivio "pensione cani" con la possibilità di inserire, modificare, visualizzare e cancellare i dati dei cani.
Esempio dell'applicativo: http://tencaclaudia.wixsite.com/travelblog/informatica-2016-1
Questa simulazione dal punto di vista della sicurezza dei dati ha delle criticità perchè ogni volta che si modifica o si cancella il record già registrato, viene riscritto integralmente il file di testo. Se in quel momento dovesse esserci un problema, tutti i dati verrebbero persi.
La versione sicura (con due file) verrà trattata nelle prossime lezioni.
Prima pagina: login.php
La pagina "index" dell'esercizio permette di loggare l'utente inserendo username e password
<html>
<head>
<title>Login Area</title>
</head><body>
<?php
if(isset($_GET['error_login']))
{
echo "Error ,please compile correctly the form!";
}
?>
<form method="post" action="login3.php">
<table>
<tr>
<td>Username</td>
</tr>
<tr>
<td><input type="textbox" name="user" id="user" /></td>
</tr>
<tr>
<td>Password</td>
</tr>
<tr>
<td><input type="password" name="pass" id="pass"/></td>
</tr>
<tr>
<td><input type="submit" value="Log In" /></td>
</tr>
</table>
</form>
</body>
</html>
-------------------------------------------------------------------------------------
Seconda pagina: login2.php
attiva la sessione dei Cookie, controlla se le credenziali sono corrette e consente di visualizzare la pagina con tutti gli animali inseriti
<?php
session_start();
$user="user";
$pass="password";
$page_to="http://claudiatenca.altervista.org/4dsia/informatica/es.pensionecani/form_update.php";
if(isset($_POST['user']) && isset($_POST['pass']))
{
if( $_POST['user']==$user && $_POST['pass']==$pass)
{
$_SESSION['isLogged']="true";
header("Location:".$page_to);
}
else
{
header("Location:login.php?error_login=1");
}
}
else
{
header("Location:login.php?error_login=1");
}
?>
---------------------------------------------------------------------------------------------
Terza pagina: login3.php
In questa pagina php sono memorizzate tutte le username e le password che possono essere utilizzate per accedere all'area riservata
<?php
session_start();
$utenti[0]["user"]="user1";
$utenti[0]["pass"]="pass1";
$utenti[1]["user"]="user2";
$utenti[1]["pass"]="pass2";
$utenti[2]["user"]="user3";
$utenti[2]["pass"]="pass3";
$page_to="http://claudiatenca.altervista.org/4dsia/informatica/es.pensionecani/form_update.php";
$isLogged=false;
if(isset($_POST['user']) && isset($_POST['pass']))
{
for($i=0;$i<count($utenti);$i++) {
if( $_POST['user']==$utenti[$i]["user"] && $_POST['pass']==$utenti[$i]["pass"] )
{
$isLogged=true;
}
}
if($isLogged)
{
$_SESSION['isLogged']="true";
header("Location:".$page_to);
}
else
{
header("Location:login.php?error_login=1");
}
}
else {
header("Location:login.php?error_login=1");
}
?>
---------------------------------------------------------------------------
Quarta pagina: setting.php
In questa pagina è presente il nome fisico e il nome logico del file di testo memorizzato sul disco del Server Web Apache
<?php
$my_database_txt = 'cani.txt';
?>
-----------------------------------------------------------------------------
Quinta pagina: lettura.php
In questa pagina vengono visualizzate tutte le schede dei cani inseriti precedentemente dall'utente loggato
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<h1>Pensione per cani</h1>
<h2><a href="form_insert.php">Inserisci un nuovo cane</a></h2>
<body bgcolor="BLUE00">
<?php
include('setting.php');
$array_righi = file($my_database_txt);
foreach($array_righi as $key => $capi){
list($razza, $taglia, $nome, $eta, $peso, $padrone, $numtel) = explode("|", $capi);
echo '
<p>
Razza: ' .$razza. '<br />
Taglia: ' .$taglia. '<br />
Nome: ' .$nome. '<br />
Età: ' .$eta. '<br />
Peso: ' .$peso. '<br />
Padrone: ' .$padrone. '<br />
Numero telefono: ' .$numtel. '<br />
<a href="action.php?delete=' .$key. '">Elimina</a> - <a href="form_update.php?row=' .$key. '">Modifica</a>
</p>
<hr />';
}
?>
</body>
</html>
-------------------------------------------------------------------------------
Sesta pagina: form_insert.php
Questo è il modulo di inserimento della scheda del cane. (contiene ovviamente il controllo della sessione attiva con le credenziali corrette
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<body bgcolor="GREEN">
<h2><a href="lettura.php">Torna alla lista dei cani</a></h2>
<form action="action.php" method="post">
<label for="razza">Razza</label>
<input type="text" id="razza" name="razza" /><br><br>
<label for="taglia">Taglia</label>
<input type="text" id="taglia" name="taglia" /><br><br>
<label for="nome">Nome</label>
<input type="text" id="nome" name="nome" /><br><br>
<label for="eta">Età</label>
<input type="text" id="eta" name="eta" /><br><br>
<label for="peso">Peso</label>
<input type="text" id="peso" name="peso" /><br><br>
<label for="padrone">Padrone</label>
<input type="text" id="padrone" name="padrone" /><br><br>
<label for="numtel">Numero telefono</label>
<input type="text" id="numtel" name="numtel" /><br><br>
<input type="submit" name="scrivi" value="scrivi" />
</form>
</body>
</html>
----------------------------------------------------------------------------
Settima pagina: action.php
Questa è la pagina più importante perchè sono presenti le istruzioni di registrazione, variazione e cancellazione dei records inseriti.
<?php
include("setting.php");
/*************************
SCRITTURA - REGISTRAZIONE DEL RECORD
**************************/
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");
$razza = str_replace($bad_char, "", $_POST['razza']);
$taglia = str_replace($bad_char, "", $_POST['taglia']);
$nome = str_replace($bad_char, "", $_POST['nome']);
$eta = str_replace($bad_char, "", $_POST['eta']);
$peso = str_replace($bad_char, "", $_POST['peso']);
$padrone = str_replace($bad_char, "", $_POST['padrone']);
$numtel = str_replace($bad_char, "", $_POST['numtel']);
// apriamo il file
$open = fopen($my_database_txt, "a+");
// scriviamo i dati separati dal carattere separatore
fwrite($open, $razza."|".$taglia."|".$nome."|".$eta."|".$peso."|".$padrone."|".$numtel."\r\n");
// chiudiamo il file
fclose($open);
// ritorniamo nella pagina di visualizzazione
header("location: lettura.php");
exit;
}
/*************************
ELIMINARE UNA RIGA - UN RECORD
**************************/
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: lettura.php");
exit;
}
/************************
MODIFICARE UNA RIGA - UN RECORD
*************************/
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");
$razza = str_replace($bad_char, "", $_POST['razza']);
$taglia = str_replace($bad_char, "", $_POST['taglia']);
$nome = str_replace($bad_char, "", $_POST['nome']);
$eta = str_replace($bad_char, "", $_POST['eta']);
$peso = str_replace($bad_char, "", $_POST['peso']);
$padrone = str_replace($bad_char, "", $_POST['padrone']);
$numtel = str_replace($bad_char, "", $_POST['numtel']);
// ri-scriviamo il rigo (che sostituirà il precedente)
$array_righi[$_POST['row_update']] = $razza."|".$taglia."|".$nome."|".$eta."|".$peso."|".$padrone."|".$numtel."\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: lettura.php");
exit;
}
?>
-------------------------------------------------------------------------------
Ottava pagina: form_update.php
Modulo form che consente di modificare i record già inseriti
<?php
include("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($razza, $taglia, $nome, $eta, $peso, $padrone, $numtel) = explode("|", $array_righi[$_GET['row']]);
?>
<html>
<head>
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<body bgcolor="#00BFFF">
<h2><a href="lettura.php">Torna alla lista dei cani</a></h2>
<form action="action.php" method="post">
<label for="razza">Capo</label>
<input type="text" id="razza" name="razza" value="<?php echo htmlentities($razza, ENT_QUOTES); ?>" /><br><br>
<label for="taglia">Taglia</label>
<input type="text" id="taglia" name="taglia" value="<?php echo htmlentities($taglia, ENT_QUOTES); ?>" /><br><br>
<label for="nome">nome</label>
<input type="text" id="nome" name="nome" value="<?php echo htmlentities($nome, ENT_QUOTES); ?>" /><br><br>
<label for="eta">eta</label>
<input type="text" id="eta" name="eta" value="<?php echo htmlentities($eta, ENT_QUOTES); ?>" /><br><br>
<label for="peso">peso</label>
<input type="text" id="peso" name="peso" value="<?php echo htmlentities($peso, ENT_QUOTES); ?>" /><br><br>
<label for="padrone">padrone</label>
<input type="text" id="padrone" name="padrone" value="<?php echo htmlentities($padrone, ENT_QUOTES); ?>" /><br><br>
<label for="numtel">numtel</label>
<input type="text" id="numerotel" name="numtel" value="<?php echo htmlentities($numtel, ENT_QUOTES); ?>" /><br><br>
<input type="hidden" name="row_update" value="<?php echo $_GET['row']; ?>" />
<input type="submit" name="modifica" value="modifica" />
</form>
</body>
</html>
Commenti
Posta un commento