Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505

    contatore visite - implementazione sbagliata?

    salve, ho realizzato il mio contatore visite che mi aggiunge in una tabella del DB ogni utente/ip/data/tipologia di browser per ogni visitatore.

    il codce è questo :
    Codice PHP:
    <?
        
    // loggo se non c'è la sessione e se non provengo dalla pagina logout (altrimenti mi distrugge la sessione e conta come una nuova visita)
        
    if((!isset($_SESSION['log'])) && (!isset($_GET['general']) or ($_GET['general']!="logout"))) { 
            
    $ip=$_SERVER['REMOTE_ADDR'];
            
    $date=date("Y-m-d H:i:s");
            
    $browser=$_SERVER['HTTP_USER_AGENT'];
            
    $browser=mysql_real_escape_string($browser);
            if(isset(
    $_SESSION['nickname'])) {
                
    $user=$_SESSION['nickname'];
            } else {
                
    $user="unknownABCD1234";
            }
            
    $insert=mysql_query("INSERT INTO views (ip, user, date, browser) VALUES ('$ip', '$user', '$date', '$browser')"$mydb);    
            
    $_SESSION['log']='logged';
            
    $_SESSION['iplog']=$ip;
            
    $_SESSION['datelog']=$date;
        }
    ?>
    per vedere poi quanti utenti sono entrati, faccio la conta delle righe aggiunte al DB.

    ora, tutto funziona perfettamente. solo per il fatto che mi ritrovo dati di questo genere sul DB :
    ID: 1
    IP : 95.108.244.252
    USER : unknownABCD1234
    DATE : 2010-08-07 01:16:00
    BROWSER : Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)

    ID : 2
    IP : 95.108.244.252
    USER : unknownABCD1234
    DATE : 2010-08-07 01:16:04
    BROWSER : Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)

    nel momento che se non c'è la sessione aggiungo alla sessione $_SESSION['log'], quando poi vado a ricontrollare questo parametro con !isset($_SESSION['log'] (ammeno che la sessione non sia scaduta) dovrebbe esserci.
    cioè in 4 secondi la sessione è scaduta? impossibile....
    come mai tutto ciò?

    detto questo, cosa ne pensate? si può migliorare? presenta possibili bug? così giusto a titolo di informazione...

    saluti

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    nessun commento?

  3. #3
    Magari se posti un po' di codice...
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  4. #4
    Utente di HTML.it L'avatar di Aires
    Registrato dal
    Jan 2010
    Messaggi
    725
    Originariamente inviato da satifal
    Magari se posti un po' di codice...
    L'ha postato
    Originariamente inviato da qazar
    Se finisci di leggere il thread mi sono corretto,è solo i kernel scritto in html.
    Originariamente inviato da rnlflame
    Comunque non dovevano crollare

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    ??? il codice lo ho postato. è quello sopra...

    $_SESSION['nickname'] : variabile di sessione che viene creata "SOLO" se l'utente fà il login.
    $_GET['general'] : variabile che stabilisce la pagina che stò visitando (quel controllo sull'if praticamente fà si che controlli il log solo se non provengo dalla pagina di logout). ma in questo caso, essendo che l'utente non è loggato la prima volta, entra in quel primo if (sia xkè il $_SESSION['log'] non è ancora stato creato, sia perchè non può provenire dalla pagina di logout visto che ancora non è login).

    la cosa strana è che entra anche la seconda volta in quel if

  6. #6
    Scusate ragazzi ma sono ancora i fumi dell'alcol di ieri sera :P
    Ho sbagliato a postare.
    Ora gli do un'occhiata
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    hahah ti capisco... maledetti lunedì

    comunque è molto strano. Se lo provo per esempio con il mio pc su localhost/internet lo fà ogni tanto... non sempre. Idem per gli utenti del sito... non ho proprio idea del perchè dovrebbe comportarsi così...

  8. #8
    Il fatto è che per entrare nell'if devono essere vere entrambe le condizioni ina quanto sono in AND per cui ti consiglio di verificare bene tali condizioni. Il $_SESSION['log'] lo imposti all'interno dell'if per cui successivamente dovrebbe essere sempre impostato a meno che in altre parti del codice tu non lo resetti. Per quanto riguarda il $_GET['general'] non saprei.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    infatti l'if funziona bene. l'unica cosa che mi lascia perplessa è che per entrare in quel if nel giro di 1/qualche minuti (o anche pochi secondi) l'unico modo sia nel fatto che la sessione viene cancellata, e non cancellandola da nessun'altra parte, sembra che la sessione lato server duri così poco. non è bizzarro?

  10. #10
    La sessione dovrebbe durare fino alla chiusura del browser se non erro, quindi il problema dovrebbe essere altrove.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.