• User Attivo

    Abilitazione cookie - Soluzione definitiva

    Ho cercato in giro un modo attendibile per verificare se uno ha i cookie abilitati (mi serve nel contatore delle visite e nei guestbook), ma ho trovato solo questo:
    [php]
    if (!navigator.cookieEnabled) {
    document.write("Il tuo browser non ha i cookie abilitati");
    return false;
    }[/php]Questo sistema ha un grosso difetto, che in explorer 7 (ma credo che ci sia una funzione simile in firefox) basta bloccare per un certo sito il salvataggio dei cookie (Privacy -> Siti - > Blocca) ed ecco che lo script sopra non si accorge. Quindi si possono falsare facilmente i conteggi.

    Una soluzione lato client, che mi risolve il problema sondaggi, l'ho trovata (http://techpatterns.com/downloads/javascript_cookies.php), ma c'è un modo per farlo lato server, per il problema visite?


  • User Attivo

    Ho sbagliato forum, me lo potete spostare in PHP - MYSQL?


  • Consiglio Direttivo

    Ciao scar81, sposto in php-mysql, dove riceverai più aiuto 🙂


  • User Attivo

    Il PHP non dispone nativamente di una simile funzione, ma è comunque possibile verificare se i cookie sono abilitati attraverso una funzione creata ad hoc.

    Puoi provare a creare un cookie e provare se si riesce a leggere; se il valore cookie viene rilevato significa che i cookie sono abilitati, altrimenti significa che sono disabilitati o che il firewall, o altri sistemi di sicurezza, li bloccano; il che non incide sullo scopo della nostra verifica.

    php_cookie_enable

    [PHP]<?
    setcookie("cookie_test", "cookie_value", time()+3600);
    function php_cookie_enable()
    {
    if ($_COOKIE["cookie_test"] == "cookie_value")
    {
    return true;
    }
    else
    {
    return false;
    }
    }
    ?>
    [/PHP]

    Lancia la funzione: [PHP]<?
    php_cookie_enable();
    ?>[/PHP] A questo punto puoi gestire il valore restituito della funzione.
    Vediamo come avvisare gli utenti del fatto che i cookie non sono attivi:[PHP]<?
    if (php_cookie_enable() == false)
    {
    echo "Attenzione hai i cookie disabilitati!";
    }
    ?>
    [/PHP]

    :ciauz:


  • User Attivo

    Ci avevo pensato, il problema è che se crei il cookie non puoi verificare se è stato creato nella stessa pagina, ma in una successiva. Finchè si tratta di creare il coookie in homepage e poi verificarlo nelle sottosezioni non c'è problema, ma quando ti serve saperlo in prima pagina (ad esempio per un contatore di visite?).

    L'unica soluzione è che il file index.php crei il cookie, poi faccia un reload su se stessa con header(Location: e lo verifichi. Un po' macchinoso, non è che inchiodo il server?