Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kävijälaskurin tekeminen

antsa [26.12.2003 00:32:17]

#

Ajattelin nyt weblaskurin muututtua maksulliseksi tehdä sivuilleni oman kävijälaskurin, joka myös keräisi vähän erilaisia statseja.

Eli siis saanko PHP:llä jotenkin selville vaikka sivun, josta kävijä on tullut, tai käyttäjällä olevan käyttöjärjestelmän? Siis noita samoja statseja, mitä on Weblaskurissakin.

Ja sitten miten se kannattaisi tehdä, jos haluan laskurin laskevan vain uniikit kävijät. Sehän kävisi siten, että vain "bannaan" aina jokaisen IP:n, josta sivulla käydään. Mutta käyttävätkö nämä ilmaiset laskurit, kuten Weblaskuri, tätä samaa menetelmää vai jotain keksejä tms?

k-mikko [26.12.2003 02:19:47]

#

Sivu, jolta kävijä on tullut, löytyy muuttujasta $_SERVER['HTTP_REFERER'], mutta kuten php-manuaali toteaa, eivät kaikki selaimet kerro tätä ja jotkut antavat käyttäjälle mahdollisuuden muokata tätä tietoa mielensä mukaan.

Tiedot käyttöjärjestelmästä yms. saadaan get_browser()-funktiolla. Lisätietoa: https://www.php.net/manual/en/function.get-browser.php

Luulen, että kannattaa IP-osoitteen tunnistamisen sijaan käyttää keksejä tuon uniikki kävijä -jutun toteuttamiseen, sillä joissain tapauksissa saman IP-osoitteen takana saattaa olla satojakin erillisiä tietokoneita. Joku voi kertoa lisää tai korjata väittämääni, sillä en tätä asiaa tunne kovinkaan hyvin.

Antti Laaksonen [26.12.2003 15:48:51]

#

Selain ja käyttöjärjestelmä selviävät $_SERVER['HTTP_USER_AGENT']-muuttujasta (get_browser-funktio käyttänee myös tätä tietoa). Kannattaa ehkä tallentaa koko muuttujan sisältö, koska sen tulkitseminen ei aina ole helppoa. Tässä on omien selainteni HTTP_USER_AGENTeja esimerkiksi:

Mozilla Firebird 0.6.1: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1
Internet Explorer 6.0: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SON-1102CD; .NET CLR 1.1.4322)
Opera 7.20: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.20 [en]

Tarkka kävijöiden laskeminen tällä tavalla ei ole mahdollista, mutta IP-osoitteiden tallentaminen ja evästeiden käyttö lienevät parhaat toteutustavat.

antsa [26.12.2003 16:27:03]

#

Niin ja mites tuo keksin tallennus toimii, kun muistaakseni kokeilin sitä jossain muussa yhteydessä kerran, mutta en saanut toimimaan. Käsittääkseni se meni niin, että

setcookie('nimi','arvo');

Ja sitten tuon arvon saa $_COOKIE['nimi'] . Mutta setcookie-funktion jälkeenkään ei tuo palauttanut mitään, eli missä oli mahdollisesti vika?

k-mikko [26.12.2003 16:44:13]

#

setcookie (nimi [, arvo [, umpeutumispäivämäärä [, tiedostopolku [, domain [, lähetäänkö suojatussa yhteydessä ]]]]])

Esimerkiksi

<?php
setcookie("pipari", "tosi hyvää", time()+3600, "/", ".domain.com");
//Tunnin päästä umpeutuva keksi, joka
//toimii domain.comin kaikilla alidomaineilla,
//kuten beta.domain.com tai www.domain.com

?>

lainaus:

Mutta setcookie-funktion jälkeenkään ei tuo palauttanut mitään, eli missä oli mahdollisesti vika?

En nyt aivan ymmärtänyt, mutta huomautan silti, että kun käytät skriptissä setcookie()-funktiota, keksi ei ole voimassa vielä kyseisen skriptin ajon aikana. Toisin sanoen, tällainen ei toimi

<?php

setcookie("keksi", "jotain", yms yms);

print $_COOKIE['keksi'];

?>

Setcookie()-funktio palauttaa kyllä TRUE/FALSE, mutta riippumatta siitä, menikö keksi oikeasti perille käyttäjälle asti.

trinit [27.12.2003 16:53:44]

#

lainaus:

Niin ja mites tuo keksin tallennus toimii, kun muistaakseni kokeilin sitä jossain muussa yhteydessä kerran, mutta en saanut toimimaan.

FAQ: https://www.ohjelmointiputka.net/faq.php?sivu=3#21

Vastaus

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

Tietoa sivustosta