Sto vedendo come funziona un codice trovato in rete per la visione e l'inserimento di news. Dal lato amministratore è previsto un login che consente di accedere all'area modifica. Il problema è che dopo aver inserito username e password avviene sì l'accesso, ma subito dopo la variabile di sessione che fino al passaggio successivo conteneva un valore, si svuota. Non capisco per quale motivo.
Questo è il file verify.php
Codice PHP:
<?php
session_start();
//Controllo che la sessione sia attiva
if(!IsSet($_SESSION['intUserID'])){
//Controllo se l' utente vuole loggarsi
$username = @$_POST['txt_username'];
$password = @$_POST['txt_password'];
//Controllo se l' username e la password non sono vuoti
if((!strlen($username) == 0) and (!strlen($password) == 0)){
//Effettuo il controllo dei dati
$strSQL = "SELECT * FROM login";
$strSQL .= " WHERE strUser = '".$username."' AND strPass = MD5('".$password."')";
$result = mysql_query($strSQL);
$row = mysql_fetch_row($result);
//Controllo se l' utente e' stato trovato
if(!strlen($row[0]) == 0){
//Effettuo il login
$_SESSION['intUserID'] = $row[0];
print_r ($_SESSION);
}
//Libero la memoria
mysql_free_result($result);
}
}
if(@$_GET['logout'] == 1){ //Effettuo il Logout
$_SESSION = array(); //Desetto tutte le variabili di sessione
session_destroy(); //Distruggo le sessioni
}
?>
questo invece il file da cui si effettua l'accesso e che in caso di login mostra le aree che possono essere modificate:
Codice PHP:
<?php require_once('../includes/db_conn.php');?>
<?php require_once('../includes/verify.php');?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Amministrazione News</title>
</head>
<body>
<?php
//Controllo che l' utente sia loggato
echo "la sessione :".$_SESSION['intUserID'];
print_r ($_SESSION);
if(IsSet($_SESSION['intUserID']))
{
//Recupero la pagina da visualizzare
$page = @$_GET['page'];
//Effettuo lo switch
switch($page)
{
//*.*.*.*.*.*.*.*.*.*.
case 'amministratore':
require_once('pages/amministratore.php');
break;
//*.*.*.*.*.*.*.*.*.*.
//*.*.*.*.*.*.*.*.*.*.
case 'autore':
require_once('pages/autore.php');
break;
//*.*.*.*.*.*.*.*.*.*.
//*.*.*.*.*.*.*.*.*.*.
case 'sezione':
require_once('pages/sezione.php');
break;
//*.*.*.*.*.*.*.*.*.*.
//*.*.*.*.*.*.*.*.*.*.
case 'articolo':
require_once('pages/articolo.php');
break;
//*.*.*.*.*.*.*.*.*.*.
//*.*.*.*.*.*.*.*.*.*.
default:
require_once('pages/menu.php');
break;
//*.*.*.*.*.*.*.*.*.*.
}
}else{ //Visualizzo il LOGIN
?>
<table align="center">
<form method="post" action="index.php">
<tr height="20">
<td colspan="2" align="center" bgcolor="#E9E9E9">Login Amministrazione</td>
</tr>
<tr>
<td>Username:</td>
<td><input type="text" name="txt_username"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="txt_password"></td>
</tr>
<tr height="20">
<td colspan="2" align="center"><input type="submit" value="Login"></td>
</tr>
</form>
</table>
<?php
}
?>
</body>
</html>
Una volta effettuato l'accesso viene visualizzata, all'interno dell'index, la pagina pages/menu.php che consiste in :
<h1>Amministrazione News</h1>
<hr/>[*]Cambia Login[*]Gestione Autori[*]Gestione Sezioni[*]Gestione Articoli[*]Log Out
cliccando su uno qualsiasi di questi link, viene mostrato di nuovo il pannello del login. Ho messo dei print e degli echo per vedere cosa succedeva di questa variabile $_session, ma appena ci si logga con successo, il suo valore diventa 1 mentre subito dopo si svuota e non capisco perchè.