Domanda

Sono stato con la CodeIgniter sistema per un po', ma ha è carenze.Sono grato per quello che mi ha insegnato, ma ora ho bisogno di una libreria per un nuovo non-codeigniter progetto e quindi sto cercando in giro per le idee su quali librerie sono le cose giuste e quali no.Io probabilmente prendere pezzi da diverse biblioteche per ottenere tutto ciò di cui ho bisogno.

Ho appena preso un occhiata al Kohana sessione di PHP libreria e mi piace come si torna alla nativa di PHP modo di usare $_SESSION superglobal invece di imporre un cambiamento di $this->sessione per l'accesso ai dati.

In ogni caso, volevo sapere se c'erano altri buona sessione di librerie che non induca in errore.C'è un sacco che deve essere gestito in una sessione, oltre a CRUD funzionalmente.

  • Supporto per i NON-cookie di sessione basata su passaggio (cioèFacebook o Flash uploaders)
  • "Dati Flash" che dura solo per il caricamento della pagina successiva e quindi viene automaticamente rimosso.
  • Funziona con $_SESSION o $this->sessione, in modo che i programmatori non è necessario modificare il codice esistente.
  • Supporta l'impostazione di un nuovo id di sessione (cioèsession_id('nuovo id')) nel caso in cui si desidera modificare l'id a metà strada attraverso la pagina.
  • Tutti i dati vengono salvati, alla fine della pagina richiesta, invece che ogni volta che i dati vengono aggiunti o rimossi (salva extra query al DB).
  • Supporta l'utilizzo di file, cookie, o di un Database per l'archiviazione.(o memcached sarebbe bello)
  • I tentativi di negare l'accesso in caso di una sessione di hijack.(IP, useragent, o impronte digitali)

Ho appena trascorso qualche tempo di andare oltre la logica di CodeIgniter e di Kohana sessione di librerie e mi è venuta un'idea su come ognuno inizia e finisce sessioni per la pagina.

/**************
** Kohana Sessions
**************/
If not native file storage {
    session_set_save_handler to the storage type (DB, cache, cookie...)
}

set the session_name() so php knows what cookie value to check

start session

/****** Saving ******/

session_write_close() which calls the given handler


/**************
** CI Sessions
**************/

Try to read_session() -> {
    session = Get cookie (if using cookies will also contain data)

    if(database) { 
        session .= pull data from database
    }

    checks if valid...

    $this->userdata = session data

} else { 
    create a new one
}

/****** Saving ******/

session data is serialized either way

if(cookie) {
    save cookie with serialized data and params like "last_activity"
}
if(database) {
    save serialized data in db and session in cookie
}
È stato utile?

Soluzione

Hai avuto uno sguardo a Zend_Session ?

  • è possibile passare l'identificatore di sessione tramite URL utilizzando impostazioni PHP
  • si può scadere alcune variabili di sessione dal tempo o dal luppolo (richieste)
  • la migrazione in altre applicazioni non sarà così facile e penso che non è molto buono quando si fa confusione con $_SESSION quando si utilizza Zend_Session
  • Zend_Session ha una base di approccio adpater per il salvataggio dei dati di sessione. Un salva-handler per DB è incluso, ma la sua architettura permette di gestori personalizzati da passare in.
  • Zend_Session supporta validatori per verificare la validità di una sessione. Anche qui abbiamo un'architettura aperta che permette di passare in oggetti personalizzati per la convalida.
  • è possibile bloccare una sessione, aka lo rendono sola lettura
  • è possibile impedire la creazione di istanze di più istanze dello stesso spazio dei nomi sessione
  • più v'è molto di più da scoprire con Zend_Session come rigeneranti ID di sessione, problema ricordare-me-cookies, revocare ricordare-me-biscotti e così via.

Altri suggerimenti

Ok, Dopo aver scavato attraverso il costume, non - $ _ SESSION-based CodeIgniter lib, i due librerie Kohana e Zend (che utilizzano $ _SESSION), e diverse altre librerie di sessione da altri progetti Credo di costruire la risposta alla mia problema. Qualcosa che soddisfa tutte le cose che ho elencato sopra (ad eccezione dei dati flash).

Ecco il codice se qualcuno vuole usare o lesse, mentre la costruzione la propria libreria. Ho lasciato un sacco di commenti che spiegano accuratamente il tutto e mi piacerebbe avere un feedback su di esso. Esso supporta i token, uploader basato su flash, i biscotti, la rigenerazione seduta ogni 5 minuti (o quello che set) con la rimozione di vecchie sessioni, e il supporto per la memorizzazione di sessioni in qualsiasi database, il file system, memchache, o qualunque altra forma che si desidera set.

Hanno un look Zebra_Session, un wrapper per PHP di default sessione di funzioni di gestione, l'utilizzo di MySQL per l'archiviazione

  • agisce come un wrapper per PHP di default sessione di funzioni di gestione, ma, invece di memorizzare i dati della sessione in tv i file li salva in un database MySQL, che garantiscono una maggiore sicurezza e migliori prestazioni

  • si tratta di un drop-in e seemingless di ricambio per PHP di default del gestore di sessione:Le sessioni di PHP verrà utilizzato nello stesso modo come prima in biblioteca;non c'è bisogno di modificare il codice!

  • implementa i blocchi di riga, garantire che i dati vengano gestiti correttamente in scenari con più concorrenti richieste AJAX

  • un file solo

  • maturo, altamente ottimizzato e sviluppato costantemente

  • molto buona documentazione

È possibile utilizzare questo in CI:. EchoSession

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top