Sostituzione sbagliata in array

JackIlPazzo

Utente Attivo
25 Lug 2014
69
0
6
Sto facendo un sistema che permette all'utente di esprimere un voto a seconda del tasto premuto. Attualmente è possibile esprimere tre tipi di voto. Ogni utente viene salvato in un file di testo su una linea, e gli ultimi tre indici rappresentano lo stato del voto; se corrisponde a 0, allora vuol dire che il voto non è stato ancora dato, altrimenti a 1. Il codice che ho fatto esegue una ricerca all'interno del file per vedere se l'utente è stato trovato, quindi si salva la linea corrispondente, subito dopo vado a lavorare su di essa. In particolare, ho diviso la riga e salvo gli indici in un array. A questo punto, modifico il suo sesto indice con "1" , e aggiorno l'array. Io uso str_replace per sostituire il vecchio array con il nuovo. Il problema? Vengon sostituiti tutti gli "0" e non solo l'ultimo, in particolare trovo una linea come questa:

utente;Heisenberg@gmail.com;Heisenberg;123;yes;1;1;1;

come se non bastasse, vengono sostituiti con 1 anche tutti gli altri indici degli altri utenti presenti nel file e non sono quello trovato, com'è possibile questo?

Codice:
$handle = fopen("utenti.txt", "r");
$file = file_get_contents("utenti.txt"); 
$count = 0;
if($handle) 
{
    while(($lines = fgets($handle)) !== false) 
    {
         $count++;
         if(strpos($lines,$_GET['email']) !== false) //email found
         {  
            $line = $temp[$count] = explode(";", $lines); //user who voted
            $line[6] = "1"; //index update
            print_r($temp[$count]);
            echo "<br>";
            print_r($line);
            $disable_consulta_provinciale = str_replace($temp[$count], $line,$file);
            $temporary_file = fopen("utenti_temp.txt", "w+");
            fwrite($temporary_file, $disable_consulta_provinciale);
            fclose($handle);
            fclose($temporary_file);
         }
         else
         {
            fwrite($handle, $file); 
            fclose($fo);        
         } 
    }
    unlink("utenti.txt");
    rename('utenti_temp.txt','utenti.txt');

Di seguito un esempio della riga:

utente: è la posizione dell'utente
Heisenberg@gmail.com: email
Heisnberg: è il nome utente
yes: stato di attivazione
0: primo tipo di votazione
0: secondo tipo di votazione
0: terzo tipo di votazione
 

Discussioni simili