Buon giorno, sto cercando disperatamente, di capire una volta per tutte le sessioni, cookie, ma sopratutto l'autenticazione di uno o più utenti.
Ho trovato in rete e qui su html.it, due modi apparentemente diversi di autenticazione.
Volevo un vostro parere sui due modi e se nell'eventualità, sia del primo che del secondo, apportare qualche miglioria.

1° esempio:
codice:
function authenticate() {
	header('WWW-Authenticate: Basic realm="Prova del Sistema di Autenticazione"');
	header('HTTP/1.0 401 Unauthorized');
	echo "Per poter accedere a questa risorsa occorre inserire una coppia login e password valide\n";
	exit;
}
	
if (!isset($_SERVER['PHP_AUTH_USER']) || ($_POST['SeenBefore'] == 1 && $_POST['OldAuth'] == $_SERVER['PHP_AUTH_USER'])) {
	   authenticate();
} 
else {
	   echo "

Benvenuto: {$_SERVER['PHP_AUTH_USER']}
";
	   echo "Vecchio: {$_REQUEST['OldAuth']}";
	   echo "<form action='{$_SERVER['PHP_SELF']}' METHOD='POST'>\n";
	   echo "<input type='hidden' name='SeenBefore' value='1'/>\n";
	   echo "<input type='hidden' name='OldAuth' value='{$_SERVER['PHP_AUTH_USER']}'/>\n";
	   echo "<input type='submit' value='Ri autentifica'/>\n";
	   echo "</form></p>\n";
}
Questo primo esempio, mi restituisce all'entrata della pagina, una doppia autenticazione.
Che, non capisco come fà a restargli in memoria lo user e la password digitati.
Crea un file di sessione?o un cookie?E se si, in quale directory?Perchè ho tentato di trovarli, ma non ci sono riuscito.


2° esempio:
codice:
include('ConnectionDB.class.php');
$Rconn = new DBConnection();
$Rconn->VerificaConn($ConnVersoDB);
	
	$_SESSION['SessUserName'] =	$_SERVER['PHP_AUTH_USER'];
	
	//echo "User: " . $_SESSION['SessUserName'];
	$redirect="http://localhost/sessioni_TXT/login.php";
	
	//gestione della sessione nel caso in cui i cookie sono disabilitati 
	if(isset($_POST['PHPSESSID']) && !isset($_COOKIE['PHPSESSID'])){ 
		$PHPSESSID=$_POST['PHPSESSID'];
	  	header("Location: $redirect?PHPSESSID=$PHPSESSID"); //si ricarica la pagina di login 
	} 
	 
	session_start(); //si inizia o continua la sessione 
	 
	//controllo user e passwd da login 
	if(isset($_POST['posted_username']) && isset($_POST['posted_password'])){
		$sql = ("select distinct login, pwd_md5 from session_start where login='".$_POST['posted_username']."' and pwd_md5='".md5($_POST['posted_password'])."'") or die ("Impossibile effettuare la query sql" . mysql_error());
		$Rs = mysql_query($sql);
		if(@mysql_num_rows($Rs)==0){
				echo "<p style='color:red;text-align:center;'>
						La ricerca non ha prodotto risultati!
						

						Indietro
					</p>";
				//exit;
		}
		else{
			while ($riga = mysql_fetch_array($Rs)) {
				$loginDB = $riga['login'];
				$pwd_md5DB = $riga['pwd_md5'];
			}
		
			if($loginDB==($_POST['posted_username']) && $pwd_md5DB==md5($_POST['posted_password'])) 
				$_SESSION['user']=$_POST['posted_username'];
		}
	} 
	 
	//creazione cookie per login automatico 
	if(isset($_POST['ricorda']) && isset($_SESSION['user'])){ 
		$cok=md5($login_user)."%%".$pass_user; 
	  	setcookie("sav_user",$cok,time()+31536000); 
	} 
	 
	//logout 
	if($_GET['logout']==1)	{ 
		$_SESSION=array(); // Desetta tutte le variabili di sessione. 
	  	session_destroy(); //DISTRUGGE la sessione. 
	  	if(isset($_COOKIE['sav_user'])) //se presente si distrugge il cookie di login automatico 
			setcookie("sav_user",$cok,time()-31536000); 
		  	header("Location: $redirect"); //si ricarica la pagina di login 
		  	exit; //si termina lo script in modo da ritornare alla schermata di login 
	} 
	 
	//controllo user e passwd da cookie 
	if(isset($_COOKIE['sav_user'])){ 
		$info_cok=$_COOKIE['sav_user']; 
	  	$cok_user=strtok($info_cok,"%%"); 
	  	$cok_pass=strtok("%%"); 
	  	setcookie("sav_user",$info_cok,time()+31536000); 
	 
		if($cok_user==md5($login_user) && $cok_pass==$pass_user) 
			$_SESSION['user']=$login_user; 
	} 
	 
	//caso in cui si vuole ricordare il login, ma i cookie sono off 
	if(!isset($_COOKIE['PHPSESSID']) && isset($_POST['ricorda'])) 
		header("Location: $redirect?nocookie=1"); 
?> 
<HTML> 
	<HEAD> 
	</HEAD> 
	<BODY> 
	<?php 
	$PHPSESSID=session_id(); 
	 
	if(!isset($_SESSION['user'])){ //non siamo loggati, pagina di login 
		if($_GET['nocookie']==1) //i cookie sono off e si vuole ricordare il login 
			print("Spiacente, ma con i cookie disabilitati non posso fare i miracoli ;)
 Attivali se vuoi ricordare il tuo login.
"); 
	print("

 
	<FORM METHOD='POST' ACTION=\"login.php\"> 
		username: <INPUT TYPE='TEXT' SIZE='20' NAME='posted_username'>
 
		password: <INPUT TYPE='PASSWORD' SIZE='20' NAME='posted_password'>
 
		ricordami: <INPUT TYPE='CHECKBOX' NAME='ricorda' VALUE='1'>

 
		<INPUT TYPE='SUBMIT' NAME='SUBMIT' VALUE=\"Loggami\">
"); 
		print("<INPUT TYPE='text' NAME='PHPSESSID' VALUE='$PHPSESSID'>"); 
	if(!isset($_COOKIE['PHPSESSID'])) //i cookie sono off, dobbiamo propagare noi il PHPSESSID 
		print("<INPUT TYPE='text' NAME='PHPSESSID' VALUE='$PHPSESSID'>"); 
		print("</FORM>"); 
	} 
	else{ //siamo loggati pagina riservata 
		$username=$_SESSION['user']; 
		print("Il tuo ID: $PHPSESSID 

"); 
		print("Sei loggato come: $login_user

"); 
		print("<A HREF=\"login.php?logout=1\">logout</A>"); 
	}
?>
In questo secondo, c'è il classico form, dove si inserisce user e password.
Faccio la connessione al DB, estrapolo i dati che mi servono per il confronto, creo un file di sessione ed eventualmente un cookie..
Ho l'opportunità di fare un logout cosi, da cancellare( il contenuto)del file di sessione ed il cookie.

Un'altra cosa.Una volta loggato e riconosciuto, entro e visito quelle pagine protette, ma, per tener attivo l'utente in tutte le pagine come devo fare?

Grazie mille e scusatemi se mi sono dilungato cosi..Ma io devo capire, oltre che studiare