Ti mostro io come farei (stile procedurale, che è più veloce da scrivere
)
Premetto, che se l'utente non è loggato viene rediretto sulla pagina di login
pagina_generica_con_filtro_di_accesso.php
Codice PHP:
<?php
// Il seguente pezzo di codice va su tutte le pagine hanno restrizioni di accesso
// Quindi potresti spostarlo su un file ed usare l'include
// Inizio filtro accesso
session_start();
if(!isset($_SESSION['user'])){
$_SESSION['Auth'] = "Accesso negato";
header("Location: login.php");
exit();
}
// fine filtro accesso
?>
<html>
...
<?php
include ("header.php"); // Qua basta che fai stampare i dati del'utente,
// senza fare la query, tanto i dati li hai in sessione
include ("oscura.php");
include ("barra.php");
?>
</html>
Poi il file login.php
Codice PHP:
<?php
session_start();
include("ConnUtenti.php");
if(isset($_POST['mail']) && isset($_POST['passi'])){
// POST login
header('Cache-Control: Private');
$mail = mysql_real_escape_string($_POST['mail']);
$password = mysql_real_escape_string($_POST['passi']);
$nome = $_POST['nome']; // a cosa ti serve?
$insert = "SELECT * FROM tab WHERE mail = '$mail' AND pass = '$password'";
$risultato =mysql_query($insert);
$riga = mysql_num_rows($risultato);
if($riga > 0){
// in teoria dovresti avere un solo risultano, no?
$row = mysql_fetch_array($risultato);
$_SESSION['user']=$row['mail'];
$_SESSION['id']=$row['id'];
$_SESSION['nome']=$row['nome'];
$_SESSION['cognome']=$row['cognome'];
$_SESSION['pass']=$row['pass'];
$_SESSION['pass2']=$row['pass2'];
// Se metti in sessione tutti i dati, tanto vale fare semplicemente
// $_SESSION['user'] = $row;
// redirect sulla pagina home dell'utente
header('Location: main.php');
exit();
}else{
$_SESSION['Auth'] = "Nome e password errati";
}
}
?>
<html>
....
<?php if(isset($_SESSION['Auth'])): ?>
<div class="error"><?php echo $_SESSION['Auth'] ?> </div>
<?php
unset($_SESSION['Auth']);
endif;
?>
// fa il submit sulla stessa pagina
<form action="login.php">
....
</form>
...
</html>