Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33
  1. #1

    Cookie presente ma non rilevato dal browser

    Ho un bug stranissimo in un programma di contavisite. Ho progettato una funzione che crea un cookie nel browser nel caso in cui esso sia inesistente. Il punto critico è il seguente:
    Codice PHP:
            if (! isset ( $_COOKIE [$nomecookie] )) {
                
    print_r $nomecookie "<br>" );
                
    setcookie $nomecookie1$durataCookie );
                
    $v $v 1;
                
    file_put_contents $file$vLOCK_EX );
            } 
    Se azzero il browser e lo riporto a nuovo (elimino cookie, cronologia, ecc...) va tutto ok, ovvero alla prima iterazione il browser non trova il cookie, lo crea e lo stampa a video. Alla seconda iterazione invece si accorge che il cookie esiste già pertanto non entra nella funzione e non stampa nulla.
    Se non azzero il browser il contavisite entra dentro l'if un'infinità di volte e ad ogni refresh incrementa di 1 il contatore. Se apro il browser il nome stampato ($nomecookie) lo trovo e con scadenza nel 2023.
    Il problema si verifica con tutti i browser così sono certo che il mio script abbia un bug.
    Ovviamente lo stesso problema mi capita anche quando azzero il contavisite ovvero quando cambio il nome del cookie ($nomecookie).
    Ma questa cosa come fa ad accadere? A me sembra impossibile!!!
    Il problema si verifiche solo durante le fasi di test del contavisite e quindi vado a modificare la data dell'orologio di windows.
    Più pratica in futuro...

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    ...
    Se azzero il browser e lo riporto a nuovo (elimino cookie, cronologia, ecc...) va tutto ok, ovvero alla prima iterazione il browser non trova il cookie, lo crea e lo stampa a video. Alla seconda iterazione invece si accorge che il cookie esiste già pertanto non entra nella funzione e non stampa nulla.
    Se non azzero il browser il contavisite entra dentro l'if un'infinità di volte e ad ogni refresh incrementa di 1 il contatore.
    ...
    Intanto hai un bug nella tua testa, perché dici una cosa e poi dopo dici il contrario.
    Da ciò che hai scritto:
    - cookie eliminati -> si entra nell'if
    - seconda iterazione -> il cookie c'è e non si entra nell'if
    - seguenti iterazioni -> si entra sempre nell'if

    Ora o alla seconda iterazione elimini il cookie e non lo ricrei più oppure c'è qualcosa che non va nella tua esposizione del problema.

  3. #3
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Intanto hai un bug nella tua testa, perché dici una cosa e poi dopo dici il contrario.
    Da ciò che hai scritto:
    - cookie eliminati -> si entra nell'if
    - seconda iterazione -> il cookie c'è e non si entra nell'if
    - seguenti iterazioni -> si entra sempre nell'if

    Ora o alla seconda iterazione elimini il cookie e non lo ricrei più oppure c'è qualcosa che non va nella tua esposizione del problema.
    Supponi che nel browser esiste un cookie di nome pippo non ancora scaduto. In teoria, in questa situazione, non si dovrebbe entrare nell'if, giusto? Questo perché il cookie esiste già. Mi segui? Bene! Beh, il programma entra ugualmente nell'if anche se il cookie esiste.
    Più pratica in futuro...

  4. #4
    Tu sai come rimuovere dal browser tutti i cookie che iniziano con 'ciao' usando php?
    Più pratica in futuro...

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    I cookie devono essere mandati prima dell'output html. La porzione di codice che hai postato non consente di vedere a quale momento invochi i cookie.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Quote Originariamente inviata da badaze Visualizza il messaggio
    I cookie devono essere mandati prima dell'output html. La porzione di codice che hai postato non consente di vedere a quale momento invochi i cookie.
    Non capisco. Il pezzo di codice sta in una classe che istanzo, non so dirti altro. Puoi essere più preciso?

    Quando scrivo $_COOKIE=array() noto che faccio sparire i cookie dall'applicazione ma non dal browser quindi mi sembra di capire che $_COOKIE sia un array che si riempe automaticamente in base ai cookie presenti nel browser che non sono eliminabili fisicamente se non dal browser stesso. Giusto?
    Più pratica in futuro...

  7. #7
    In pratica lo script funziona fino a che non riporto la data di windows alla realtà dopo aver finito i test sull'applicazione. Io vorrei avere un programma che non "si sfasci" se l'utente decide di fare dei test su esso, è questo il nocciolo della questione.

    Soprattutto mi piacerebbe capire perché accade questo. E' semplicemente sconvolgente tutto ciò, ho rivisto il codice parecchie volte e mi sembra tutto a posto.

    Più pratica in futuro...

  8. #8
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da giannino1995 Visualizza il messaggio
    [B]
    Soprattutto mi piacerebbe capire perché accade questo. E' semplicemente sconvolgente tutto ciò, ho rivisto il codice parecchie volte e mi sembra tutto a posto.

    Ricordati che il PC ha sempre ragione, se un certo codice fa una determinata cosa, è così che funziona ciò che si è scritto, non è il PC che sta facendo cose a caso.

  9. #9
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    Ricordati che il PC ha sempre ragione, se un certo codice fa una determinata cosa, è così che funziona ciò che si è scritto, non è il PC che sta facendo cose a caso.
    Infatti!...
    Più pratica in futuro...

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    $duratacookie è uguale a cosa?

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.