• ModSenior

    Credo tu abbiamo mal interpretato cosa sia un cookie, i cookie non sono utilizzati esclusivamente per l'autenticazione. I cookie vengono utilizzati per far conservare al visitatore delle informazioni, non è detto che siano esclusivamente per l'autenticazione, può servire per indicare ad esempio se ha visualizzato un popup per evitare di rimostrarglielo nuovamente.
    Serve solo per far conservare delle informazioni al visitatore.
    Spero di essere stato chiaro. 🙂


  • User

    Mi sa che ci sto capendo poco, se mi creo un coockie nel mio sito locale, dovrei ritrovarmelo nell'browser?.
    Va bene qualsiasi pagina?
    Adesso provo.
    Scusa il disturbo.


  • User

    Ho provato, il cookies l'ho trovato nel browser.
    <?php
    setcookie("utente", "valore", time()+3600);
    ?>
    e così si recupera il valore.
    <? php
    / / stampa un cookie
    echo $ _COOKIE ["utente"];

    ? >
    Così mi stampa a video (valore).


  • User Attivo

    Allora, il concetto di cookie è molto semplice.
    Pensiamo ad una variabile nome con valore Giovanni:
    $nome="Giovanni";
    Alla fine della pagina questa variabile finisce il suo corso, in quanto ogni variabile dura al massimo per tutta la pagina.
    Un cookie è come una variabile, con la differenza che viene salvato in un file all'interno del computer.
    Questo permetterà al sito nel quale è stato creato il cookie (se google crea un cookie rimarrà associato a google, così come repubblica o yahoo) di utilizzare quel cookie per settare dei parametri, come, ad esempio, la lingua.
    Facciamo l'esempio:
    [PHP]
    //Creo il cookie che conterrà la lingua scelta dall'utente.

    //l'utente clicca sulla bandiera italiana:
    setcookie("lingua","italiano",time()+3600);
    [/PHP]
    Letteralmente: crea un cookie di nome "lingua", assegnagli il valore "italiano" e fallo durare 1 ora (3600 secondi) dal momento in cui è stato creato.
    Questo cookie verrà salvato nel computer dell'utente che ha fatto la scelta e verrà ripescato dal sito in questione ogni qual volta che quell'utente entrerà nel sito, così avrà sempre la lingua scelta.
    Così com'è però serve a poco in quanto dura solo 1 ora. Basta aggiungere un bel pò di zeri dopo il 3600 e diventeranno anni, così che l'utente avrà sempre la lingua scelta.

    Il cookie è come una variabile, con il vantaggio di poter essere usato in ogni pagina del sito.
    Scrivere:
    setcookie("lingua","italiano",time()+3600);
    è come scrivere
    $lingua="italiano";
    La dovrai trattare nello stesso modo, con la differenza che la dovrai richiamare, come diceva giustamente thedarkita, tramite:
    $_COOKIE['lingua']

    Ti puoi creare tutti i cookie che vuoi. Sono comunque variabili, quindi pensale come tali.

    Altro esempio: vuoi passare un nome da una pagina ad un'altra? Basta che crei il cookie e lo recuperi nella seconda pagina. Mettendo un tempo breve (10 secondi) ti cancellerà in automatico il cookie.
    Questo metodo è per farti capire le potenzialità, ovviamente non è un sistema consono.

    La differenza con la sessione è che il cookie, come dicevo, viene salvato in un file sul pc dell'utente, mentre la sessione rimane aperta virtualmente nella memoria finché non chiudi il browser.
    Questo permette maggiore sicurezza in quanto i dati sensibili vengono trattati in locale mentre un hacker che riesce ad accedere al tuo pc avrebbe accesso ai cookies e, quindi, ai relativi dati sensibili.

    Prova a cercare il file dei cookie del tuo browser e ti accorgerai di cosa parlo.

    :ciaosai:


  • User

    Grazie della spiegazione ma non riesco a capire come recuperare il valore.
    Allora se io scrivo: <?php setcoockie("utente" "valore" time ()+3600); ?>
    Questo è un coockie, giusto,? per recuperare il suo valore scrivo:
    <?php echo $_COOCKIE ["utente"]; ?>
    Cosi a video mi stampa : (valore) cioe se scrivevo cane mi stampava cane.
    Oppure devo scriverlo così:
    <?php setcoockie("$utente" "$valore" time ()+3600); ?>
    Devo capire se quello che faccio è giusto, perchè con le prove che faccio in locale funziona ma come spiegavo stampa : valore o altro.
    Facendo le prove in locale ho guardato nei file temporanei del browser, salvava il coockie con il nome utente e non ho trovato niente di scritto.
    Spero di non farti impazzire, ma prima o poi arriverò.
    Grazie ancora.
    Oltre quello per scivere il codice colorato come hai critto te come si fa?, sembra tutto uguale.


  • ModSenior

    I cookie si trovano nella variabile globale $_COOKIE e non in $_COOCKIE.
    Per il codice colorato devi usare i bbcode, maggiori informazioni le trovi qui.
    Nel cookie dovresti trovare il valore della varaibile $valore, se non ha valore ovviamente il cookie risulta vuoto.


  • User

    Mi potreste fare un esempio pratico da provare in locale?


  • User Attivo

    Come ti dicevo, il funzionamento è molto semplice:
    un cookie è come una variabile quindi lo puoi trattare come tale.
    Se scrivi:
    [PHP]
    //attenzione alle virgole!!
    setcookie("utente", "valore", time ()+3600);[/PHP]
    è come se scrivessi:
    [PHP]$utente="valore";[/PHP]
    Attenzione a non mettere la $ nel setcookie, (cookie è il termine corretto) perché non serve.
    La funzione per settare un cookie è questa:
    setcookie("nome del cookie","valore del cookie", durata del cookie);
    non devi scrivere nulla di più.
    Sostituisci in nome del cookie e valore del cookie con quello che ti pare.
    La durata la setti come ti ho detto in precedenza.
    E non c'è molta distinzione tra il locale e il server remoto, a meno che non hai un server con php 4 e il remoto con il 5 e passa. Ci sono funzioni che sono state modificate tra le due versioni ma certamente non quelle basilari che servono a te, quindi vai tranquillo 🙂
    Attento alla corretta scrittura del codice. Una sola virgola manda in errore un intera pagina. A volte anche un sito intero.
    Quindi guarda bene quello che postiamo (esempio COOKIE e non COOCKIE piuttosto che le virgole) e cerca di essere sempre preciso, se no avrai sempre molti errori e grattacapi!!! :mmm:

    Per il codice colorato, quando rispondi a un post (non la risposta veloce), in alto vedi una pagina con scritto, piccolo piccolo, php. Se clicchi lì ti aggiunge due tag PHP tra parentesi quadre, il secondo con uno slash ( /PHP ) prima di php.
    Quindi fai:
    (metto gli spazi se no li nasconde, ma tu toglili; le quadre sono attaccate alle lettere)
    [ PHP ]
    echo "ciao!";
    [ /PHP ]


  • User

    Sono ancora in alto mare.


  • User Attivo

    @mauranto99 said:

    Sono ancora in alto mare.

    Ma scusa, te l'ho spiegato in ogni salsa! Come fa a non esserti chiaro?
    Ti ho pure scritto come fare... Nemmeno con un copia e incolla?
    Allora leggiti una guida di php.HTML.it riguardo i cookie e le sessioni.
    Ultima prova per farti capire:
    setti il cookie dove ti pare (solo una volta! Non va ripetuto in ogni pagina a meno che non voglia cambiarne il valore) poi all'inizio di ogni pagina inserisci il cookie in una variabile:
    $prova=$_COOKIE['nome_cookie'];
    poi usi la variabile prova come ti pare. Ora è chiaro? Se no, cosa non ti è chiaro?
    [URL=http://www.giorgiotave.it/forum/gt-world/101972-forum-gt-disponibile-alle-versioni-per-telefoni-cellulari.html]Postato via Mobile


  • User

    Guarda un po'!.
    Prima pagina

    [ PHP ]
    <?php
    $utente= "valore";
    setcookie("utente", "valore", time ()+3600);
    ?>
    [ /PHP ]
    Seconda pagina

    [ PHP ]
    <?php
    $utente= "valore";
    {
    echo $_COOKIE['utente'];
    }
    ?>
    [ /PHP ]
    Cosi a video mi stampa valore.
    Nel browser trovo un coockie di nome utente, con contenuto valore.
    Tutto quello che son riuscito a fare.

    E' giusto cosi?
    Se cosi e giusto continuo da qui.

    Ciao!

    :arrabbiato:


  • ModSenior

    Si è corretto, un cookie è tutto qui, nulla di più.


  • User Attivo

    Questo:
    $utente= "valore";
    è inutile.
    Lo usi nella funzione del settaggio del cookie? No.
    Nemmeno nell'altra pagina.
    Quindi toglilo.
    Se invece lo vuoi usare nel settaggio del cookie allora fai:
    [PHP]
    $utente= "valore";
    //senza virgolette
    setcookie("utente", $utente , time ()+3600);
    [/PHP]

    p.s. ma non ti avevo detto di non mettere gli spazi dentro [ PHP ]???


  • User

    OK! il primo passaggio funziona.
    Devo provare il secondo.

    $utente= "valore";
    //senza virgolette
    setcookie("utente", $utente , time ()+3600);

    Ma che spazio devo mettere, non è giusto così?, [ PHP ][ /PHP ]
    Ciao! grazie.

    :ciauz::ciauz:


  • User

    Grazie! a tutti.

    :ciauz::ciauz:


  • ModSenior

    Non devi mettere gli spazi nell'apertura e chiusura dei bbcode. Trovi qui la guida per l'utilizzo dei bbcode.


  • User

    OK! Proviamo

    [php]
    echo "proviamo se funziona";
    echo "Grazie";
    [/php]

    Funziona!
    Così se devo postare il codice si capisce qualcosa.
    Prima o poi ci arrivo.


  • User Attivo

    figurati!
    :ciaosai:


  • User

    Ciao! sono ancora qua.
    Ho fatto tre pagine per provare il funzionamento del coockie, quello che volevo fare non mi riesce. Posto le pagine e vi spiego cosa voglio fare.
    Prima pagina l'utente inserisce il suo nome nel campo nome e invia il modulo.

    [html]
    [left]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    <html xmlns=
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>
    <body>
    <br />
    <br />
    <!-- form inserimento nome utente -->
    <form id="form1" name="form1" method="post" action="pagina5.php">
    nome
    <input type="text" name="utente" />
    <input type="submit" name="button" id="button" value="Invia" />
    </form>
    <br />
    <br />
    </body>
    </html>
    [/left][/html]

    Seconda pagina recupero il nome utente e la stampo a video,
    fino a qui tutto a posto, poi invio sempre dalla stessa pagina un cookie,
    anche qui va bene nel browser trovo il cookie.

    [php]
    <?php $utente= $_POST['utente'];
    //Cookie da mandare all'utente
    setcookie("utente", " Ciao $utente" , time ()+3600); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>
    <body>
    <!-- recupero nome utente e stampa a video -->
    <?php
    $utente = $_POST['utente'];
    echo "Ciao $utente";
    ?>
    <br />
    <br />
    <a href="prova6.php"> vai prova 6 </a>
    </body>
    </html>
    [/php]

    Nella terza pagine vorrei recuperare il cookie, però con il nome dell'utente
    che compila il modulo, se si chiama mario, dovrei mandare nel suo browser un cooockie con contenuto mario.
    come devo fare?, io recupro solo il valore che imposto io.

    [php]
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Documento senza titolo</title>
    </head>
    <body>
    <!-- Stampa a video contenuto coockie -->
    <?php
    $utente= "utente";
    {
    echo $_COOKIE['utente'];
    }
    ?>
    </body>
    </html>

    [/php]

    Nell'attesa ci lavoro su!
    Saluti.

    :fumato: A me tra un po' fuma il cervello.

    Ho corretto le tre pagine postate adesso funzionano, riesco a recuperare il valore del coockie.
    Cosa ne pensate? Giusto così?
    OK!
    Adesso vediamo come riesco a usare il cookie, cosa si puo fare.


  • User Attivo

    Piccola annotazione.
    Come ti avevo già detto, questo:
    [PHP]<?php
    $utente= "utente";
    {
    echo $_COOKIE['utente'];
    }
    ?>[/PHP]
    è totalmente e assolutamente INUTILE.
    Perché setti la variabile utente? tanto non la usi mai!
    E le parentesi graffe a cosa servono? Non hai aperto nessuna funzione o condizione...
    Semmai puoi fare in questo modo:
    [PHP]<?php
    $utente= $_COOKIE['utente'];
    echo $utente;
    ?>[/PHP]
    in questo modo ha senso, così se hai bisogno di usare nuovamente il cookie, basta che richiami la variabile utente!