Visualizzazione risultati 1 fino 15 di 15

Discussione: Cancellazione Cookie con PHP

  1. #1
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Predefinito Cancellazione Cookie con PHP

    salve,
    come posso fare a cancellare un cookie che ho creato?

    per crearlo, uso:

    Codice PHP:
    setcookie("coco","cici",time()+30000);
    per eliminarlo, invece come posso fare?
    ho provato con

    Codice PHP:
    setcookie("coco");
    però si va a creare un'altro cookie con lo stesso nome, e la pagina che controlla se il cookie esiste o meno, si "confonde" per dire, e per lei è come se non esistesse. come posso fare?

    grazie in anticipo.

  2. #2
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Codice PHP:
    setcookie('coco', '', time() - 1000);
    Devi impostare nuovamente il cookie con una data di scadenza nel passato.

  3. #3
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Predefinito

    non va. praticamente, esegui il codice. accedo alla pagina che controlla se il cookie esiste, ed esiste!!!

  4. #4
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Una volta che utilizzi la funzione setcookie ( prima di ogni output ), devi ricaricare la pagina per rendere effettive le "modifiche".

    Quindi una volta che hai impostato il cookie con una data nel passato, se non ricarichi, $_COOKIE['nome_cookie'] conterrà comunque il valore impostato in precedenza.

  5. #5
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Predefinito

    ok, ma quindi come devo fare per ricaricare $_COOKIE['nome_cookie'] ??

  6. #6
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Se non vuoi/puoi ricaricare la pagina, puoi sempre impostarlo localmente a un valore nullo.

    Codice PHP:
    setcookie('coco', '', time() - 1000);
    $_COOKIE['coco'] = NULL;
    L'eliminazione effettiva del cookie è da attribuirsi a setcookie mentre la seconda riga, la utilizzi solo per evitare di ricaricare pagina ( magari fai qualche controllo sui cookies ).

  7. #7
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Predefinito

    ciao, non riesco!!
    allora, questo è il codice che uso per creare il cookie

    Codice PHP:
    setcookie("coco","cici",time()+30000);
    per controllare se esiste il cookie

    Codice PHP:
    <?
    if(isset($_COOKIE['coco']) && $_COOKIE['coco']=='cici' ) {
    ?>
    <html>
    <p>
    cookie riconosciuto
    </p>
    </html>
    <?
    }
    else
    {
    echo
    "Cookie non esistente"
    }

    questo invece il codice che uso per eliminare il cookie

    Codice PHP:
    setcookie('coco', '', time() - 40000);
    $_COOKIE['coco'] = NULL;

    non riesco ad eliminarlo, eprchè la pagina che controlla il cookie lo trova sempre.
    Ultima modifica di gabriele97 : 23-02-2011 alle ore 18.09.06

  8. #8
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Dovresti dire con che ordine esegui script.

    L'ordine dovrebbe essere questo:
    1. Esegui lo script che crea il cookie
    2. Controlli se il cookie è stato impostato
    3. Esegui lo script che cancella il cookie
    4. Controlli se il cookie è stato impostato


    Dunque, supponiamo di creare 3 files: crea.php, controlla.php, elimina.php; rispettivamente contengono:
    Codice PHP:
    <?php setcookie('prova', 'ciao', time() + 3600); ?>
    Codice PHP:
    <?php echo isset($_COOKIE['prova']) ? $_COOKIE['prova'] : 'cookie non definito'; ?>
    Codice PHP:
    <?php setcookie('prova', '', time() - 1000); ?>
    Esegui prima crea.php, poi controlla.php, poi elimina.php ed infine controlla.php

  9. #9
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Predefinito

    fatto.
    crea.php
    controlla.php
    elimina.php
    controlla.php

    il primo avvio di controlla.php, mi da ciao, mentre quando lo avvio all'ultimo, mi da cookie non definito.

  10. #10
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    È esattamente quello che deve succedere.
    Il cookie viene eliminato!

  11. #11
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Predefinito

    viene eliminato si, però sulle mie pagina che mi interessano no!! non capisco perchè.
    vediamo un po'. allora, ho un form dove inserisco una password e premendo invio, invio i dati ad una pagina web che verifica se la password è corretta. se si, crea il cookie e reindirizza in una pagina web altrimenti ritorna indietro. lo script che controlla è:

    Codice PHP:
    <?php
    /*Script creato da Gabriele97*/
    /*Vietato modificarlo*/

    //Connessione al DB
    $con = mysql_connect("localhost","gabriele97","");
    if (!
    $con)
    {
    die(
    'Non connesso: ' . mysql_error());
    }
    mysql_select_db("my_gabriele97", $con);

    //Verifico se tutto è stato inserito
    $var_pwd = $_POST['d_pwd'];
    if(
    $var_pwd == ""){header("Location: ok/error_pwd.html");exit(); }
    else {
    /*creo le variabili*/
    $pwdin = $var_pwd;

    /*creo i dati*/
    $query = mysql_query("SELECT * FROM `gabriele97_user` WHERE 1 LIMIT 0, 30; ",$con);
    if (
    $query==FALSE) die("errore nella composizione della query <br>". mysql_error());
    while(
    $row=mysql_fetch_array($query)){
    $pwddb = $row[passwd];
    }

    /*verifico se i dati inseriti corrispondono a quelli del db*/

    /*creo il cookie*/
    /*reindirizzo alla pagina di controllo*/
    if($pwdin == "$pwddb"){setcookie('coco', 'cici', time() + 3600); header("Location: user/pannell.php");exit(); }
    else {
    /*sbagliati*/
    header("Location: ok/error_no_db.html");
    }
    //Chiudo la connessione al DB
    mysql_close($con);
    }
    ?>
    bene, quando arriva a pannell.php, si va a controllare se il cookie esiste. il codice che fa il controllo sai già qual è, cioè quello ad inizio post.
    poi quello per eliminare il cookie è

    Codice PHP:
    <?php
    setcookie
    ('coco', '', time() - 1000);
    //$_COOKIE['admins'] = NULL;
    //Connessione al DB
    $con = mysql_connect("localhost","gabriele97","");
    if (!
    $con)
    {
    die(
    'Non connesso: ' . mysql_error());
    }
    mysql_select_db("my_gabriele97", $con);

    // preparo la query di aggiornamento
    $query = "UPDATE gabriele97_user SET
    name = '
    $d_name',
    surname = '
    $d_surname',
    mail = '
    $d_mail',
    user = '
    $d_user',
    passwd = '
    $d_pwd'";

    /*verifico prima di partire*/
    $var_name = $_POST['d_name'];
    $var_surname = $_POST['d_surname'];
    $var_mail = $_POST['d_mail'];
    $var_user = $_POST['d_user'];
    $var_pwd = $_POST['d_pwd'];

    if(
    $var_name == ""){header("Location: ../ok/error_m_name.html");exit(); }
    if(
    $var_surname == ""){header("Location: ../ok/error_m_surname.html");exit(); }
    if(
    $var_mail == ""){header("Location: ../ok/error_m_mail.html");exit(); }
    if(
    $var_user == ""){header("Location: ../ok/error_m_user.html");exit(); }
    if(
    $var_pwd == ""){header("Location: ../ok/error_m_pwd.html");exit(); }
    else {
    // invio la query
    $result = mysql_query($query);

    // controllo l'esito
    if (!$result) {
    die(
    "Errore nella query $query: " . mysql_error());
    }

    // chiudo la connessione a MySQL
    mysql_close($con);
    }
    //cancello il cookie per effettuare il login

    /*reindirizzamento*/
    header("Location: ../ok/db_update_ok.html");
    ?>

    quale può essere il problema?

  12. #12
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Predefinito

    risolto. come? spostando gli script che creano, controllano ed eliminano il cookie in un'unica cartella. ora funziona. la cosa strana è che però con altre pagine web riuscivo a gestire i cookie con diverse cartelle, ora no. be, l'importante che ho risolto!! :D grazie.

  13. #13
    L'avatar di javascripter
    javascripter non è connesso Moderatore
    Data registrazione
    14-02-2010
    Messaggi
    1,114

    Predefinito

    Infatti il percorso con cui vengono impostati i cookie è importante perchè, un buon browser, invierà il cookie solo se il percorso è coincide con quello della creazione del cookie.

    Se vuoi comunque avere i files in cartelle distinte puoi servirti del quarto argomento di setcookie che serve, appunto, a modificare il percorso:

    Codice PHP:
    setcookie('nome_cookie', 'valore_cookie', scadenza_formato_unix_timestamp, '/percorso');
    Se lo imposti a "/", il cookie, sarà accessibile da qualsiasi pagina.

  14. #14
    Guest

    Predefinito

    Ciao a tutti, dove hai trovato quello script?

  15. #15
    gabriele97 non è connesso Utente
    Data registrazione
    28-12-2009
    Messaggi
    134

    Predefinito

    quale script?

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •