Gentili, sto implementando una procedura di autenticazione (login) che utilizzi le sessioni per verificarne lo stato sulle pagine di un'area privata.
Mi sembra in regola e funzionante ma mi piacerebbe un parere da altri occhi critici che ne evidenziano magari punti di debolezza.
Vi posto il codice della pagina login.php quasi per intero:
codice:
<?	
session_start();
if (!(isset($_SESSION["autenticato"])))
{
    if ( (isset($_POST['userhash'])) and (isset($_POST['passwordhash'])) )
    {		
        if ((ereg("^[a-zA-Z0-9]+$", $userhash)) || (ereg("^[a-zA-Z0-9]+$", $passwordhash)))
        {			
            $query="select * from autenticazione where userhash='".$userhash."' and   passwordhash='".$passwordhash."'";			
            ...
           $numrows=(@mysql_num_rows($result));				        
           if ( (isset($numrows)) && ($numrows>0) )
          {				
              session_regenerate_id();
              $_SESSION["autenticato"]="ok";				
              header('location:login_autenticato.php');
           }
          else//dati di autenticazione non corretti 
               header('location:login.php');	
         }//non passa controllo caratteri
        else			
           header('location:login.php');						
      }//se non è stato postato nulla ripropone la form

}//gia autenticato
else
{
    echo "Gia autenticato, vai a login_autenticato";
    die;
}
?>
...
<form action="login.php" name="registrazione" method="post">
User

<input type="text" name="user" size="20" maxlength="20"/>
			
Password

<input type="password" name="password" size="20" maxlength="20"/>
	
<input type="button" value="Accedi" onclick="login();" />      
</form>
...
Le pagine del tipo login_autenticato.php:
codice:
<? session_start();	
	if (!isset($_SESSION['autenticato']))
	{
		header('location:login.php');		
		exit;		
	}
?>
E naturalmente la pagina di logout.php
codice:
<?php 
session_start();
session_unset();
session_destroy();
?>
Ringrazio chi può darmi qualche spunto per eventuali miglioramenti.
Ciao a tutti