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?
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
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