Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Hmmm... foreach ongelmana

Teknkik [02.09.2010 22:51:09]

#

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);
  }
 }
}
?>

Metabolix [02.09.2010 22:57:34]

#

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.

awly [03.09.2010 08:18:26]

#

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);

Teknkik [03.09.2010 08:29:22]

#

Jeps! Kiitos awly, kuten yleensä, yritin asiaa vaikeimman kautta :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta