Innanzitutto tutto questo:
$query="SELECT username, password FROM utenti ";
$username=$_POST['username'];
$password=$_POST['password'];
$query.="WHERE username='$username';";
$risultato = mysql_query($query)
or die("query non riuscita: ".mysql_error());
$num_righe = mysql_num_rows($risultato);
if ($num_righe==1)
{
while($righe=mysql_fetch_array($risultato,MYSQL_AS SOC))
{
if($_POST['password']==$righe['password'])
{
echo "utente riconoscuto
";
echo "Entra!";
QUI BISOGNEREBBE ASSEGNARE LA VARIABILE
}
else
{
echo "utente non valido";
echo " Riprova
";
echo " Indietro alla home
";
echo "Hai sbagliato la password, cliccaqui e riprova!";
}
potrebbe essere così semplificato:
$username=$_POST['username'];
$password=$_POST['password'];
$query = "SELECT username FROM utenti
WHERE username='$username' and BINARY password='$password'";
/* Praticamente immagino che la password sia case sensitive, in tal caso BINARY
ti fa un controllo preciso (sul codice ascii dei caratteri) tra la password nel DB
e quella fornita nel log-in. Se, inveve non è case sensitive, allora togli l'opzione
BINARY */
$risultato = @mysql_query($query) or die("query non riuscita: " . @mysql_error());
//Inoltre ti consiglio di usare @ davanti ai comandi mysql perché in tal modo a video
//non vengono mostrate informazioni sensibili che qualcuno potrebbe carpire.
if ($riga = @mysql_fetch_assoc($risultato))
{
echo "utente riconoscuto
";
echo "Entra!";
QUI BISOGNEREBBE ASSEGNARE LA VARIABILE
}
else
{
echo "utente non valido";
echo " Riprova
";
echo " Indietro alla home
";
echo "Hai sbagliato la password, cliccaqui e riprova!";
}
Hai poi scritto:
io ho provato, per quanto capito a fare:
$_SESSION['id'] = $username;
OK va bene.
Hai scritto:
e nella pagina protetta:
<?php
session_start();
if (!empty($_SESSION['id']))
{
echo("Non sei autenticato!");
}
else
{
echo "bene bene";
}
?>
In realtà dovresti scrivere
if (empty($_SESSION['id']))
{
echo("Non sei autenticato!");
}
else
{
echo "bene bene";
}
oppure
if (!isset($_SESSION['id']))
{
echo("Non sei autenticato!");
}
else
{
echo "bene bene";
}
Anche perché se la variabile id è presente nella sessione dell'utente sicuramente conterrà il valore dello username.
Per sicurezza, infine fai in modo di impostare nel php.ini
register_globals = Off
Ciao.