Non c’è una vera e propria risposta a questa domanda , la scelta deve essere fatta in base al problema e al progetto che abbiamo davanti, dalla quantità di informazioni che bisogna memorizzare e dalla potenza del nostro server, ma intanto proviamo a chiarire le differenze.
Sessioni:
– Veloci
– Memorizzazione lato server
– Occupano molto spazio
<?php Session_start(); $_SESSION['nome'] = "pinco pallino"; $nome = $_SESSION['nome']; if (isset($_SESSION['nome'])){ $nome = $_SESSION['nome']; echo $nome; } ?>
Cookies:
– Occupano poco spazio
– Memorizzazione lato server
– Il client può non accettarli
– C’è un limite nella memorizzazione dei cookies
<?php $nome = "test"; $valore = "54"; $scadenza = time() + 604800; $dominio = "francescodestefano.com"; setcookie($nome, $valore, $scadenza, "./", $dominio, 0); if (isset($_COOKIE["test"])) echo "Il cookie vale: " . $_COOKIE["test"] ; else echo "Il cookie non è stato impostato"; ?>
per assicurarsi una difesa in più contro i tentativi di Session Hijacking in entrambi i casi io consiglio:
l’uso dei token criptati in md5:
$testo = "10+ caratteri e letter random"; $token = md5("$testo");
e settaggio dell’htaccess:
<Files ~ "file.php$"> Order allow,deny Deny from all Satisfy All </Files>
Non c’è quindi una risposta generica e quindi poter dire quali dei due utilizzare, potrebbero anche essere utilizzati entrambi nello stesso momento, anche perchè in genere le sessioni possono memorizzare se l’utente ha i cookie abilitati o no e quindi poter registrare delle informazioni come cookie.
I cookie a loro volta potranno poi essere rifiutati dall’utente o cancellati in un secondo momento.
Quindi vanno scelti e utilizzati caso per caso.
Sono felice di aver trovato questo blog, a presto!