Lettura e confronto di un file su più righe

Dunque, in un file di testo vengono salvati il giorno e l'ip

Es.

15-01-2006 127.0.0.1

15-01-2006 127.0.0.1

Nasce ora la necessità di creare una struttura di controllo per cui se la data e l'ip dell'utente sono uguali ad una delle righe presenti nel file, la visita nn viene aggiunta.

Questo mi porta a pensare che devo "trasformare" il contenuto del file in un array e poi passare al confronto.

Ma al primo "devo" mi blocco

Ho dato un'occhiata su php.net alle varie funzioni explode() implode() file() e fgets() ma nn ho trovato nulla.

inviato 10 anni fa
oscar
X 0 X

In realtà non credo sia necessario mettere tutto in un array. Basta leggere il file e cercare al suo interno la coppia data-ip che interessa

$data_ip = '15-01-2006 127.0.0.1';

$contenuto = file_get_contents("miofile.txt");

if(strpos($contenuto, $data_ip) === false))

{

   // nel file non c'è la coppia data-ip

   ...

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Il fatto che la coppia data-ip non sia una variabile fissa, ma che si crei al momento della visita dell'utente invalida il funzionamento di quella porzione di codice che hai postato?

Zau!

risposto 10 anni fa
oscar
X 0 X

Scusate il doppio post ma nn ho trovato il tasto edit.

Il file sul quale viene effettuato il controllo nn contiene un solo valore, ma logga tutti gli ip che si connettono al sito.

Quindi ottenuta la data, è necessario che questa venga confrontata con tutte le stringhe contenute nel file.

risposto 10 anni fa
oscar
X 0 X

Nell'esempio che ti ho fatto la variabile $data_ip è costruita in maniera statica solo per rendere più chiaro il codice, ma nel tuo caso deve essere creata al momento, accodando la data all'IP dell'utente.

Basta effettuare poi la ricerca di questa stringa nel file per sapere se l'utnte è stato già memorizzato nella giornata corrente.

Provare per credere  O0

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

Dunque, provato ma neglio se nn credo  :)

Tu tieni presente che io sono Ultra-Niubbo

Ti posto il codice di tutto lo script e ti spigo secondo me come dovrebbe lavorare:

<?php
$data = getdate();
$giorno = $data['mday'];
$ip=$_SERVER['REMOTE_ADDR'];
$indirizzi="ip.txt";
$ipdascrivere="$ip";
$apri = fopen($indirizzi, "a+");
$scrivi = fwrite($apri, $giorno ." ");
$scrivi = fwrite($apri, $ipdascrivere . "\r\n");
 
fclose($apri);
//controllo della data e dell'ip
$data = getdate();
$giorno= $data['mday'];
$ip= $_SERVER['REMOTE_ADDR'];
$elemento = ("$giorno". " " . "$ip");
$contenuto = file_get_contents("ip.txt");
if(strpos($contenuto, $elemento) === false)
{
$var=@fopen("contatore.txt",'r');
$leggi=@fread($var,filesize("contatore.txt"));
@fclose($var);
if ($leggi==0){
$leggi=1;
}
else{
$leggi=$leggi+1;
}
$var=@fopen("contatore.txt",'w');
@fwrite($var,$leggi);
@fclose($var);
echo "Pagine visitate: ",$leggi,"";
}
?>

All'inizio recupero il giorno (mese e anno li metto poi) e l'ip e li scrivo nel file ip.txt

Ottengo un file che ha questo contenuto:

15 127.0.0.1

15 127.0.0.1

In seguito creo la stringa che mi interessa confrontare con le varie stringhe presenti nel file e nel caso in cui non sia trovata nessuna corrispondenza, aumento il contatore di uno scrivendo nel file "contatore.txt"

Ma nn va :D

risposto 10 anni fa
oscar
X 0 X

Non mi è chiara la logica  ???

Prima scrivi in un file la data e l'IP puo riapri il file per vedere se c'è la data e l'IP appena scritti  ???

risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda