Itse olen yrittänyt vääntää tämmosta kävijälaskuria joka laskee uniikit kävijät, mutta tällä tavalla se ei jostain syystä tallenna ip:tä tuonne tiedostoon. Mikähän tässä on?
<?php $Get_Ip = $_SERVER['REMOTE_ADDR']; $Ip_File = "uniqueIP.dat"; $Get_IpFile_Contents = file_get_contents($Ip_File); $Count_IpFile = file($Ip_File); $Count_IpFile = count($Count_IpFile); $Open_IpFile_To_Read = fopen($Ip_File, "r") or die("Tiedoston avaus epäonnistui."); while(!feof($Open_IpFile_To_Read)) { $Get_Row = fgets($Open_IpFile_To_Read); if($Get_Row != $Get_Ip || $Get_Row == "") { break; $Open_IpFile_To_Write = fopen($Ip_File, "a") or die("Tiedoston avaus epäonnistui."); fwrite($Open_IpFile_To_Write, $Get_Ip."\n") or die("Tiedostoon kirjoittaminen epäonnistui"); fclose($Open_IpFile_To_Write); } } fclose($Open_IpFile_To_Read); echo $Count_IpFile; ?>
Näyttäisi siltä, että luet tiedoston file()-funktiolla $Count_IpFile-muuttujaan, muttet sitten käytäkään sitä lukiessasi tietoja. Miksi näin?
Ja jos silmukan sisällä päästään ehtolauseeseen(eli jos IP:t eivät täsmää, tai tiedosto on lopussa), hypätään välittömästi pois koko silmukasta break-lauseella.
Jos virheloissa on "blaa blaa blaa... Permission Denied in..." (Joka ittelläni tulee aina, jos ei oo dokumentin juurihakemistossa ja systeemi tehty tolleen)
Varsinkin, jos tämmöinen virhe täsmää, niin kokeileppa muuttaa tuo
fwrite($Open_IpFile_To_Write, $Get_Ip."\n") or die("Tiedostoon kirjoittaminen epäonnistui"); ###Tämmöseen fwrite($Open_IpFile_To_Write, $Get_Ip."\n");
Ja jos haluut välttämättä jokun selostuksen jos toimii/ei toimi, niin mulla ainakin pitää laittaa näin:
$Write_IpFile = fwrite($Open_IpFile_To_Write, $Get_Ip."\n"); if($Write_IpFile != false) echo "Tiedostoon kirjoittaminen onnistui!"; else echo "Ei onnistuttu kirjoittamaan tiedostoon!";
Pitäis toimia, kirjotusvirheitä voi olla, en kokeillu
Lisäksi on hyvien tapojen mukaista kirjoittaa muuttujat pienellä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.