Sto provando un sistema di login con uso di sessioni che ho copiaincollato qualche tempo fa da una discussione su questo forum.
Sembrerebbe tutto a posto ma, nelle pagine protette, indipendentemente da quale user e password io inserisca (anche quelle corrette admin / admin), quando premo invio i campi del form si resettano e non si può accedere.
In locale o su Altervista il risultato è lo stesso.
Vi posto il codice, così chi vuole gli dà un'occhiata, ma indipendentemente che lo guardiate o meno, il fatto che il form resetti i campi quando premo invio senza che avvenga il login è indice di quale errore? Configurazione di php o errore nello script?
Grazie a chi mi vorrà rispondere. Un saluto a tutti.
Codice PHP:
<?php
//Da inserire all'inizio di ogni pagina che si vuole proteggere
require_once ("login.php");
?>
<?php
//USERS.PHP
$users['admin'] = "admin";
?>
<?php
//LOGIN.PHP
session_start();
require_once ("users.php");
if ( !isset($_POST['user']) || !isset($_POST['pass']) || !isset($_SESSION['user']) || !isset($_SESSION['pass']) ) {
form();
exit;
}
elseif ( !check_login($_POST['user'], $_POST['pass'], $users) ) {
form ( "Username e/o password errati." );
exit;
}
elseif ( !check_login($_SESSION['user'], $_SESSION['pass'], $users) ) {
form("Username e/o password di sessione errati.");
exit;
}
elseif ( check_login($_POST['user'], $_POST['pass'], $users) ) {
$_SESSION['user'] = $_POST['user'];
$_SESSION['pass'] = $_POST['pass'];
}
function check_login ( $user, $pass, $users ) {
foreach($users as $key => $value) {
if ( $user == $key && $pass == $value ) {
return true;
}
}
return false;
}
function form( $message="" ) {
echo "
<form action='?' method='post'>
<h2>Login</h2>
Username: <input type='text' name='user'>
Password: <input type='password' name='pass'>
";
if ($message != "") echo $message;
echo "
<input type='submit' value='login'>
</form>
";
}
?>