allora io la cosa l'ho risolta cosi...
ipotizziamo di avere due pagine login.php e index.php
tu hai il form in login.php e ti rimanda alla pagina index.php giusto?
nella pagina index.php fai i controlli e crei una session giusto?
io ho lo stesso problema con i cookies quindi tu il form lo fai puntare a login.php li fai i controlli e se vanno a buon fine crei la session e fai un redirect a index.php. ovviamente dovrai avere un campo input hidden per controllare se è stato inviato il form per eveitare controlli inutili
login.php
HTML:
<form id="form1" name="form1" method="post" action="login.php">
<b>Nome utente:</b><br />
<input type="text" name="user" /><br />
<b>Password:</b><br />
<input type="password" name="pwd" /><br />
<input type="submit" value="Entra" />
</form>
a inizio pagina metti questi controlli
PHP:
//se utente già loggato rimanda alla index
if(isset($_COOKIE['loggato'])) {
header("location: index.php");
}
if(isset($_POST['user'])) {
//controllo se esiste l'utente
$query = "SELECT * FROM utenti WHERE nome_utente = '" . $_POST['user'] . "' AND pwd_utente = '" . $_POST['pwd'] . "' AND level_utente < 6";
$admin = mysql_query($query,$conn);
if ($row=mysql_fetch_array($admin)) {
setcookie("loggato", $row['id_utente'], time()+3600);
header("location: index.php");
}
else {
header("location: login.php");
}
}
nella index.php ti basterà un controllo solo
PHP:
if(!isset($_COOKIE['loggato'])) {
header("location: login.php");
}
nel mio codice non ce la parte di dichiarazione del db perche lo includo in ogni pagina da un file esterno in modo che se dovessi modificare il nome al db o la password modifico un file che vale per tutte le pagine che lo utilizzano :elvis: