- Home
- Categorie
- Coding e Sistemistica
- PHP
- Abilitazione cookie - Soluzione definitiva
-
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?
-
Ho sbagliato forum, me lo potete spostare in PHP - MYSQL?
-
Ciao scar81, sposto in php-mysql, dove riceverai più aiuto
-
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]
-
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?