settare e leggere un cookie nella stessa pagina?

  • Creatore Discussione Creatore Discussione robysdc
  • Data di inizio Data di inizio

robysdc

Nuovo Utente
15 Nov 2008
21
0
0
Ciao a tutti sto creando uno script per un'area protetta che comprenda anche l'opzione "ricordami" da settare in fase di login;

l'area riservata usa le sessioni ed i cookie per il "ricordami";

Il tutto funziona benone tranne che per la verifica dell'abilitazione dei cookie;
Dopo aver recuperato il valore della checkbox decido se si vuole o meno il cookie, a questo punto dovrei verificare se l'utente è in gardo di accettare i cookie e lo faccio con un controllo del cookie appena scritto in precedenza;

ovviemente dato che con una chiamata scrivo il cookie ho bisogno di un'altra chiamata per poi leggerlo e fare il controllo dell'accettazione dei cookie..

il mio problema è proprioquesto, la prima volta che un utente si collega e sceglie l'opzione "ricordami" ottiene il messaggio di errore :"Se vuoi che il browser si ricordi di te devi abilitare i cookie" poiche il cookie appena settato nn può essere letto..

se faccio un refresh o rifaccio il login ovviamnte va titto a poto..

c'è un modo per evitare il problema?

Ho pensato di inserire un refresh fatto con header ma nn va..

vi posto il codice:

PHP:
// Verifico se l'utente ha checkkato la casella per il cookie ricordami, se si gli setto un cookie chiamato "ricordami" di valore "si"
// Se invece la casella è selezionata ma l'utente non accetta i cookie lo avverto e lo rimando al login;
if (isset($_POST['ricordami']) || $_POST['ricordami'] == '1') {
setcookie("ricordami", "si", time()+3600);

if (!isset($_COOKIE['ricordami']) || $_COOKIE['ricordami'] <> 'si') {

require ('top.inc');
echo "<div align='center'>Se vuoi che il browser si ricordi di te devi abilitare i cookie</div><br>
      <div align='center'>Torna alla pagina di <a href=login.php>login</a></div>";
require ('bottom.inc');

exit;
}
}

mi affido a voi..
 
il controllo sull'abilitazione del cookie ti conviene farlo con javascript; se (navigator.cookieEnabled) restituisce true vuol dire che i cookie sono abilitati.
 
da mettere tra i tag head:
PHP:
if (!navigator.cookieEnabled) {
    document.write("Il tuo browser non ha i cookie abilitati.");
}
 

Discussioni simili