• User

    Javascript per resettare i cookie

    Salve a tutti,
    ho un problemino con i cookie.. Ho implementato un menu accordion con la memoria (gestita tramite i cookie).
    Funziona tutto molto bene, solo che ho il problema che entrando con un link diretto mi crea dei problemi.

    Volevo dunque sapere se conoscete un javascript che permette l'azzeramento di un cookie al click.
    una cosa del genere magari:
    <a href="vaiallink.php" onclick="funzionecheresetta">Vai al Link</a>

    così prima di andare al link mi resetta i cookie e risolvo il problema.
    grazie mille!


  • User Attivo

    @Anu said:

    Funziona tutto molto bene, solo che ho il problema che entrando con un link diretto mi crea dei problemi.

    Dal sintomo descritto pare di capire che il problema sia dovuto al fatto che nell'accesso diretto non sia presente il cookie. Quindi è necessario fare un controllo quando la pagina viene caricata. Questo codice didattico mostrerà dei messaggi extra (che rimuoverai successivamente) in base al tipo di accesso:

    [HTML]<script type="text/javascript">
    function CreaCookie() {
    if (document.cookie.indexOf("nome_cookie") >= 0) {
    alert("il cookie è impostato");
    } else {
    alert("non c'è il cookie, ora lo creo");
    document.cookie = "nome_cookie=true; max-age=" + 60 * 10; // Tempo di vita del cookie in secondi
    }
    }
    </script>

    <body onload = CreaCookie()>
    [/HTML]

    @Anu said:

    Volevo dunque sapere se conoscete un javascript che permette l'azzeramento di un cookie al click.
    una cosa del genere magari:
    <a href="vaiallink.php" onclick="funzionecheresetta">Vai al Link</a>

    così prima di andare al link mi resetta i cookie e risolvo il problema.
    grazie mille!

    Per resettare il cookie farei una cosa di questo tipo:

    [HTML]function funzionecheresetta() {
    document.cookie = 'nome_cookie=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    }[/HTML]


  • User

    Grazie mille,
    e se volessi che il cookie scada dopo 5 secondi!?
    Ho provato ad usare :

    
    
    <?php
    	setcookie("accordion_nav", "", time()+5); 
    	//setcookie("accordion_nav");
    ?>
    
    
    

    Ma non funziona...


  • User Attivo

    Quando si imposta il valore del cookie con la stringa vuota si istruisce il client di cancellarlo, vedi anche il codice che già avevo postato.


  • User

    Ho provato ad includere il suo codice:

    
    <script type="text/javascript">
     function funzionecheresetta() {
        document.cookie = 'accordion_nav=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    	}
    </script>
    
    

    ai piedi del mio foglio html, ma non funziona comunque.. non mi resetta il cookie richiesto.


  • User Attivo

    Prova a correggere

    @Anu said:

    <a href="vaiallink.php" onclick="funzionecheresetta">Vai al Link</a>

    con quest'altra:

    
    <a href="vaiallink.php" onclick="funzionecheresetta**()**">Vai al Link</a>
    
    

    Eventualmente cancella i cookies prima di ripetere la prova.


  • User

    Niente, non funziona ancora 😞


  • User Attivo

    Posto questo codice (dovrai riadattarlo opportunamente) che almeno a me funziona su 2 browser differenti:

    [HTML]<html>
    <head>
    <script type="text/javascript">
    function CreaCookie() {
    if (document.cookie.indexOf("nome_cookie") >= 0) {
    alert("il cookie è impostato");
    } else {
    alert("non c'è il cookie, ora lo creo");
    document.cookie = "nome_cookie=true; max-age=" + 60 * 10; // Tempo di vita del cookie in secondi
    }
    }

    function funzionecheresetta() {
    document.cookie = 'nome_cookie=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    alert("cookie rimosso");
    }
    </script>
    </head>
    <body onload=CreaCookie()>
    <a href="#" onclick="funzionecheresetta()">testo</a>
    </body>
    </html>[/HTML]

    Non so se il problema possa essere causato da una configurazione sul browser o altri motivi.


  • User

    Grazie mille sei gentilissimo,
    provo nel pomeriggio!


  • User

    Ancora niente:

    Ho messo nell'head del mio file layout.php (il file che contiene la parte alta della mia pagina dinamica)

    il seguente codice:

    
    <script type="text/javascript">				function resetcookie() {
    					document.cookie = 'nome_cookie=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';
    					alert("cookie rimosso");
    				}
    			</script>
    
    

    e poi nel file index.php (il file che contiene il corpo della mia pagina dinamica)

    
    
        <ul>
        	<li><a href="<?php echo .... ?>" onclick="resetcookie()">Pagina2</a></li>    
        </ul>
    
    
    
    

    Al click compare l'alert, però non mi resetta il cookie che ho selezionato!
    Ho eliminato la funzione creacookie (testato e funziona), perchè non mi serve.