2011-12-08 33 views
5

Sto costruendo un'applicazione di base e sto cercando di capire come posso passare le informazioni dell'utente da login.php a index.php. Ecco cosa ho ottenuto finora: ho una pagina di accesso che invia e autentica l'utente attraverso il database attraverso una classe utente. Successivamente, le proprietà dell'utente vengono impostate sui valori restituiti dal database. Da lì l'ID viene memorizzato in una sessione. Come potrei fare per accedere alle informazioni dell'utente da una pagina all'altra. Dovrei semplicemente creare un metodo di costruzione per interrogare il database con l'ID di sessione? È un approccio sicuro o valido? Un esempio potrebbe essere l'overflow dello stack. Il modo in cui puoi vedere il tuo nome utente nella parte superiore di ogni pagina.Come posso accedere alle informazioni dell'utente dopo aver effettuato l'accesso?

+0

Perché non memorizzare le informazioni utente nella sessione? –

risposta

6

Suona come avete l'idea generale di sessione di movimentazione verso il basso. Quindi stai solo chiedendo quale metodo è sicuro, o ottimizzato o altro.

È normale archiviare il meno possibile le informazioni nella sessione o nel cookie in modo da non aprire gli utenti a semplici hack di pesca. Quindi idealmente questo significa che hai una tabella di sessione nel database che puoi incrociare il riferimento con l'ID di sessione.

Sì, si esegue una query su ogni caricamento di pagina, ma non si tratta di un sovraccarico su un sito standard. E non è sicuro a patto che tu correttamente disinfetti il ​​tuo contributo. In questo modo non verrai abbattuto se l'utente manipola le informazioni sulla sessione.

In alternativa, se si utilizza solo l'ID utente e un nome utente, è possibile archiviarli in modo sicuro nella sessione ed evitare una query su ogni caricamento della pagina.Basta non impazzire per riempire dati di sessione o cookie con array estremamente lunghi pieni di informazioni usate in modo non comune.

+0

+1; Buon punto sulla sicurezza dei dati di sessione –

+0

@Kai ha risposto alla mia domanda a un T, grazie. – Scott

4

Nella pagina di login, utenti di memorizzare le informazioni da un database in una sessione, nelle altre pagine, è possibile chiamare direttamente loro

<?php 
session_start(); 
$_SESSION['user'] = $username; 

e dall'altro sito

<?php 
session_start(); 
$_SESSION['user']; 
+0

tornando all'esempio dello stackoverflow, quando vai alla pagina del tuo profilo, ci sono molti dati lì: domande a cui hai risposto, domande che hai posto, ecc. Ovviamente non hai intenzione di memorizzare tutto ciò in una sessione , quindi come faresti a recuperare tutti i dati dal database con $ _SESSSION ['USER'] e id? – Scott

+0

Suppongo che tu abbia un id principale per il tuo utente nella tua struttura sql, basta memorizzare id in $ _SESSION ['id'] e alcune informazioni di base che verranno utilizzate su ciascun sito (come nome utente e nome), se in seguito vuoi recuperare alcune query difficili e specifiche, basta ottenere id da $ _SESSION ['id'] e usarlo nella query sql –

1

I Sto costruendo un'applicazione di base e sto cercando di capire come posso passare le informazioni dell'utente da login.php a index.php

Un modo è quello di memorizzare i dati condivisi, come i dati di sessione PHP: http://www.tizag.com/phpT/phpsessions.php

<?php 
session_start(); // start the session 

$_SESSION['views'] = 1; // store session data 
echo "Pageviews = ". $_SESSION['views']; //retrieve data 

memorizzare i dati utente necessario per tutte le pagine. Puoi lasciare dati estesi nel DB, quindi non devi interrogare una tonnellata di dati in primo piano (come le statistiche esaurienti che vedresti nella pagina del profilo su SO).

Quindi non dovrai ri-interrogare i dati utente su ogni pagina. Basta recuperarlo dai dati di sessione.

Devo solo creare un metodo di costruzione per interrogare il database con l'ID di sessione? È un approccio sicuro o valido?

Se si utilizza lo stesso account DB per tutto, non c'è nulla di intrinsecamente meno sicuro sull'interrogazione della tabella utente. Non ti esporrerai più a rischi di qualsiasi altra query che stai già facendo.

Se sei preoccupato per la sicurezza quando accedi al DB, ti suggerisco di informarti su un problema concreto: prevenire SQL injection attacks.

See: How can I prevent SQL injection in PHP?

Problemi correlati