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

    cookies e valori (data)

    Ciao,

    credo di fare le operazioni corrette...

    Codice PHP:
            .... 
            
    GregorianCalendar gc = new GregorianCalendar();
            
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy - HH:mm:ss");
            
    String data sdf.format(gc.getTime());
            
    Cookie[] cookies request.getCookies();
            
    Cookie ck = new Cookie(nomeUtente,data);
            
    response.addCookie(ck); 
    successivamente faccio...

    Codice PHP:
                if(cookies!=null){
                    for(
    int i=0;i<cookies.length;i++){
                        
    System.out.println("cookies["+i+"].getName() = "+cookies[i].getName());
                        if(!
    cookies[i].getName().equals("JSESSIONID")){
                            
    String pref cookies[i].getValue();
                            
    System.out.println("cookies["+i+"].getValue() = "+pref);
                            
    out.println("

    "
    +i+". "+cookies[i].getName()+". L'ultimo accesso è stato effettuato in data: "+pref+"</p>");
                        }
                    }
                }else{
                    
    out.println("

    Cookies disabilitati</p>"
    );
                } 
    purtroppo non ho niente all'interno della stringa pref.
    Eppure.. se vado a vedere il cookie salvato sul browser, leggo perfettamente la data.....

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: cookies e valori (data)

    Originariamente inviato da cagnaluia
    Codice PHP:
            Cookie ck = new Cookie(nomeUtente,data);
            
    response.addCookie(ck); 
    Il name e value di un cookie sono poi nient'altro che String ... cosa ci metti lo sai tu, quindi non posso certo dire io se è appropriato o no per quello che vuoi fare. Il fatto che hai messo una data formattata ... beh ok. È corretto quanto hai fatto.

    Nota solo che non sarebbe necessario creare un GregorianCalendar e poi usare getTime() ... a quel punto passa direttamente a format un new Date().

    Originariamente inviato da cagnaluia
    Codice PHP:
    if(!cookies[i].getName().equals("JSESSIONID")){ 
    No ehm ... qui non ci siamo. Se esiste un cookie con nome "JSESSIONID" .... è perché c'è una sessione "attiva". Ma questo non centra nulla con il cookie che tu hai aggiunto esplicitamente (e che presumo abbia un certo nome, il nome di un utente es. "pippo").

    Insomma, ci può essere un cookie con name JSESSIONID e con value il ID di sessione ... ma a te non dovrebbe interessare! Nel senso che non sei tu che devi cercarlo. È l'application server che lo cerca e fa tutte le sue associazioni per fornirti (in modo del tutto trasparente al programmatore) un HttpSession tramite il noto getSession() di HttpServletRequest.

    Se avevi inviato al client un cookie con name (il tuo nomeUtente) "pippo" ... allora alla prossima request dovrai cercare nell'array dei Cookie uno con name "pippo".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013

    Re: Re: cookies e valori (data)

    Originariamente inviato da andbin
    [...] allora alla prossima request [...]
    quello è il concetto chiave. I cookie "funzionano" dalla request successiva a quella in cui sono stati settati. Se ti dovessero servire i valori scritti nel cookie prima, visto che in qualche modo li hai settati, tienine traccia.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  4. #4
    il fatto è che io scrivo un nome "nomeUtente" e un valore "data"

    codice:
    Cookie ck = new Cookie(nomeUtente,data); 
            response.addCookie(ck);
    nella forma:
    nomeUtente = "nome.cognome@mail.it"
    data = ""

    come risultato sul cookie salvato nel browser esattamente e correttamente:




    invece l'output sul debug del server e quindi sulla pagina che vado a visualizzare mi dice:
    INFO: Welcome.processRequest, data: 05/01/2010 - 20:54:37
    INFO: nomeUtente: nome.cognome@libero.it
    INFO: cookies[0].getName() = JSESSIONID
    INFO: cookies[1].getName() = nome.cognome
    INFO: cookies[1].getValue() =
    come vedete ...

    1. il meccanismo
    codice:
                        System.out.println("cookies["+i+"].getName() = "+cookies[i].getName());
    getName() mi restituisce qualcosa di fasullo.

    2. il meccanismo
    codice:
    String pref = cookies[i].getValue();
    mi restituisce "vuoto" o null.. non lo so.. cmq non mi restituisce nulla.


    PS: ho aggiunto una
    codice:
    if(!cookies[i].getName().equals("JSESSIONID")){
    cioè: diverso dall esistenza di un cookie "JSESSIONID" solo perchè sò esattamente che ci saranno due cookie.. e io non voglio esaminare JSESSIONID... bensì quello prima o quello dopo a seconda dell ordine alfabetico.

    PPS: questo mi serve solo per scrivere un cookie con la data e riproporlo nella stessa pagina per indicare all'utente l'ultimo login effettuato.

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cagnaluia
    getName() mi restituisce qualcosa di fasullo.
    Nota (e lo dice anche la documentazione ufficiale), che nel name non puoi mettere qualunque carattere che ti pare.

    Per il costruttore di javax.servlet.http.Cookie dice:

    The name must conform to RFC 2109. That means it can contain only ASCII alphanumeric characters and cannot contain commas, semicolons, or white space or begin with a $ character.

    Quindi se hai messo un @ nel name ... beh, non è corretto secondo le specifiche. E quindi dovresti cambiare approccio.

    Originariamente inviato da cagnaluia
    PS: ho aggiunto una
    codice:
    if(!cookies[i].getName().equals("JSESSIONID")){
    cioè: diverso dall esistenza di un cookie "JSESSIONID"
    Sì ok. Tra l'altro mi scuso, perché ieri sera non ho visto subito il ! ed ho interpretato male io pensando che tu stessi cercando espressamente il JSESSIONID!!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    nessun problema, in effetti in un altro thread, menzionavo appunto il discorso di tagliare dalla mail la seconda parte dopo la "@" appunto per questo problema..

    The name must conform to RFC 2109






    rimane cmq un dubbio... il valore di un cookie si estrae NON indicando il suo nome, bensì processando l'intero array... appunto all'interno del ciclo for.

    eppure, hai visto dallo screenshot, il valore c'è. ma non mi ritorna nel programma!

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da cagnaluia
    rimane cmq un dubbio... il valore di un cookie si estrae NON indicando il suo nome, bensì processando l'intero array... appunto all'interno del ciclo for.
    Appunto si estrae cercando il nome tra i Cookie nell'array.

    Originariamente inviato da cagnaluia
    eppure, hai visto dallo screenshot, il valore c'è. ma non mi ritorna nel programma!
    Probabilmente per i casini dovuti ai caratteri non appropriati.
    Cioè ... inizia con il mettere dei nomi appropriati e poi verifica se è tutto ok. Se non lo è ... c'è dell'altro.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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