Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86

    settare e leggere un cookie nella stessa pagina?

    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:

    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>

          <div align='center'>Torna alla pagina di <a href=login.php>login</a></div>"
    ;
    require (
    'bottom.inc');

    exit;
    }

    mi affido a voi..

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    112
    Scusa ma... perchè non usi le sessioni? Sono molto piu sicure e stabili dei cookie.

    Codice PHP:
    session_start();
    $_SESSION['ricordami']="si"

    Gabriele

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    le sessioni le uso per l'accesso all'area la prima volta, e se l'utente nn seleziona il "ricordami", quando invece lo seleziona x permettere ad un utente di accedere per una settimana ad es. ho pensato ai cookie..

    spro di essermi spiegato..


    hai qalche suggerimento? se serve ti posto il codice..

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    112
    Okay... comincia a mettere questo appena dopo il setcoockie, per test:

    Codice PHP:
    echo "<pre>";
    print_r($_COOCKIE);
    echo 
    "<pre>";
    die(); 
    cosi vedi tutto ciò che hai nei cookie appena dopo il settaggio.

    Gabriele

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    ciao

    non ho ben capito..

    dici di fare così?

    Codice PHP:
    if (isset($_POST['ricordami']) || $_POST['ricordami'] == '1') {
    setcookie("ricordami""si"time()+3600);

    echo 
    "<pre>"
    print_r($_COOCKIE); 
    echo 
    "<pre>"
    die();

    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>

          <div align='center'>Torna alla pagina di <a href=login.php>login</a></div>"
    ;
    require (
    'bottom.inc');
    exit;
    }

    così nn va..

    se abilito i cookie e faccio il login ottengo una schermata bianca e devo fare un aggiorna per vedere la pagina mentre se li disabilito ottengo una schermata bianca e nemmeno con aggiorna ottengo il messaggio di errore "devi abilitare i cookie"

    ti posto anche il codice dell'area protetta prima della tua modifica nel caso volessi dargli un'occhiata...

    Codice PHP:
    <?php


    // Abilito le sessioni
    session_start();


    // Verifico se l'utente avesse in precedenza attivato il "ricordami" e se quindi ha memorizzato il cookie per l'accesso;
    // Se ce l'ha gli mostro la pagina altrimenti continuo con il codice;
    if (isset($_COOKIE['ricordami']) || $_COOKIE['ricordami'] == 'si') {

    visualizzo il corpo della pagina protetta
    exit;
    }


    // Se il cookie nn è stato settato verifico se la sessione è già attivata e se ha il valore giusto (ad es se sto tornando indietro da un'altra pagina avendo già attivato la sessione la prima volta che
    // sono passato per questa pagina dal login); se la sessione esiste già, visualizzo la pagina protetta, se no procedo con lo script.
    if (isset($_SESSION['autorizzazione']) || $_SESSION['autorizzazione'] == 1) {

    visualizzo il corpo della pagina protetta

    }


    // se la sessione non esiste vuol dire che è la prima volta che accedo a questa pagina quidi devo verificare che l'utente ci arrivi dal login con le giuste credenziali;
    else  {

    // Creo la funzione che stabilirà se un utente ha le credenziali di accesso o meno
    function check_user($usr,$pws) {
    $textfile fopen("utenti.txt""r");

    while ( 
    $rigafile fgets($textfile,1024) ) {
    $campiriga explode("|"$rigafile);
    $file_username $campiriga[4];
    $file_password $campiriga[5];
    if ((
    $file_username == $usr) && ($file_password == $pws)) {
    return 
    0;
    }
    }
    return 
    1;
    fclose($textfile);
    }




    // Controllo che UserID e Password siano corretti;
    // se lo sono vai setto una sessione e do alla variabile autorizzazione il valore 1 e mostro la pagina, se non sono corretti visualizzo "non sei autorizzato ad entrare in quest'area"
    $password $_POST["password"];
    $username $_POST["userid"];

    if (
    check_user($username,$password)) {

    require (
    'top.inc');
    echo 
    "<div align='center'>Non sei autorizzato ad entrare in quest'area</div>

          <div align='center'>Torna alla pagina di <a href=login.php>login</a></div>"
    ;
    require (
    'bottom.inc');
    }


    else {

    $_SESSION['autorizzazione']=1;

    // 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>

          <div align='center'>Torna alla pagina di <a href=login.php>login</a></div>"
    ;
    require (
    'bottom.inc');
    exit;
    }
    }

    visualizzo il corpo della pagina protetta

    }
    }

    ?>
    grazie per l'aiuto!

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    112
    No, se usi questo codice (attenzione prima l'avevo scritto male mettendo la c in coockie):
    Codice PHP:

    echo "cookie:<pre>";
    print_r($_COOKIE);
    echo 
    "<pre>";
    die(); 
    la pagina ti stampa i valori presenti nei cookie in quel momento. SErve per fare un test, cosi ne vediamoil contenuto.

    Gabriele

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434
    I cookie non possono essere letti appena impostati..
    Perciò hai due possibilità
    1) scrivi sul form 'bisogna avere i cookie abilitati' e hai risolto, ormai il 99,5% degli utenti di internet ha un buon browser con supporto ai cookie (pensa, li supporta pure IE4!). Chi non ha un buon browser non capisco che lo usi a fare.. tanto vale aggiornarlo :P

    2) se proprio vuoi dare accesso ai quasi inesistenti utenti di browser web senza supporto ai cookie, allora, dopo il session_start:
    codice:
    <?php
    session_start();
    session_set_cookie_params(60*60*24*365); //impostiamo il cookie della sessione della durata di 365 giorni (1 anno)
    //per il resto segui le istruzioni di mxdesign
    In questo modo hai settato il cookie della sessione con la durata di 1 anno, imposti $_SESSION['ricordami'] e hai finito. :F

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    Ah oK..

    comunque avevo già creato uno script per testare il cookie e vederne il contenuto..

    quando barro "iconoscimi" il cookie è settato giustamente solo che per leggerlo successivamente sevirebbe un aggiorna..

    ti ho postato il codice, ho fatto qualche cavolata?

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    434
    usa le sessioni, non vedo dove sia il problema...

  10. #10
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    86
    Grazie mille per l'aiuto che mi state dando..

    come vi sarete accorti non sono proprio un "genio" del php, diciamo che mi piace molto e lo sto imparando per passione;

    Questo forum è uno dei pochi posti nei quali confrontarmi con gente competente come voi..

    Comunque tornando alla mia insipienza non ho ben capito come mi dici di modificare il codice billo..
    ma una sessione non scade alla chiusura del browser? è sbagliato usare i cookie per un'operazione tipo "ricordami"?

    non è che potrestipostarmi il codice che ho inviato con le modifiche?

    so che è una seccatura ma lmeno imparo qualcosa di nuovo..

    Grazie ancora a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.