Seuraava koodi ei toimi oikein, pitäisi kirjoittaa sama ip vain kerran talteen!
<?php if($_COOKIE['visit']) { } else { SetCookie("visit", "yes", time() + 60 * 60 * 24 * 1000); $ip = $_SERVER['REMOTE_ADDR']; #echo $ip; $lista = file_get_contents("/home/****/**.txt"); $lista = explode("\n", $lista); #print_r($lista); foreach ($lista as $ipe) { if(!$ipe == $ip) { $true = "true"; } if($true) { file_put_contents("/home/****/**.txt", $ip."\n", FILE_APPEND); } } } ?>
Ihan ensiksi voisit opetella sisentämään koodin siististi. Vertaapa näitä:
if (...) { $x = 1; foreach (...) { $y = 2; $z = 3; } }
if (...) { $x = 1; foreach (...) { $y = 2; $z = 3; } }
Kun olet saanut koodisi jälkimmäiseen muotoon, näet siitä helposti, että kirjoitusfunktio on aivan väärässä paikassa. Lisäksi if-lauseessa on useampikin virhe. Mieti koodin logiikka uudestaan rivi kerrallaan, ei ole vaikea homma.
Koodisi tarkistaessa tiedostoa se antaa $true:n arvoksi "true":n, jos tiedostossa on muitakin ip-osoitteita kuin omasi.
Tämä on helppo toteuttaa in_array()-funktiolla.
<?php $ip = $_SERVER['REMOTE_ADDR']; $file = "tiedosto.txt"; if(!in_array($ip,explode("\n", file_get_contents($file)))) file_put_contents($file, $ip."\n", FILE_APPEND);
Jeps! Kiitos awly, kuten yleensä, yritin asiaa vaikeimman kautta :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.