• Community Manager

    [Guida] Sessioni in PHP

    Le sezioni sono un pò come i cookie soltanto che tutto il lavoro lo fa php. Per dare inizio ad una sessione si usa session_start(). Quando diamo inizio ad una sessione php crea un cookie al posto nostro contenente delle informazioni. Php crea automaticamente anche delle variabili. session_start() va chamata prima di aver rilasciato codice php. Essa scade alla chiusura del browser. Se invece vogliamo chiudere noi la sezione usiamo session_destroy(). Quando apriamo una sessione all'utente viene assegnato un ID . Questo ID può essere richiamato tramite la seguente variabile $PHPSESSID. Con le sessioni possiamo registrare variabili all'interno si esse tramite session_register()

    Preso dalla guida alle [url=http://www.giorgiotave.it/guida_php/sessioni.php]sessioni in php


  • User Attivo

    non hanno una durata limitata, cioè se non vengono utilizzate dopo un tot di minuti scadono?


  • Community Manager

    Le sessioni scadono alla chiusura del browser, o giustamente della connessione

    inoltre si può impostare una scadenza della sessione

    $sesscookietime = 3600;

    Tempo, trascorso il quale scade una sessione


  • Super User

    @giorgiotave said:

    Le sezioni sono un pò come i cookie soltanto che tutto il lavoro lo fa php. Per dare inizio ad una sessione si usa session_start(). Quando diamo inizio ad una sessione php crea un cookie al posto nostro contenente delle informazioni. Php crea automaticamente anche delle variabili. session_start() va chamata prima di aver rilasciato codice php. Essa scade alla chiusura del browser. Se invece vogliamo chiudere noi la sezione usiamo session_destroy(). Quando apriamo una sessione all'utente viene assegnato un ID . Questo ID può essere richiamato tramite la seguente variabile $PHPSESSID. Con le sessioni possiamo registrare variabili all'interno si esse tramite session_register()

    Preso dalla guida alle [url=http://www.giorgiotave.it/guida_php/sessioni.php]sessioni in php

    mmm...

    L'ID della sessione viene definito anche nella costante SID.
    per il session_register non sarei tanto propenso al suo utilizzo, col PHP5 si possono usare gli array globali quali:
    $_POST
    $_GET
    ...
    quello che a noi interessa è il $_SESSION, tutto le variabili accodate a quell'array saranno variabili di sessione...

    byezz...
    :ciauz:


  • Community Manager

    Pater grazie per la delucidazione 🙂


  • Super User

    Aggiunto al thread in rilievo... ma la prossima volta, giò, lo puoi fare tu! 😄


  • User Attivo

    Ho realizzato l'autenticazione utente con PHP utilizzando session_start()

    Funziona tutto perfettamente solo se il browser dell'utente accetta i cookie.

    A questo punto sono un pò disorientato perchè ero convinto che questo tipo di autenticazione funzionasse anche se il browser fosse impostato in modo tale da rifiutare i cookie.

    :mmm:

    Vado a dare un'occhiata
    http://www.giorgiotave.it/guida_php/sessioni.php


  • Super User

    @linus said:

    Ho realizzato l'autenticazione utente con PHP utilizzando session_start()

    Funziona tutto perfettamente solo se il browser dell'utente accetta i cookie.

    A questo punto sono un pò disorientato perchè ero convinto che questo tipo di autenticazione funzionasse anche se il browser fosse impostato in modo tale da rifiutare i cookie.

    :mmm:

    Vado a dare un'occhiata
    http://www.giorgiotave.it/guida_php/sessioni.php
    Ora non ricordo come, ma si poteva fare in modo che l'ID di session potesse essere passato anche tramite GET con la variabile SID... controlla!


  • User Attivo

    Scrivo alcuni aggiornamenti sulla gestione della SESSION che sono arrivati con la versione di PHP4 e PHP5.

    session_id() permette di ottenere l'id della sessione attuale.

    Nel caso:
    if (!session_id()) {
    <sessione non ancora creata>
    }

    Il session ID creato da PHP4 è lungo 32 caratteri, mentre quello creato da PHP5 è di 27.

    Per mantenere la sessione tra le pagine anche senza usare cookie basta agganciare ai link il parametro SID. Per evitare una possibile vulnerabilità a XSS, il manuale ufficiale, consiglia di usare strip_tags con SID.

    Per esempio:
    echo "link.php?".strip_tags(SID);


  • User Newbie

    Ok ragazzi, problemino.
    Posso postare un SID ad un dominio di terzo livello nello stesso server (ma con differente ip) in modo da mantenere i dati salvati nella sezione?
    Esempio (perchè anche io non mi sono capito)

    form in form.php www.dominio.com
    <form action=https://secure.dominio.com/risposta.php?.strip_tags(SID) method=get>

    risposta in risposta.php secure.dominio.com
    inserisco $_GET['SID'] ????
    $_SESSION['qualcosa'] ????
    PHPSESSID=SID ????

    Giuro che ho in testa un mucchio di confusione, ma anche il sito di php non è proprio la chiarezza fatta website sull'argomento.

    Inoltre:
    echo "link.php?".strip_tags(SID); del precedente messaggio di inuyaksa
    Qualcuno me lo può spiegare?

    Scusate ma da nessuna parte ho visto di sessioni che si possono muovere da un sito all'altro, ma so che i cookies (in qualche modo anche le sessions finiscono a livello di cookies, no?) con la segnalazione del domain ".domain.com" rimangono validi anche nei subdomain tipo secure.domain.com oppure www.domain.com tantisaluti.domain.com e via dicendo. E le sessions????????


  • User Newbie

    salve le session possono essere utilizzate per spostare i risultati di query invece che classiche variabili?


  • User Attivo

    Ciao a tutti, e benvenuti sul forum 😉

    a regrunge: io credo si possano inviare a sottodomini...
    inoltre se i cookie sono abilitati, i sottodomini possono ricevere il cookie (come in questo thread http://www.giorgiotave.it/forum/php-mysql/82039-cookie-su-piu-siti.html)

    x me... dovresti fare $_GET['SID'] per prima cosa, poi non so non ho mai provato con il metodo GET...

    echo "link.php?".strip_tags(SID);
    significa: scrivi qualcosa (sottointeso!) con link alla pagina "link.php?{e qui il risultato della funzione strip_tags su SID"

    a crocrocro83: boh non ho capito bene