Uso variabili di sessione

GoldenDragon

Nuovo Utente
22 Giu 2015
8
0
0
Se un sito è destinato a molti utenti che interagiscono nello stesso momento, posso usare delle variabili generiche per fare delle operazioni o tutto ciò che è relativo ad uno specifico utente va in una variabile di sessione e si può usare solo quella?
Voglio dire: per passare informazioni da uno script php ad un altro uso le variabili di sessione, ma all'interno di uno stesso script posso fare qualcosa tipo

PHP:
$username = $_SESSION["username"];

e poi operare sempre su $username o si rischia qualche incongruenza? Perchè in fondo il server è uno e se devo fare la stessa operazione per più utenti mi troverei ad assegnare alla stessa variabile $username più valori diversi...o sbaglio?
 

Night Assassin

Utente Attivo
16 Mar 2013
200
0
0
Non c'entra nulla. La variabile $_SESSION riprende dati dai cookie... ogni browser ha i suoi. Non vengono salvate nel server

Inviato dal mio GT-S5360 con Tapatalk 2
 

GoldenDragon

Nuovo Utente
22 Giu 2015
8
0
0
Non c'entra nulla. La variabile $_SESSION riprende dati dai cookie... ogni browser ha i suoi. Non vengono salvate nel server

La variabile $_SESSION no, ma la variabile $username si. Il mio dubbio è proprio questo: le variabili NON di sessione indicano lo stesso indirizzo in memoria per ogni utente o sono allocate diversamente per ogni utente collegato?

Ad esempio:

PHP:
<?php session_start();

/*Istruzione 1:*/  $username = $_SESSION['username'];  //salvato in precedenza da un altro script
/*Istruzione 2:*/  echo $username;

?>


Se due utenti eseguono lo script nello stesso momento, ipotizzando che i loro username siano 'Pippo' e 'Pluto', se il server esegue i due assegnamenti prima di stampare a video, ad es:

Codice:
$username = 'Pippo';
$username = 'Pluto';

Verranno eseguite due echo uguali, visto che $username ora contiene 'Pluto'. Quindi l'utente Pippo si vedrà stampato a video 'Pluto'. O viene allocata una $username per ogni sessione attiva, quindi le due variabili sono fisicamente diverse e contengono quindi i valori corretti?
 

MarcoGrazia

Utente Attivo
15 Dic 2009
813
18
18
60
Udine
www.stilisticamente.com
Se un sito è destinato a molti utenti che interagiscono nello stesso momento, posso usare delle variabili generiche per fare delle operazioni o tutto ciò che è relativo ad uno specifico utente va in una variabile di sessione e si può usare solo quella?
Voglio dire: per passare informazioni da uno script php ad un altro uso le variabili di sessione, ma all'interno di uno stesso script posso fare qualcosa tipo

PHP:
$username = $_SESSION["username"];

e poi operare sempre su $username o si rischia qualche incongruenza? Perchè in fondo il server è uno e se devo fare la stessa operazione per più utenti mi troverei ad assegnare alla stessa variabile $username più valori diversi...o sbaglio?
Le sessioni sono array di dati, puoi usarli come ti serve, senza riserva :D
Ma in pratica si usano per due motivi principali, il passaggio dei dati da una pagina all'altra e ovviamente per ricordare i dati durante un'intera sessione di navigazione del sito da parte di un utente.
Per il secondo quesito invece devi sapere che ogni a utente ( cioè a ogni richiesta ) il server riserva un certo spazio di memoria ( in genere Apache 8 mega per il php per ogni richiesta ) e quindi ogni utente gira in quello spazio.
Tu non puoi prevedere quanti utenti gireranno sul tuo sito e non te ne devi nemmeno preoccupare, ci pensa il server a gestire la cosa.

E attento a cosa usi perché i cookie vengono sempre immagazzinati nel client se questo li accetta, se no... ciccia :D ( hai notato che ora tanti siti chiedono sempre di abilitarli? ) le sessioni invece sono file a solo accesso da parte del server che non vengono affatto immagazinate in locale, ma in locale c'è un riferimento alla sessione, il cosiddetto PHPSESID.
Non necessariamente le sessioni contengono i dati del cookie, anzi non lo fanno mai se non ce li metti.

@GoldenDragon
Il php usa due array separati per essi e cioè $_SESSION mentre i cookie usano $_COOKIE e i due dati non sono in connessione tra loro.
Inoltre $_CCOKIE può accettare poche coppie di valori ben definiti come il nome ( obbligatorio ), un valore ( lo si estrae con $_COOKIE['nome'] ), la data in cui il cookie smette di essere valido, il path dove il cookie deve agire ( all'interno del sito non del computer client ), il nome di dominio su cui agire ( sempre ottimo metterlo ) , secure ( true o false che corrispondo al protocollo https= si o https=no ) e ultimo httponly che però non è supportato da tutti browser ( se no, viene ignorato ) in pratica messo a true impedisce al javascript di accedere al cookie, in questo modo si implementa un sistema ( debole ) che dovrebbe impedire il furto di identità attraverso il cookie.

$_SESSION invece lo usi proprio come una variabile e può contenere solo una coppia nome=valore, dove valore può essere anche un altro array.

Quale dei due metodi usare dipende da ciò che si deve realizzare.
Io tendo sempre a non usare i cookie proprio perché poco sicuri dal punto della sicurezza a meno di non dover gestire cose come la cookie law, dove il cookie serve solo per sapere se hai o meno accettato la legge... per il resto vai di sessione.

Se usi le sessioni per immagazzinare un utente, non mettere mai dentro il numero o il nome che lo identifica sul database, se c'è un furto di sessione è facilissimo fregare l'account; molto meglio immagazzinare un hash che contenga dati associati, come ad esempio username + $_SERVER['HTTP_USER_AGENT'] che lo lega solo e soltanto a quella macchina ( l'IP non conviene usarlo perché non puoi sapere se l'utente è in una sottorete come me ora, o in shared, come tutti oramai ).
In pratica metti nella sessione due valori
PHP:
$_SESSION['username'] = $username
$_SESSION['auth'] = sha1($id . $_SERVER['HTTP_USER_AGENT']);
e ogni volta che vuoi verificare se chi è connesso è chi dice di essere, chiedi al database l'id dello username immagazzinato in $_SESSION['user'] e poi fai
PHP:
if ( sha1($id . $_SERVER['HTTP_USER_AGENT']) == $_SESSION['auth'] ) {
  // continuo...
} else {
  header('location: login.php');
}
Farraginoso? Sì ma che ci vuoi fare? Se vuoi star sicurto questo è solo l'entry level.

fonti e varie :)
http://php.net/manual/en/session.idpassing.php
https://en.wikipedia.org/wiki/Session_(computer_science)
http://php.net/manual/en/session.customhandler.php
 

GoldenDragon

Nuovo Utente
22 Giu 2015
8
0
0
Perfetto, grazie mille. Hai risolto il mio dubbio e mi hai dato un sacco di informazioni in più :beer:
Scusate se ho abusate del tasto "Sei un genio" ma un semplice ringraziamento non era abbastanza :fonzie:
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [Vendo]Facebook&Instagram per ogni uso! Social Media Marketing 0
V [CSS] Uso degli id HTML e CSS 2
MarcoGrazia [PHP] Uso dei namespace PHP 5
V [COMPRO] Cerco account Instagram per uso personale. Annunci servizi di Social Media Marketing 2
L [WordPress] Uso delle immagini di un tema WordPress 5
Aedo1 [PHP] Problimi circa l'uso di Getimagesize PHP 1
K Uso font preinstallati di Windows a fini commerciali? Windows e Software 2
S [VENDO] ecommerce prodotti per CANI - business automatico pronto all'uso! Compravendita siti e domini 0
G [PHP] composer: forzare l'uso del comando require-dev PHP 0
matteoraggi Sicurezza di un server apache con uso limitato Apache 0
ken_korn [PHP] Delucidazione sull'uso di classi esterne PHP 0
M Consiglio per pc uso domestico e sporadicamente modellazione Hardware 0
L google chrome fuori uso. Windows e Software 1
C setTimeout() e insertAfter in uso dinamico jQuery 4
MarcoGrazia Funzioni generiche per ogni uso Snippet PHP 0
ecosito CSS: è possibile cambiare font con uno non di uso comune? HTML e CSS 11
T Uso DB Remoto e transazioni con Pay Pal Sviluppo app per Android 0
M Uso di access con outlook MS Access 0
gun88 Termini e Condizioni D'uso Leggi, Normative e Fisco 0
A consiglio uso jquery php per mostrare parte di un form PHP 6
A consiglio uso jquery per mostrare parte di un form jQuery 0
I Aiuto uso Nivo Slider con javascript jQuery 2
R Uso Immagini per Slideshow Joomla 0
H [risolto] Uso delle SESSIONI PHP 2
N UPDATE Tabella con l'uso di un mene a tendina PHP 0
M Uso del file fpdf.asp Classic ASP 2
M php non prende l'orario del server? Eppure uso timestamp() PHP 6
L uso di switch PHP 2
P Problema con l'uso delle sessioni... PHP 4
P Limiti dell' uso delle API di google map Javascript 0
Z Uso di template per creazione sito Discussioni Varie 2
D Come fare ad usare il reCaptcha senza uso delle librerie??? PHP 1
P Uso dei font Leggi, Normative e Fisco 3
P cosa succede se uso google adsense e non ho 18 anni ? Google AdSense 2
Monital uso del JOIN? MySQL 11
M uso di preg_replace per evidenziare la pagina corrente PHP 0
K Problemi nell'uso dell'oggetto MYSQLI PHP 2
A uso javascript per aprire dei frame all'interno del frame principale Javascript 0
A permesso uso file da un diverso server con PHP PHP 5
P Manuale d'uso Google Sketchup 8 Pro Webdesign e Grafica 4
M or die (mysql_error) - quali sono le possibilità di uso? PHP 3
S accettare condizioni d'uso da file batch Windows e Software 2
A Domande su uso forum di mr. Webmaster Supporto Mr.Webmaster 0
D Errore strano durante l'uso di mail() PHP 2
Z uso di filezilla Hosting 3
R problemi con uso file PHP 1
L uso di include PHP 3
M uso di TRIM PHP 4
O Uso CICLO verifica FLATFILE PHP 0
Z menu a cascata (o discesa) in Dhtml: l'uso di Fireworks Javascript 0

Discussioni simili