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

    Comportamento anomalo script PHP

    Ciao a tutti. Dunque, io uso uno script per le votazioni da 1 a 5 stelle in molte mie pagine. Questo è il codice:

    Codice PHP:

    <?
    extract
    ($HTTP_GET_VARS);
    extract($HTTP_POST_VARS);

    $ficdest=explode(".",basename($PHP_SELF));
    $ficdest=$ficdest[0].".dat";
    $ip getenv(REMOTE_ADDR);
    if(
    file_exists($ficdest)) {
        
    $compteur=fopen($ficdest"r");
        
    $old_stats=file($ficdest);
        
    $stats=explode("|"$old_stats[0]);
        
    fclose($compteur);
        
    $new_count=$stats[0];
        if (
    $stats[3] != $ip) {
            
    $new_count +=1;
        }
        
    $ip_hit=$ip;
        
    $compteur=fopen($ficdest"w");
        
    fputs($compteur"$new_count|$stats[1]|$stats[2]|$ip_hit|$stats[4]");
        
    fclose($compteur);
    }
    else {
        
    $nouveau_compteur=fopen($ficdest"w");
        
    fputs($nouveau_compteur"1|||$ip|");
        
    fclose($nouveau_compteur);
    }

    if (!empty(
    $envoi)) {
        
    $vote=fopen($ficdest"r");
        
    $old_stats=file($ficdest);
        
    $stats=explode("|"$old_stats[0]);
        
    fclose($vote);
        
    $nbr_votes=$stats[1];
        
    $moy_votes=$stats[2];
        if (
    $stats[4] != $ip) {
            
    $nbr_votes +=1;
            
    $moy_votes=((($stats[1]*$stats[2])+$note)/$nbr_votes);
        }
    else { echo 
    "<font face=Verdana size=2 color=red>Hai gi&agrave; votato!</font>"; }
        
    $ip_vote=$ip;
        
    $vote=fopen($ficdest"w");
        
    $new_stats=fputs($vote"$new_count|$nbr_votes|$moy_votes|$stats[3]|$ip_vote");
        
    fclose($vote);
    }

    print (
    "<form method=post>");
    $old_stats=file($ficdest);
    $stats=explode("|"$old_stats[0]);
    if (
    $stats[2] == 5)
    {
    $star "../../script/images/5star.gif";
    }
    if (
    $stats[2]>=1)
    {
    $star "../../script/images/1star.gif";
    }
    if (
    $stats[2]>=1.5)
    {
    $star "../../script/images/15star.gif";
    }
    if (
    $stats[2]>=2)
    {
    $star "../../script/images/2star.gif";
    }
    if (
    $stats[2]>=2.5)
    {
    $star "../../script/images/25star.gif";
    }
    if (
    $stats[2]>=3)
    {
    $star "../../script/images/3star.gif";
    }
    if (
    $stats[2]>=3.5)
    {
    $star "../../script/images/35star.gif";
    }
    if (
    $stats[2] >= 4)
    {
    $star "../../script/images/4star.gif";
    }
    if (
    $stats[2] >= 4.5)
    {
    $star "../../script/images/45star.gif";
    }
    if (
    $stats[2] >= 5)
    {
    $star "../../script/images/5star.gif";
    }
    if (
    $stats[2]<=0)
    {
    $star "../../script/images/00star.gif";
    }
    print (
    "<table width=150 bordercolor=#99999 cellspacing=0 border=1><td cellspacing=none cellpadding=none align=right valign=middle border=1><font size=1 face=Verdana color=#333333>Voto medio (totale $stats[1]):
    <img src=\"
    $star\" alt=\"Average rating: $stats[2]\"></td><tr></font>");
    echo
    "<td align=right valign=middle><input type=radio name=note value=5><font face='courier new' size=2 color=#333333>Meravigliosa!!
    "
    ;
    echo
    "<input type=radio name=note value=4>Ottimo scatto!
    "
    ;
    echo
    "<input type=radio name=note value=3>Una bella foto
    "
    ;
    echo
    "<input type=radio name=note value=2>Carina........
    "
    ;
    echo
    "<input type=radio name=note value=1>Niente di che.
    </font>"
    ;
    print (
    "<input type=hidden name=envoi value=1>  <input type=submit value='Vota questa foto!' style=background:#00CCFF; border-width:1;Border-color:#0099FF;font-weight:bold;></table></form></td>");

    ?>

    basta includerlo via php nella pagina in cui si desidera visualizzarlo, e lui, oltre a visualizzare in questa un riquadro con i voti possibili e i risultati raggiunti (per ogni pagina), crea un file .dat con lo stesso nome della pagina per tenere traccia dei voti.
    Fin qui tutto bene, funziona egregiamente anche per un gran numero di pagine.

    Però qualche giorno fa ho notato che, presa una cartella, in qualsiasi pagina andassi, il risultato dei voti era lo stesso (stesso numero di votanti e stessa media). Purtroppo in quell'occasione non ho avuto modo di controllare via ftp cosa sia successo, per andarmi a vedere i file dat (avrebbe dovuto essercene uno per pagina).

    Ma non è finita! Ieri vado a vedere, e i file dat sono scomparsi, tutti (erano una sessantina sparsi in 4 cartelle), e se visualizzo una pagina, come da regola mi crea il suo dat da zero e visualizza zero voti.

    Che può essere? Un buco nello script o che altro?

  2. #2

  3. #3

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.