View Full Version : [PHP] Funzionamento di una login
vince860
29-10-2009, 15:30
Ho ipotizzato il funzionamento di una login in quanto segue:
Una volta che l'utente inserisce i dati e clicca su "accedi":
i dati verranno inseriti all’interno di una query che ricerca un eventuale record con user e pws coincidenti con quelli specificati dall'utente;
l'eventuale record individuato dalla query viene letto:
A) se la query non ha restituito risultati, cioè non vi sono user e pwd coincidenti con quelli dell'utente o un dato differisce, viene mostrato il messaggio di accesso negato
B) se la query ha avuto successo, cioè ha riscontrato un record con user e pwd coincidenti con quelli inseriti dall'utente, verrà avviata la sessione.
è esatto?
grazie :)
wingman87
29-10-2009, 15:40
Sì, attento però all'sql injection. Ti linko wikipedia che fa proprio un esempio con php: http://it.wikipedia.org/wiki/SQL_injection
vince860
29-10-2009, 15:42
Sì, attento però all'sql injection. Ti linko wikipedia che fa proprio un esempio con php: http://it.wikipedia.org/wiki/SQL_injection
no no tranq :D mi servono solamente gli step momentaneamente, tralasciando il codice
grazie...
La procedura che hai descritto è esatta, anche se si presta a semplici ma fondamentali ottimizzazioni per evitare i più comuni buchi di sicurezza.
euphyllia87
29-10-2009, 17:33
Ho ipotizzato il funzionamento di una login in quanto segue:
Una volta che l'utente inserisce i dati e clicca su "accedi":
i dati verranno inseriti all’interno di una query che ricerca un eventuale record con user e pws coincidenti con quelli specificati dall'utente;
l'eventuale record individuato dalla query viene letto:
A) se la query non ha restituito risultati, cioè non vi sono user e pwd coincidenti con quelli dell'utente o un dato differisce, viene mostrato il messaggio di accesso negato
B) se la query ha avuto successo, cioè ha riscontrato un record con user e pwd coincidenti con quelli inseriti dall'utente, verrà avviata la sessione.
è esatto?
grazie :)
Per ottimizzare il tutto puoi fare una SELECT COUNT, ovvero contare esattamente un campo a tua scelta (metti l'id utente) con i parametri user AND password passati; ricordati di limitare la query a 1.
Cosa significa? Che quando il motore sql troverà la corrispondenza con i campi, si fermerà li (ottimizzazione) e ti riporterà il valore integer 1.
A posto.
vince860
29-10-2009, 19:06
Grazie a tutti, mi serve solo una parte "teorica" di come funziona, tralasciando la sintessi
cruyffissimo
29-10-2009, 21:21
è perfetta come sintesi teorica, se vuoi fare una cosa ganza potresti fare in modo che se l'autenticazione fallisce, mostra il messaggio di errore, e reindirizza al form di login!:fagiano:
wingman87
29-10-2009, 23:11
Per ottimizzare il tutto puoi fare una SELECT COUNT, ovvero contare esattamente un campo a tua scelta (metti l'id utente) con i parametri user AND password passati; ricordati di limitare la query a 1.
Cosa significa? Che quando il motore sql troverà la corrispondenza con i campi, si fermerà li (ottimizzazione) e ti riporterà il valore integer 1.
A posto.
Come si limita a uno? Mi interessa per una procedura plsql che devo fare per un progetto dell'uni.
euphyllia87
30-10-2009, 08:09
Come si limita a uno? Mi interessa per una procedura plsql che devo fare per un progetto dell'uni.
coda alla SQL, LIMIT 0,1
vince860
30-10-2009, 18:51
Mi autoquoto :muro:
l'eventuale record individuato dalla query viene letto
se la query di ricerca del record con user e pwd uguali a quelli inseriti dall'utente NON ha riscontrato valori...........non verrà letto alcun record esatto?
euphyllia87
30-10-2009, 21:41
Mi autoquoto :muro:
se la query di ricerca del record con user e pwd uguali a quelli inseriti dall'utente NON ha riscontrato valori...........non verrà letto alcun record esatto?
No... restituisce un false la query... ovvero riporta un insieme vuoto.
vince860
31-10-2009, 12:11
No... restituisce un false la query... ovvero riporta un insieme vuoto.
ah...quindi cmq restituisce un valore "F" e poi effettua il redirect ad esempio a login_failder.php?
euphyllia87
31-10-2009, 12:59
ah...quindi cmq restituisce un valore "F" e poi effettua il redirect ad esempio a login_failder.php?
No ti torna un insieme vuoto e il redirect lo effettua solo se lo imposti tu.
vince860
01-11-2009, 15:20
No ti torna un insieme vuoto
sarebbe? :mc:
euphyllia87
01-11-2009, 18:18
sarebbe? :mc:
Ma una base di Matematica e SQL no? :S
wingman87
01-11-2009, 18:25
coda alla SQL, LIMIT 0,1
Grazie, appena posso provo. I parametri i=0 e n=1 vogliono dire che voglio n elementi a partire dall'iesimo?
euphyllia87
01-11-2009, 19:38
Grazie, appena posso provo. I parametri i=0 e n=1 vogliono dire che voglio n elementi a partire dall'iesimo?
Vuol dire che limito da 0 a 1 i risultati :)
Si potrebbe anche usare un if exists per "ottimizzare in modo estremo".
Ho letto alcuni test secondo i quali sarebbe molto più veloce di un SELECT COUNT
euphyllia87
01-11-2009, 20:22
Si potrebbe anche usare un if exists per "ottimizzare in modo estremo".
Ho letto alcuni test secondo i quali sarebbe molto più veloce di un SELECT COUNT
Secondo me è uguale. :)
vince860
02-11-2009, 10:36
Ma una base di Matematica e SQL no? :S
si, ma non ricordo bene...
praticamente se non esiste il record con id e pwd coincidenti con quelli inseriti dall'utente mi restutuisce un "record vuoto" (e quindi visualizza, ipoteticamente, un msg di errore)?
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.