-
problema con i cookie
buongiorno..
ho un problemino con i cookie che spero mi possiate aiutare a risolvere.
voglio realizzare la funzione "resta connesso";
quindi nel form di login ho inserito anche un checkbox che quando barrato fa si che venga creato un cookie in cui memorizzo username e password(criptata) dell'utente
questo è il form:
Codice HTML:
<form action='mioSito' method='post' >
<input type='text' name='username' value='username' />
<input type='password' name='password' value='password' />
<input type='checkbox' name='rememberMe' value='ok' />
<input type='submit' name='submit' value='Login!' />
</form>
questa è la funzione che genera il cookie:
Codice PHP:
$scadenza = time() + 604800;
$dominio = ".stepone.altervista.org";
setcookie("nick", $nome, $scadenza, "./", $dominio, 0);
setcookie("sex", $sex, $scadenza, "./", $dominio, 0);
setcookie("pass", $lapassword, $scadenza, "./", $dominio, 0);
<!-- è criptata quindi nn dovrebbe essere troppo grave metterla in un cookie -->
e questo è il controllo che ho impostato nella pagina per riconoscere l'utente:
Codice PHP:
// prima per la sessione
if (isset($_SESSION['you'])) {
echo "benvenuto ".$_SESSION['you'];
}
else if (isset($_COOKIE['pass'])) {
// connetto al database e verifico corrispondenza tra cookie pass e cookie username, ed eventualmente assegno
// contenuto del cookie aalla sessione, quindi ricarico
$_session['you'] = $_cookie['nick'];
header(location...) // aggiorno la pagina
}
else {
// altrimenti faccio stampare i moduli di login
....
}
il problema è che quando non esiste la sessione, anche quando mi aspetto che entri nel secondo if, questo non accade.
dove ho sbagliato?
grazie in anticipo
-
Hai provato a modificare, l'ultimo codice da te postato, cosi:
Codice PHP:
if (isset($_COOKIE["pass"]])) {
// connetto al database e verifico corrispondenza tra cookie pass e cookie username, ed eventualmente assegno
// contenuto del cookie aalla sessione, quindi ricarico
$_SESSION["you"] = $_COOKIE["nick"];
}
if (isset($_SESSION["you"])) {
echo "Benvenuto " . $_SESSION["you"];
}else {
// altrimenti faccio stampare i moduli di login
}
Ho separato le il controllo del cookie dal controllo della sessione per evitare il ricaricamento della pagina, almeno se esiste il cookie e viene generata la sessione la seconda if risulterà vera, almeno credo.
Il codice non l'ho provato, ma dovrebbe funzionare.
-
la tua modifica è sicuramente intelligente, e mi consente di evitare l'header...
ma il problema rimane...
sembrerebbe che il cookie non è impostato...
ma la funzione che lo imposta ho verificato e viene eseguita regolarmente...
non capisco proprio perchè l'esecuzione non entri nell'if isset(cookie)
qualcun altro sa dove potrebbe essere l'impiccio?
-
forse non vede il cookie per il path, prova a mettere solo "/" invece che "./" , ma non sono sicuro di questo.
ho guardato qui: http://php.net/manual/en/function.setcookie.php
-
E controlla che la funzione setcookie venga richiamata prima di qualsiasi output...
-
grazie tante eurosalute...
era quel punto che rompeva!
problema risolto
grazie anche a te javascripter!