Salve gente
Ho programmato tutta la notte con molte soddisfazioni (stranamente risultava tutto subito ) ma ecco che qualcosa va storto.
Nel mio database ho una tabella per gli utenti registrati con dei campi quali:
Username
Password
Privilegi
Privilegi potrà essere 1 o 0.
Nel caso sia 1 potrà avere accesso ad una pagina di amministrazione.
Il login e la verifica dei Privilegi la effettuo in questo modo (da premettere che è solo l'essenziale, una pagina di test):
Codice PHP:
<html>
<head>
<title>001</title>
</head>
<body>
<?php
//Connessione database
$connect = new mysqli("localhost", "username", "password", "db");
// verifica dell'avvenuta connessione
if (mysqli_connect_errno()) {
// notifica in caso di errore
echo "Errore nella connessione!";
// interruzione delle esecuzioni i caso di errore
exit();
}
else {
$permessi=10; // in caso di connessione attiva
if(isset($_POST['submit'])){
$query=("SELECT Username, Pass, Permessi FROM utenti");
$risultato = mysqli_query($connect, $query);
while($array = mysqli_fetch_array($risultato, MYSQLI_ASSOC)){
if($array["Username"]==$_POST['username'] && $array["Pass"]==$_POST['pass']){
$_SESSION['Username']=$_POST['username'];
if($array["Permessi"]==1) printf("Avanti");
}
}
}
}
$connect->close();
?>
<form method="post" id="modulo">
<table>
<tr><td valign="top"><span>Username:</span></td><td><input value="<?= $_POST['username'];?>" name="username" type="text" id="username" /></td></tr>
<tr><td valign="top"><span>Password:</span></td><td><input value="<?= $_POST['pass'];?>" name="pass" type="password" id="pass" /></td></tr>
<tr><td></td><td>
<input type="submit" name="submit" id="submit" value="Invia" />
</tr></td>
</table>
</form>
</body>
</html>
In questo modo se l'utente che prova il login ha i permessi necessari spunta la scritta Avanti, altrimenti niente (questo funziona perfettamente, magari se avete consigli essendoci arrivato per logica a scrivere in questo modo).
Per verificare la connessione sulle altre pagine ho visto in giro (compresi decine di post presenti su Altervista) ma l'uso di session_start() e $_SESSION non mi è ancora ben chiaro (ho letto pure la guida ufficiale php ).
E' corretto l'uso di $_SESSION nel codice postato in precedenza?
Nelle altre pagine, per verificare se l'utente è loggato, faccio in questo modo utilizzando session_start();:
Codice PHP:
<?php
session_start();
if (isset($_SESSION['Username'])) echo "Utente loggato";
?>
Qualcuno sa spiegarmi bene dove sbaglio?
Thanks..