Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Top-10 kävijät?

Sivun loppuun

juhaz [23.07.2005 11:05:08]

#

Mitenkä voisisin tehdä sivuilleni laskurin, joka näyttäisi TOP-10 kävijät (ip:n osalta)? Olen nobo, joten en osaa itse ohjelmoida tuollaista, mutta en kuitenkaan usko, että tuollainen vaatisi ihan älyttömästi koodia :P

Minulla on kotisivuillani siis laskuri.txt, jossa on sivuilla käyneiden IP:t rivissä.

kayttaja-2791 [23.07.2005 11:52:49]

#

<?php
//Luetaan tiedostosta rivit taulukkoon $array
$array = file('laskuri.txt');

//Laitetaan rivit uuteen arrayhyn niin että key on IP ja arvo lukumäärä
foreach ($array as $ip) {
  if (isset($newarray[$ip]))
    $newarray[$ip] = $newarray[$ip] + 1;
  else
    $newarray[$ip] = 1;
}

//Järjestetään niin halutessa
asort($newarray);
reset($newarray);

//Tulostusesimerkki
echo "<ol>";
foreach ($newarray as $ip => $count) {
  echo "<li>{$ip}: $count </li>\n";
  $c++;
  if ($c == 10)
    break;
}
echo "</ol>";
?>

Tällä koodinpätkällähän alkaa olla jo FAQ:iin aineksia, jo kolmatta kertaa vastaan sillä tähän samaan kysymykseen.

juhaz [23.07.2005 12:19:18]

#

Sanoo:
Parse error: parse error, unexpected T_FOREACH in /var/www/html/jussi/topten.php on line 28

Rivillä 28 on foreach ($array as $ip) { ja siihen kuuluva litania oli tämä:

foreach ($array as $ip) {
  if (isset($newarray[$ip]))
    $newarray[$ip] = $newarray[$ip] + 1;
  else
    $newarray[$ip] = 1;
}

ajv [23.07.2005 12:21:53]

#

Virhe on tuota edeltävällä koodirivillä. Sen voit päätellä jo errorista: "Odottamaton foreach rivillä 28". Yleensä puuttuu puolipiste.

juhaz [23.07.2005 12:22:48]

#

Niinpä olikin :P
Oli kommentista lähtenyt osa tekstistä seuraavalle riville ja ilman kommenttimerkkejä, joten se valitteli sitten vikaa koodissa...

Kiitoksia! Nyt minä saan pidettyä top-listaa sivuillani käyvistä IP-osoitteista, selaimista ja käyttiksistä... paitsi, että miten muuten näkee, että mitä selainta tai käyttistä käyttäjä käyttää? :D


ONGELMA!!!
Miksi top-10 pärjäävä IP laskeekin alemmas? Minulla on sivuillani käynyt kolme henkilö scriptin käyttöönoton jälkeen, joista toinen on käynyt kaksi kertaa (omaa iipeetäni ei lasketa) niin se, joka on käynyt kaksi kertaa on nyt kakkosena eikä ykkösenä niinkuin pitäisi??
Ja nyt se on jo kolmas!!! Vaikka sen piti olla ykkönen??

Blaze [23.07.2005 14:02:41]

#

juhaz kirjoitti:

miten muuten näkee, että mitä selainta tai käyttistä käyttäjä käyttää?

Luotettavasti et mitenkään, mutta parsimalla $_SERVER['HTTP_USER_AGENT'] -muuttujaa saat jonkinlaisia tilastoja aikaan.

juhaz kirjoitti:

Miksi top-10 pärjäävä IP laskeekin alemmas?

Koska järjestät arrayn väärinpäin (pienin luku ensimmäiseksi, suurin viimeiseksi). Käytä asortin sijasta arsortia.

juhaz [24.07.2005 08:31:41]

#

Kiitoskia. Nyt toimii, kuten pitääkin. Mitäs muita noita on kuin tuo $_SERVER['HTTP_USER_AGENT'] ja $_SERVER['REMOTE_ADDR'] ? Vai onko niitä enään enempää?

juhaz [24.07.2005 09:35:00]

#

Miten minä voin tehdä tähän koodiin jotain, että se lisää yhden $maara:n aina, kun jostain IP:stä tulee tyyppi, mutta vain kerran vuorokauden aikana?

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$file = "tiedosto.txt";
$data = file($file);

$ip = $_SERVER['REMOTE_ADDR'];
$omaip = "10.1.1.6"; //IP-Osoitteesi
echo('<br><br>');
if($omaip == $ip){
$maara = $data[0];
echo('<center>');
echo "juhaz has eated $maara people";
echo('<br>');
echo("juhaz has eated you already!");
echo('</center>');
}
if($omaip != $ip){
$maara = $data[0] + 1;
$data[0] = $maara;
$fo = fopen($file,"w");
foreach ($data as $row);
{
 fputs($fo, $row);
}
fclose($fo);
echo "juhaz has eated $maara people";
}

tuomas [24.07.2005 12:45:24]

#

Pistä sekaan päivämäärä millon ko. ip:stä on tultu.
rivi vois olla tälläne: 127.0.0.1|10käyntiä|viim2005-07-24
Jos käytössäsi on mysql, tee ihmeessä sillä. Isot tiedostot tulee hidastamaan paljon lataamista.

Blaze [24.07.2005 12:48:25]

#

juhaz kirjoitti:

Mitäs muita noita on kuin tuo $_SERVER['HTTP_USER_AGENT'] ja $_SERVER['REMOTE_ADDR'] ? Vai onko niitä enään enempää?

Vaikka kuinka paljon. Katso vaikka phpinfosta.

juhaz [24.07.2005 18:33:01]

#

Ok. Enpä löytänyt tuosta sitä mitä etsin, mutta olisiko jotain keinoa hakea sitä tietoa, että miltä sivulta joku käyttäjä on minun sivuilleni tullut?

Blaze [24.07.2005 19:31:23]

#

$_SERVER['HTTP_REFERER']

Metabolix [24.07.2005 20:14:08]

#

Aina noita tietoja ei kuitenkaan löydy, jos käyttäjällä on vaikkapa riittävän ilkeämielinen palomuuri. Eli muista tehdä vaihtoehto (isset auttaa)


Sivun alkuun

Vastaus

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

Tietoa sivustosta