Per altre vie questa discussione è andata avanti...
Quindi per non far perdere il filo a quanti si siano affezionati al thread (e per incorrere in sanzioni e/o ammonimenti da parte degli amministratori...
) spiegherò a che punto siamo arrivati.
L'idea è (dovrebbe essere...) di fare una query al database per recuperare le pagine a cui il lavoratore ha diritto di accedere al momento della login.
Per pigrizia non ho testato ciò che segue, che è una modifica di uno dei codici postati da morena:
Codice PHP:
<?
session_start();
$user = FixData($_POST["user"],1,1);
$password = FixData($_POST["password"],1,1);
$query = "SELECT id_lavoratore FROM lavoratore WHERE user = '".$user."' AND password = '".$password."'";
$result = mysql_query($query);
if (mysql_num_rows($result) > 0) {
$studente = mysql_fetch_assoc($result);
$_SESSION["tipo"] = "lavoratore";
$_SESSION["id"] = $lavoratore["id_lavoratore"];
// Da qualche parte nel database dovresti avere le pagine a cui il lavoratore puo' accedere.
$query = "SELECT pagina FROM pagine_lavoratore WHERE id_lavoratore = ".$lavoratore['id_lavoratore'];
$result = mysql_query($query);
$pagine_disponibili = Array();
while($row = mysql_fetch_assoc($result))
{
$pagine_disponibili[$row['pagina']] = true;
}
$_SESSION["pagine_disponibili"] = $pagine_disponibili;
}
mysql_free_result($result);
}
if ($_SESSION["tipo"]) {
header("location:index.php");
} else {
session_destroy();
header("location:login.php");
}
?>
Se l'utente inserisce username e password corrette, in sessione viene aggiunto anche un vettore contenente le pagine a cui l'utente ha diritto ad accedere.
Ho utilizzato un vettore associativo che ha per chiave il nome della pagina, e che associa alla chiave il valore true. Diciamo che non mi pare una idea eccessivamente stupida...
Siccome potrebbero esserci dubbi su come si usi poi il vettore associativo, posto anche questo esempio (testato e garantito):
Codice PHP:
<?
$array = Array();
$array['pag']=1;
$array['chiave 2']=2;
$chiave3 = "chiave 3";
$valore3 = "valore 3";
$array[$chiave3] = $valore3;
$array['index.htm'] = true;
$array['fisica_nucleare.php'] = false;
foreach ($array as $key => $value)
{
echo $key . " -> " . $value . "
";
}
echo "
";
$vettore_pagine_test = array ( "index.htm", "fisica_nucleare.php", "pagina_inesistente.php" );
for ($i=0; $i<3; $i++)
{
$pagina_richiesta = $vettore_pagine_test[$i];
if ($array[$pagina_richiesta])
{
echo $pagina_richiesta . ": ammessa
";
}
else
{
echo $pagina_richiesta . ": non ammessa, ritenta, sarai più fortunato
";
}
}
?>
Nulla di particolare. Il foreach fa vedere tutto il contenuto dell'array associativo.
Il secondo ciclo di for serve solo per ciclare su un vettore di pagine da verificare. Per ogni pagina del vettore viene stampato un messaggio o l'altro a seconda del valore associato a quella pagina nel vettore associativo.