Sto cercando di imparare ad usare i cookie e le sessioni.. Volevo realizzare una semplice pagina di login (login.php) che contiene una form dove inserire username e password. Il sistema controllerà che i dati inseriti siano corretti (confrontandoli con la lista degli utenti registrati nel file config.inc), dopodichè se i dati sono sbagliati si riaprirà il login, altrimenti si apriràla pagina insidepage.php che darà semplicemente il benvenuto all'utente e dove c'è un contatore che fa vedere quante volte quell'utente è acceduto alla pagina.
Purtroppo però non mi funziona A dire la verità una volta mi ha funzionato e mi ha fatto loggare, poi però ho premuto logout in insidepage.php e quando sono riandata successivamente a loggarmi con lo stesso nome utente o anche con l'altro mi riappare il login con i campi vuoti come se i dati non fossero corretti...oppure non mi sembra di aver cambiato il codice da allora...
Comunque questo è il file login.php:
<?php
require 'config.inc';
if(!empty($_REQUEST['username']) && !empty($_REQUEST['password'])) {
$user = trim($_REQUEST['username']);
$pass = trim($_REQUEST['password']);
/* check if user is defined with the given password */
if($Users[$user]==$pass) {
// Setting Session
session_start();
$_SESSION['user'] = $user;
// Redirecting to the logged page.
header("Location: insidepage.php");
} else {
// Wrong username or Password. Show error here.
header("Location: login.php?error=yes");
}
} else {
/* no login data: send login form */
?>
<HTML>
<HEAD>
<TITLE>Login page</TITLE>
</HEAD>
<BODY>
<H2>User Login</H2>
<FORM action="insidepage.php" method="POST">
Username <INPUT type="text" name="username" size="15"/>
Password <INPUT type="password" name="password" />
<INPUT type="submit" />
</FORM>
<?php
}
?>
</BODY>
</HTML>
QUESTO INVECE è IL FILE config.inc :
[COLOR= red]
<?php
$Users = array (
"pippo" => "1234",
"pluto" => "1233"
);
?>
[/COLOR]
QUESTO è IL FILE insidepage.php :
<?php
// Starting the session
//session_start();
if(empty($_SESSION['user'])) {
// Code for not Logged members
header("Location: login.php");
} else {
/* valid user */
/* count number of accesses */
if(isset($_SESSION['insidecnt'])) {
$_SESSION['insidecnt']++;
} else {
$_SESSION['insidecnt']=1;
}
}
?>
<HTML>
<HEAD>
<TITLE>Welcome page</TITLE>
</HEAD>
<BODY>
<?php
echo "<H1>Welcome ". $_SESSION['user'] ."</H1>";
echo "You reloaded ". $_SESSION['insidecnt'] .
" times this page in your current session";
?>
Logout
</BODY>
per completezza aggiungo anche il logout:
<?php
session_start();
session_destroy();
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time()-42000, '/');
}
header("Location: login.php");
?>