-
Sessioni e cookie
Buona sera a tutti, ho una domandona per voi.
Ho da poco creato il mio primo sistema di accesso e quando mi sono realizzata vedendo che tutto funzionava mi hanno detto che l'accesso tramite cookie non è sicuro,:evil:, e che dovovu uinere le sessioni alle cookie.
Ho letto tantissime pagine on-line ma non credo di aver capito le basi.
Il mio codice php si chiude così:
Codice PHP:
$info = base64_encode("$userid|$username|$password|$email");
if ($ricordami==true)
{
setcookie("user","$info",time()+1728000,"/",".worldtechitalia.it");
}
else
{
setcookie("user","$info",0,"/",".worldtechitalia.it");
}
Come creo la sessione e cosa ci metto dentro per aver il massimo della sicurezza?
-
Qui sono spiegate le sessioni di PHP. Per renderle sicure al massimo penso che dovresti trovarti su un server HTTPS, comunque ciò che posso dirti e che le sessioni a differenza dei cookie scadono sempre alla chiusura del browser (tranne se non viene interrotta prima).
-
Quindi mi sorgono due domande:
1) che informazoni passo attraverso le sessioni?
2) se scadono alla chiusura del browser come faccio se l'utente selezione ricordami?
-
1. Qualsiasi informazione vuoi, puoi creare anche più sessioni ognuna contenente una determinata informazione.
2. Beh in questo caso dovresti memorizzare un cookie con qualche parametro. Questo parametro poi viene controllato ogni volta che l'utente accede al sito è se è true (quindi valido) avvia nuovamente le sessioni con le informazioni dell'utente.
-
ma mi consigli di abolire la mia vecchia cookie?
-
Dipende dalla situazione, nel tuo caso dato che dovresti memorizzare una password ti consiglio di non utilizzare i cookie al 100% nel senso che potresti fare così:
L'utente si logga al sito, se il login va a buon fine viene memorizzato un cookie con un valore (ad esempio l'ultima data di login + l'IP) e questo valore oltre ad essere memorizzato nel cookie viene anche salvato da qualche parte nel tuo sito (in un database mysql, txt o altro).
Contemporaneamente insieme alla memorizzazione di questo valore in due luoghi diversi (cookie + db) avvii le sessioni che contengono user password e tutto ciò che vuoi.
L'utente chiude il browser e perde le sessioni ma non il cookie (salvo diverse impostazioni).
Successivamente quando l'utente si ricollegherà al sito, il tuo sito dovrà controllare se esiste il cookie, se esiste ed il valore in esso contenuto corrisponde al valore salvato (per quell'utente) sul tuo sito allora si autoavviano le sessioni, in caso contrario l'utente deve rieseguire il login.
-
Ok capito e ti ringrazio.
Non vorrei essere egoista ma ho letto il link mi hai mandato e ancora ho problemi a creare una sessione
Codice PHP:
session_start();
.....
.....
Puoi farmi un esempio di creazione di uan sessione chiamata user che contenga $username e $password?
-
Codice PHP:
<?php
session_start(); // Avvio la sessione, obbligatorio per far funzionare le sessioni
$_SESSION['username'] = $username; // Dichiaro che la sessione "username" avrà come valore il contenuto della variabile $username
$_SESSION['password'] = $userpass; // Dichiaro che la sessione "password" avrà come valore il contenuto della variabile $userpass
?>
Pagina2.php (in questa pagina stampo le sessioni)
Codice PHP:
<?php
session_start(); // Avvio le sessioni
echo $_SESSION['username'];
echo $_SESSION['password'];
?>
-
Ancora una domanda poi ti lascio stare promesso, ho creato le sessioni:
Codice PHP:
{
session_start();
$_SESSION['userid'] = $userid;
$_SESSION['username'] = $username;
$_SESSION['user_password'] = $password;
$_SESSION['user_email'] = $email;
}
Ho capito che con:
Codice PHP:
<?php
session_start();
$_SESSION = array();
session_destroy();
header("location: log-in.php");
?>
Eseguo il log-out perchè distruggo tutte le sessioni ma se io volessi distruggere solo quelle?
-
Potresti far valere nulla una sessione:
Codice PHP:
$_SESSION['nome_session'] = "";
Oppure poteresti utilizzare uno di questi due esempi:
Codice PHP:
session_unregister("nome_sessione");
unset($_SESSION['nome_sessione']);
-
Così come l'hai scritta va bene lo stesso.