Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: If ed Else

  1. #1

    If ed Else

    Codice PHP:
    <?php

    /* Contatore visite */

        
    $visits_file "$sub"."visitetot".".txt";
        
    $uniques_file ="$sub"."visiteuni".".txt";
        
        
    $visitsfile fopen("$visits_file""w");
        
    $uniquesfile fopen("$uniques_file""w");
        
    fwrite($visitsfile,"0");
        
    fwrite($uniquesfile,"0");
        
    fclose($visitsfile);
        
    fclose($uniquesfile);
        
        
    $counter fopen($visits_file"r");
        
    $total fread($counterfilesize($visits_file));
        
    fclose($counter);
        
    $total++;
        
    $counter fopen($visits_file"w");
        
    fwrite($counter$total);
        
    fclose($counter);

        
    $unique_hits fopen($uniques_file"r");
        
    $total_uniques fread($unique_hitsfilesize($uniques_file));
        if(
    $_COOKIE["unique_hit"] != "set") {
        
    setcookie("unique_hit""set"time()+2419200);
        
    $total_uniques++;
        }
        
    $uniques_hits fopen($uniques_file"w");
        
    fwrite($uniques_hits$total_uniques);
        
    fclose($uniques_hits);
    ?>
    Il fatto è che ogni volta che si apre la pagina in questione il ciclo si ripete e quindi il contatore qui:
    Codice PHP:
    $visitsfile fopen("$visits_file""w");
        
    $uniquesfile fopen("$uniques_file""w");
        
    fwrite($visitsfile,"0");
        
    fwrite($uniquesfile,"0");
        
    fclose($visitsfile);
        
    fclose($uniquesfile); 
    fa si che il contatore resta fisso.
    Come potrei risolvere il problema, con un if? Come?

  2. #2
    Dovresti specificare una condizione con una variabile:

    if($variabilite){...

    però per farlo più semplice mi viene in mente solo un passaggio con mysql_query("..."),ti dove ad ogni entrata ti incrementi i valori che vuoi, anche più di uno, so google ho trovato tanta toba, ma se la guardi bene è tutta simile.
    Se vuoi usare un database mysql ti posto i link. Se vuo icontinuare con il blocco note allora non sò la risposta.
    Io l'ho appena fatto con mysql e php e devo dire che funziona perfettamente, adesso devo solo settare dei cookie per impedire un incremento al refresh della pagina.

    Fammi sapere.

  3. #3
    Grazie , ma non ho un database mysql, purtroppo.

  4. #4
    Peccato, ero riuscito a far funzionare anche i cookie per non far contare tutto più di una volta.

    Ma sei online oppure stai in locale con il sito?

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,190
    ma quello che tu vuoi ottenere è avere file composti da una sola riga che
    - alla prima visita abbia il valore 0
    - alla secondo abbia il valore 1

    ho capito bene?

  6. #6
    Originariamente inviato da _Marco_87
    Peccato, ero riuscito a far funzionare anche i cookie per non far contare tutto più di una volta.

    Ma sei online oppure stai in locale con il sito?
    Online

    Originariamente inviato da clasku
    ma quello che tu vuoi ottenere è avere file composti da una sola riga che
    - alla prima visita abbia il valore 0
    - alla secondo abbia il valore 1

    ho capito bene?
    Un contatore di visite, nel primo file.txt le persone online totali, nel secondo quelle uniche (in base all'IP).

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,190
    avevo capito che ti serve un contatore di visite...
    quello che non capisco è come lo vuoi ottenere...
    tu in pratica adesso apri un file, lo sovrascrivi con un altro il cui dato sarà ZERO e poi lo riapri, lo leggi e lo risovrascrivi con ZERO + 1...

    non credo che questo si possa considerare un contatore... avrà sempre valore 1

    per curiosità, ma $sub cosa sarebbe?

  8. #8
    Originariamente inviato da clasku
    non credo che questo si possa considerare un contatore... avrà sempre valore 1

    per curiosità, ma $sub cosa sarebbe?
    Esatto, è propio questo che chiedo io, come posso far si che possa essere un vero contatore di visite, senza che mi dia sempre valore 1 con quel codice.

    $sub riprenderebbe il nome della sezione in cui si trova la pagina.

  9. #9
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,190
    hai due modi
    apri il file, lo leggi e incrementi il valore ogni volta => file di una sola riga con il totale
    apri il file, ci accodi la visita => file di tante righe quante sono le visite

    la sovrascrittura o l'accodamento dipende dal parametro che passi al fopen()

  10. #10
    la procedura da seguire è:
    - apri il file in lettura con r+
    - usi www.php.net/flock per evitare che il file si disintegri se lo aprono più utenti in contemporanea
    - leggi il valore con www.php.net/fread
    - con www.php.net/fseek ti sposti ad inizio file
    - con www.php.net/ftruncate resetti il file
    - con www.php.net/fwrite scrivi il nuovo valore incrementato
    - effettui l'unlock sempre con www.php.net/flock
    - chiudi il file www.php.net/fclose

    questa procedura ti da un discreto livello di protezione contro le doppie scritture

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