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



Link per scaricare il file zippato con tutte le pagine: http://www.webalice.it/paolo.latella/Esercizio_pensione_cani.zip

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