Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema con i cookie (semplice)

    giorno a tutti ..
    ho questo script per impostare un cookie:

    Codice PHP:
     <?php
        
    /*checkcookie*/
      
    if(empty($HTTP_COOKIE_VARS)) {
      
    $message"prova cookie persistente";
      
    setcookie("A""$message""+360"); }
      elseif (isset(
    $_COOKIE) && !empty($_COOKIE)) {
      echo (
    $_COOKIE["A"]); }
      else {
      echo (
    $HTTP_COOKIE_VARS["A"]); }
     
    ?>
    ma come mai non mi stampa il presunto messaggio: "prova cookie persistente" ??

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Scusami ma hai mischiato $HTTP_COOKIE_VARS con $_COOKIE
    usa una OPPURE l'altra
    Inoltre il test empty(..) non va bene perchè nel caso in cui ci fosse qualche altro cookie attivo (anche il semplice SESSION_ID registrato) il tuo script considera il cookie già settato
    Il test lo devi quindi fare sul TUO cookie
    Codice PHP:
    if (isset($_COOKIE["C"])) 
    oppure
    Codice PHP:
    if($_COOKIE["C"]) 
    Io uso sempre la prima versione poiche il valore FALSE potrebbe dover essere considerato come "OK" e quindi andare nella ELSE

    Prova questo codice (notare che come expire uso time()+360 invece di "+360")
    Codice PHP:
      $message"prova cookie persistente";
      if(isset(
    $HTTP_COOKIE_VARS))
      {
        if(!isset(
    $HTTP_COOKIE_VARS["C"]))
        {
          
    setcookie("C""$message"time()+360);
        } else {
          echo 
    $HTTP_COOKIE_VARS["C"];
        }
      } else {
        if(!isset(
    $_COOKIE["C"]))
        {
          
    setcookie("C""$message"time()+360);
        } else {
          echo 
    $_COOKIE["C"];
        }
      } 
    Ho usato una sintassi estesa per meglio permetterti di interpretare

  3. #3
    grazie mille Leilond! spiegazione perfetta e script altrettanto perfettamente funzionante

    io avevo mischiato $HTTP_COOKIE_VARS e $_COOKIE perchè l' avevo trovato scritto così in un articolo su questo sito .. o è sbagliato lì, o l' ho interpretato male io (perchè non ho fatto copia-incolla)

    però non mi è chiara una cosa:
    questi due controlli

    Codice PHP:
        if(!isset($HTTP_COOKIE_VARS["C"])) 
        { 
          
    setcookie("C""$message"time()+360); 
        } else { 
          echo 
    $HTTP_COOKIE_VARS["C"]; 
        } 
    e
    Codice PHP:
        if(!isset($_COOKIE["C"])) 
        { 
          
    setcookie("C""$message"time()+360); 
        } else { 
          echo 
    $_COOKIE["C"];
        } 
    non sono la stessa cosa? cioè, non compiono la stessa verifica?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    595
    Si, ma questo script funziona sia con le vecchie versione di PHP (quando la variabile $_COOKIE non esiteva) e funzionerà anche quando decideranno (se lo faranno) di eliminare definitivamente la variabile $HTTP_COOKIE_VARS perchè oramai obsoleta

    Se sei sicuro di usare una versione di PHP decentemente aggiornata basta mettere solamente la seconda parte
    Codice PHP:
        if(!isset($_COOKIE["C"])) 
        { 
          
    setcookie("C""$message"time()+360); 
        } else { 
          echo 
    $_COOKIE["C"];
        } 

  5. #5
    ah già .. che stupido!
    mi ero dimenticato del fatto che la variabile $_COOKIE una volta non c' era .. eheh

    comunque penso di usarle tutte e 2 per sicurezza

    grazie mille Leilond

    .. al prossimo problema

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 © 2024 vBulletin Solutions, Inc. All rights reserved.