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.