Sessione php

Lorenzo Pezzi

Nuovo Utente
22 Set 2015
23
0
1
Ciao ragazzi mi stavo cimentando sulle sessioni php ma non sono riuscito a risolvere il mio problema:

Ho una pagina di inserimento che non postero, comunque fa il suo e inserisce username email e password.

Poi ho una pagina login. Avvio la sessione all'inizio. Sessione che distruggo se la query non va a buon fine. Sessione che riempio con logged=1 e il nome.

PHP:
<?php session_start();?>

<?php
 include"connessione.php"
?>

<?php 
//$pass=md5($_POST['pass']);
$query ="SELECT * FROM login WHERE username='{$_POST['user']}' AND password='{$_POST['pass']}'";

$res=mysql_query($query);

if ((!$res) OR (mysql_num_rows($res)==0)){
	echo"credenziali errate!!";
	session_unset();
	session_destroy();
	exit;
}else{

$_SESSION['logged']=1;
$_SESSION['user']=$_POST['user'];

header("location: http://www.provee.altervista.org/loginok.php");
}
?>

Se esiste l user a la password dopo aver riempito $_session, indirizzo verso l'altra pagina. Dove riapro la sessione e controllo se il parametro logged è =1. Se è uguale vuol dire che il login nell'altra pagina è andata a buon fine e quindi riceve il benvenuto, altrimenti no.

PHP:
<?php session_start();?>

<!DOCTYPE html>
<head>
	<title>BENVENUTO!!</title>
</head>
<body>
<?php

	if($SESSION['logged']==1){
    	echo"Benvenuto".$_SESSION['user'];
	}else{
    	echo"devi loggarti";
        session_unset();
        session_destroy();
    }


?>

Mi dice sempre che devo loggarmi anche se inserisco i dati esatti.

Grazie a tutti
 

Lorenzo Pezzi

Nuovo Utente
22 Set 2015
23
0
1
Dopo il tag body dove c'è l'if manca il trattino basso in $_SESSION

Inviato dal mio GT-I9300 utilizzando Tapatalk

Ok mi sento un po stupido. Come prima cosa ti ringrazio e poi volevo chiederti 2 cose.
1 per tutte le altre pagine devo mantenere il controllo logged=1?
2 le variabili $_session[] si azzerano solo dopo che si è chiuso il browser (oltre che manualmente in caso di codice)?

Se hai qualche consiglio sono ben accetti :)
 

Akuma

Nuovo Utente
17 Mag 2014
28
0
1
30
Peschiera del Garda (VR)
Si esattamente, il controllo deve essere inserito in tutte le pagine protette.

La questione di "azzerare" le sessioni è un po' più complessa di quello che sembra, cercherò di spiegartela nel modo più semplice.
Praticamente quando avvii la sessione, si crea un cookie con un id nel browser, questo id fa si che il server riconosca il client, dando accesso a quei dati che salvi in sessione (come in questo caso l'autenticazione) ecc...
Quando si chiude il browser teoricamente il cookie dovrebbe cancellarsi, ma può capitare che rimangano sul pc dei processi attivi dello stesso browser, quindi anche dopo averlo chiuso il cookie non si cancella e dopo averlo riaperto ti farebbe riaccedere all'area protetta.
Comunque c'è da tenere presente che la sessione non viene comunque distrutta chiudendo il browser, ma solo il sopracitato cookie, quindi se la sessione non viene terminata dall'apposito comando via php, questa rimane allocata nella memoria del server finchè non viene cancellata dal Garbage Collector.

Tieni a mente queste cose per gestire al meglio le sessioni, spero di esserti stato utile :)
 

Lorenzo Pezzi

Nuovo Utente
22 Set 2015
23
0
1
Si esattamente, il controllo deve essere inserito in tutte le pagine protette.

La questione di "azzerare" le sessioni è un po' più complessa di quello che sembra, cercherò di spiegartela nel modo più semplice.
Praticamente quando avvii la sessione, si crea un cookie con un id nel browser, questo id fa si che il server riconosca il client, dando accesso a quei dati che salvi in sessione (come in questo caso l'autenticazione) ecc...
Quando si chiude il browser teoricamente il cookie dovrebbe cancellarsi, ma può capitare che rimangano sul pc dei processi attivi dello stesso browser, quindi anche dopo averlo chiuso il cookie non si cancella e dopo averlo riaperto ti farebbe riaccedere all'area protetta.
Comunque c'è da tenere presente che la sessione non viene comunque distrutta chiudendo il browser, ma solo il sopracitato cookie, quindi se la sessione non viene terminata dall'apposito comando via php, questa rimane allocata nella memoria del server finchè non viene cancellata dal Garbage Collector.

Tieni a mente queste cose per gestire al meglio le sessioni, spero di esserti stato utile :)

Quindi puo accadere che anche chiudendo il browser la sessione rimanga attiva se non chiusa da codice. Ma comunque accessibile sempre dallo stesso id quindi dallo stesso utente.
 

Akuma

Nuovo Utente
17 Mag 2014
28
0
1
30
Peschiera del Garda (VR)
Quindi puo accadere che anche chiudendo il browser la sessione rimanga attiva se non chiusa da codice. Ma comunque accessibile sempre dallo stesso id quindi dallo stesso utente.

La sessione rimane allocata nel server fino a che non viene distrutta da codice (session_destroy), oppure se non più "attiva" ripulita dal Garbage Collector. Quindi anche se chiudi il browser la sessione rimane comunque attiva all'interno della memoria del server se non si verificano le due condizioni sopra descritte.

Se chiudi il browser si cancella solo il cookie con l'id sessione che ti permette di accedere ai dati di sessione allocati nel server.
 
Discussioni simili
Autore Titolo Forum Risposte Data
M [PHP] Passare variabile di sessione con metodo GET PHP 10
L [PHP] Suggerimento su sessione PHP 6
Cosina [PHP] Chiudere sessione quando la pagina viene riaggiornata PHP 4
cattivic72 [PHP] Durata sessione PHP 1
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
I [PHP] login con sessione singola PHP 1
otto9due [PHP] id di sessione "session_id()" a cosa serve e come utilizzarlo? PHP 4
K [PHP] Unica sessione login forum/sito PHP 1
L [PHP] Sessione tra sottodominio PHP 1
M [PHP] Sessione Login PHP 15
gandalf1959 [PHP] variabile di sessione si azzera ricaricando la pagina? PHP 3
M durata sessione php PHP 1
zighy php sessione per singolo utente PHP 7
U passare una variabile di sessione da pagina di joomla a pagina php Joomla 3
max_400 php: sessione scadenza a tempo e reidirect - by max4001976 PHP 1
H autenticazione sessione ajax/php Ajax 2
L php e ajax, le variaibli di sessione si possono usare? Ajax 0
A array in una sessione php PHP 3
R [PHP] - Variabili di sessione PHP 1
L Sessione e array per utenti PHP 0
N Variabile di sessione è un array PHP7 PHP 3
R probema con la sessione PHP 0
S Utilizzo variabili di sessione tra PC e server PHP 0
R SESSIONE PERSISTENTE Programmazione 0
Emix Sessione strana... PHP 16
P dati da tenere in sessione PHP 2
G Uso variabili di sessione PHP 4
N warning su sessione PHP 2
Emix Problema sessione PHP 6
M Problemi col settare variabile di sessione PHP 3
S sessione di login che non dura nullaaa Supporto Mr.Webmaster 0
otto9due Eeliminare tabella db a sessione scaduta.. Possibile? PHP 0
L eliminare un prodotto dal carrello tramite l'id della sessione PHP 1
T Passare dati (ID di sessione) tra le varie activity di un app android Sviluppo app per Android 1
O Mantenere una sessione PHP 20
E file di sessione non si aggiornano PHP 5
A estrarre il ciclo while in una sessione e spedire l'array in un db PHP 2
D Sessione PHP 11
P Problema con id di sessione PHP 4
L Query con sessione PHP 3
asevenx mantenere sessione login attiva anche in altre pagine PHP 8
Y mantenere sessione login? PHP 5
L problema variabile per creare sessione PHP 5
A Variabile di sessione perde il valore PHP 2
C cancellare un elemento in un array memorizzato in una sessione PHP 12
C E' possibile salvare array tramite sessione o cookie? PHP 5
darkjoker Sessione di bug hunting Sicurezza e Virus 1
M $_SESSION['sessione'][1] possibile? Sessioni con indice. PHP 8
Monital Distruggere una sessione all'interruzione dello script PHP 4
I Sessione scaduta PHP 6

Discussioni simili