View Full Version : [PHP] cookies
salve,
necessito di settare dei cookies nel mio sito... e vi devo porre una domanda:
1:
cookies must be sent before any output from your script
siccome faccio l'autologin, come posso fare senza che prima ci sia un output? Prima ho degli include (contententi degli output) che non posso togliere...come posso fare?
Ho pensato ad inserire i dati in una tabella e se poi l'utente vuole l'autologin setta un campo a 1 nella tabella...ma non c'é modo di settare il cookie nella pagina che verifica se l'utente vuole che si autologga?
Intendo questo:
// sopra c'é codice HTML
if(isset($_POST['autologin'])){
setcookie(...);
}
EDIT: ho trovato la funzione ob_flush...può centrare qualcosa? :)
grazie
salve,
necessito di settare dei cookies nel mio sito... e vi devo porre una domanda:
1:
siccome faccio l'autologin, come posso fare senza che prima ci sia un output? Prima ho degli include (contententi degli output) che non posso togliere...come posso fare?
Ho pensato ad inserire i dati in una tabella e se poi l'utente vuole l'autologin setta un campo a 1 nella tabella...ma non c'é modo di settare il cookie nella pagina che verifica se l'utente vuole che si autologga?
Intendo questo:
// sopra c'é codice HTML
if(isset($_POST['autologin'])){
setcookie(...);
}
EDIT: ho trovato la funzione ob_flush...può centrare qualcosa? :)
grazie
ianaz ianaz ianaz...
allora nei cookie setti dei parametri che ti aiutano a ricostruire la sessione, tipo:
-nome utente
-passowrd ( criptata )
fatto ciò quando trovi il cookie nel computer ( isset($_COOKIe..... ) ti fai il tuo bel controllo se esiste l'utenet e la password è giusta... e setti la sessione :)
si ma per l'autologin é diverso... :)
ti picchio nn cambia -.- se ha il cookie settato con scritto AUTOLOGIN = 1 come fai a scoprire che è PIPPO e non CLAUDIO? ....
metti un'utente e una password, le trova quei due cookie settati fa il login se no gli chiede il login ...
ti picchio nn cambia
sai sotto quanti metri di sabbia é l'ultima persona che ha voluto picchiarmi?
per il resto....
se setto un cookie con $VALORE||$USERNAME||$PASSWORD
e se trova il cookie verifica sul db se quell'username ha settato l'autologin a 1 ti fa il login in automatico, altrimenit no....
dovrebbe funzionare no?!
satoshi2005
19-07-2006, 05:48
max ha ragione.. è poi quello che ti dicevo io..
Si ma nel database inserivo pure username e password oltre al campo autologin...
Attenzione a far viaggiare user e pass così in chiaro...ricordati che i cookie vengono sempre passati quando viene visualizzato un idnirizzo che soddisfa le richieste del cookie... Quindi in poche ore con uno sniffer sarebbe possibile trovare le pass di particamente tutti gli utenti...senza contare che basterebbe leggere qualche file sul client per trovare i dati di autenticazione...
Se il sito deve essere "serio" ti consiglio di fare diversi cambiamenti:
1) metti la pagina di login in un percorso diverso ad esempio /autologin/login.php e setta il cookie con l'autenticazione per inviare i dati solo nel percorso /autologin...
2) setta un cookie generico "autologin" che viene inviato a qualsiasi pagina del tuo sito: se esiste il coockie "autologin" redireziona il client verso /autologin/login.php passando come parametro l'url corrente (o memorizzando l'eventuale azione da compiere nei dati di sessione in caso di POST)
3) componi il cookie di autenticazione come: "Username", "fingerprint"...in "fingerprint" inserirai la stringa md5 realizzata a partire dalla "password" concatenata con "ultima data e ora di autenticazione"...
4) se l'autenticazione ha successo aggiorna "ultima data e ora di autenticazione" con la data corrente ed invia il nuovo cookie con il campo "fingerprint" aggiornato con la nuova data
5) salta all'indirizzo precedente, così risolvi il problema degli include...infatti non hai bisogno di farli in una pagina temporanea come questa o comunque puoi farli dopo l'autenticazione...
PS: hai la firma irregolare, l'immagine è troppo grande e con un'immagine esterna la firma deve stare su una sola riga...
PS: hai la firma irregolare, l'immagine è troppo grande e con un'immagine esterna la firma deve stare su una sola riga...
Sistemato, sorry :)
1) metti la pagina di login in un percorso diverso ad esempio /autologin/login.php e setta il cookie con l'autenticazione per inviare i dati solo nel percorso /autologin...
Come mai solo nel percorso /autologin? Non capisco cosa cambi...se riescono a capire la cartella é inutile...no?!
3) componi il cookie di autenticazione come: "Username", "fingerprint"...in "fingerprint" inserirai la stringa md5 realizzata a partire dalla "password" concatenata con "ultima data e ora di autenticazione"...
Non ho capito questa...
cioé,
$valore_cookie = $data_ora.md5($password);
e lo salvo in un cookie chiamato fingerprint???
P.S: Ma l'md5 é così facile da decriptare?
Grazie ;)
Solo nel percorso autologin in modo che il cookie di autenticazione venga inviato dal client SOLO quando sei in quel percorso e non nel resto del sito...
L'md5 (o si può utilizzare anche sha1, che è ancora più lungo) non può essere decriptato perchè non è invertibile, in questo caso può solo essere usata la forza bruta per trovare la sequenza (mica facile ;)).
Componi il cookie che chiami "auth" in questo modo: $username." ".$fingerprint (se non sono ammessi spazi nello username)
$fingerprint = sha1($password.$data_ultimo_login);
Okyz grazie.
Tengo l'md5 dato che é già fatto tutto così, però avrei un ulteriore domanda...
dato che dovrei fare una cartella "autologin", faccio praticamente un
if(isset($_COOKIE['auth'])){
manda a /autologin
}
giusto?
grazie ancora...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.