Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: PHP: Sivujen kävijoiden trackeri

Sivun loppuun

sami537 [21.07.2012 23:23:36]

#

Hei!

Eli mitenkä pystyisi saada ton tekemään kansioihin päivä kohtaisesti hyvin selattavassa muodossa olevia tiedostoja kavijöistä?

<?php
$ip = $_SERVER['REMOTE_ADDR'];
$referer = $_SERVER['HTTP_REFERER'];
$agent = $_SERVER['HTTP_USER_AGENT'];
$time = date("Y-m-d G:i:s A");
$text = "".$time." = ".$ip."User Agent: ".$agent."Referer: ".$referer."";
$file = fopen('ips.txt' , 'a');
fwrite($file,$text."\n");
?>

p.s Haluaisin tehdä sivun missä näkyisi millä selaimella on käyty verkko sivustossani eniten

tuutti [21.07.2012 23:53:00]

#

Jollei oo syytä tehä juuri PHP:lla tai ylipäätään itse kokonaan, niin kannattaa harkita google analytics tms vastaavaan käyttöä:

http://www.google.com/analytics/

sami537 [22.07.2012 14:09:52]

#

tuutti kirjoitti:

Jollei oo syytä tehä juuri PHP:lla tai ylipäätään itse kokonaan, niin kannattaa harkita google analytics tms vastaavaan käyttöä:

http://www.google.com/analytics/

Millä ilveellä minä muka tuonne pääsen/hyödyn?

Macro [22.07.2012 14:23:58]

#

Jos alottaisit vaikka kirjautumalla sisään ja noudattamalla ohjeita. Kaikki mitä sun tarvii tehdä, on lisätä pätkä Javascriptiä sivulle, niin Google hoitaa loput.

Lebe80 [22.07.2012 14:25:00]

#

sami537 kirjoitti:

tuutti kirjoitti:

Jollei oo syytä tehä juuri PHP:lla tai ylipäätään itse kokonaan, niin kannattaa harkita google analytics tms vastaavaan käyttöä:

http://www.google.com/analytics/

Millä ilveellä minä muka tuonne pääsen/hyödyn?

Hyödyt tekemällä itsellesi ilmaisen Google -tunnuksen, jonka jälkeen saat Googlelta seurantakoodin. Nuo statistiikkaskriptit ovat kuitenkin sellaisia, että vievät omalta palvelimelta tolkuttoman paljon tilaa muutaman vuoden päästä, joten on järkevää käyttää ulkopuolisia palveluita. Google Analytics antaa tarkkaa tietoa käyttäjistä ja heidän käyttäytymisestä sivuillasi.

Näet esimerkiksi reitit, joita käyttäjät käyttävät päästäkseen sivulle X ja voit tehostaa sivujasi sen perusteella paremmaksi.

reino [22.07.2012 16:39:47]

#

<?php
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);
$tunnus=$_REQUEST['tunnus'];

$f=fopen("tracklog.csv",'a');
$merkkijono='"'.$_SERVER['REMOTE_ADDR'].'",'.
	'"'.$host.'",'.
	'"'.$_SERVER['HTTP_USER_AGENT'].'",'.
	'"'.date("j.n.Y H:i").'"'."\n";
fputs($f,$merkkijono);
fclose($f);
?>

Tommosella saat hienon taulukon osoitteesta, reverse DNS nimestä ja selaimesta. Ton csv tiedoston voi avata jollain taulukkolaskennalla.

-tossu- [22.07.2012 19:04:04]

#

Reinon koodin luomalla tracklog.csv-tiedostolla ei tee juurikaan mitään, ellei tee samalla omia analysointiskriptejä. Sen lisäksi tiedosto kasvaa nopeasti ja reverse DNS -kyselyt vievät turhaa aikaa antamatta merkittävää hyötyä.

The Alchemist [22.07.2012 21:04:13]

#

reino kirjoitti:

(koodia)

Minä olen aina miettinyt, että minkä helvetin takia ihmiset koodaavat tällaista paskaa. Katsokaa nyt tuota koodia - onko se lainkaan luettavaa? Aivan järkyttävää suttua.

<?php

$file = 'log.txt';

$ip = get_ip();
$host = gethostbyaddr($ip);
$date = date('Y-m-d H:i:s');
$agent = $_SERVER['HTTP_USER_AGENT'];

$row = "{$ip}, {$host}, {$agent}, {$date}\n";

file_put_contents($file, $row, FILE_APPEND);

function get_ip() {
    if (isset($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }

    return $ip;
}

Koodin luettavuus ei ole subjektiivinen asia. Olen kovin herkkä ärsyyntymään siitä, ettei ihmisiä kiinnosta vähääkään omien tuotostensa laatu.

timoh [23.07.2012 00:16:52]

#

The Alchemistin get_ip-funktiosta sen verran, että HTTP_CLIENT_IP ja HTTP_X_FORWARDED_FOR ovat täysin turhia ja mahdollisesti hyökkääjän muokkaamia, joten niitä ei tule missään nimessä pidä käyttää (ainakaan ilman validointia). Samaa sarjaa kuin esim. XSS.

Poikeus on jos webbiserverisi edessä on erikoiskonfiguraatiota.

sami537 [23.07.2012 03:53:18]

#

The Alchemist: Okei kiitos tästä,katson mitä tulee aikaan

timoh kirjoitti:

The Alchemistin get_ip-funktiosta sen verran, että HTTP_CLIENT_IP ja HTTP_X_FORWARDED_FOR ovat täysin turhia ja mahdollisesti hyökkääjän muokkaamia, joten niitä ei tule missään nimessä pidä käyttää (ainakaan ilman validointia). Samaa sarjaa kuin esim. XSS.

Poikeus on jos webbiserverisi edessä on erikoiskonfiguraatiota.

Ja tähän voisin sanoa että servu pyörii tällä hetkällä Abyss Web Server X2 avulla

Lisäys:

tuutti kirjoitti:

Jollei oo syytä tehä juuri PHP:lla tai ylipäätään itse kokonaan, niin kannattaa harkita google analytics tms vastaavaan käyttöä:

http://www.google.com/analytics/

Tolla idella ei ole mitään järkeä!

Lisäys:

Eli:
Joko localhostiin tiedosto tai FTP serverille
missä on ne tiedot


p.s Sivun osoite (Ei ole 24/7 päällä)

p.p.s Jos mahdollista niin saisinko vähän kommentteja tuohon php scriptiin että tiedän mitä ne kaikki tekee (Olen alottelija PHP:een kanssa)

Lisäys:

Eli testasin tätä ja toimisi ihan hyvin eli
Tavallisen sivun lähde:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<!-- TemplateBeginEditable name="doctitle" -->
<title>Sami's webiste | Media</title>
<!-- TemplateEndEditable -->
<!-- TemplateBeginEditable name="head" -->
<!-- TemplateEndEditable -->
<link rel="stylesheet" type="text/css" href="css/index.css" media="screen" />
</style><!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--></head>

<body>

<div class="container">
  <header>
  <img src="http://85.23.33.82:8080/status.png" alt="Smiley face" width="auto" height="auto" />
  </header>
  <div class="sidebar1">
    <ul class="nav">
      <li><a href="video.html">Videos</a></li>
      <li><a href="contat.html">Contat Me</a></li>
      <li><a href="index.html">Home</a></li>
      <li><a href="media.php">Media</a></li>
    </ul>
    <aside>
      <h5>Advertisement Info</h5>
      <p>Contat me with email:</p>
      <p><a href="maito:root@server12.servehttp.com">Mail Me</a></p>
    </aside>
  <!-- end .sidebar1 --></div>
  <article class="content">
    <h1>Home</h1>
    <section>
     <h2>Media:</h2>
      <p>Here will be soon something!</p>
    </section>
  <!-- end .content --></article>
  <aside>
    <h4>Advertisement</h4>
    <p>Contat Me if you wan't advertisement space</p>
  </aside>
  <footer>
    <p>&copy; server12.servehttp.com</p>
  </footer>
  <!-- end .container --></div>
</body>
</html>
<?php
include 'test.php';
?>

sitten test.php:

<?php

$file = 'log.txt';

$ip = get_ip();
$host = gethostbyaddr($ip);
$date = date('Y-m-d H:i:s');
$agent = $_SERVER['HTTP_USER_AGENT'];

$row = "{$ip}, {$host}, {$agent}, {$date}\n";

file_put_contents($file, $row, FILE_APPEND);

function get_ip() {
    if (isset($_SERVER['HTTP_CLIENT_IP'])) {
        $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        $ip = $_SERVER['REMOTE_ADDR'];
    }

    return $ip;
}

ja ihan hieno säädöksi voisi laittaa että siinä on yksi tulos per rivi

Macro [23.07.2012 10:03:44]

#

sami537 kirjoitti:

Tolla idella ei ole mitään järkeä!

Kui? Paljon enemmän sä siitä hyödyt kun noista omista PHP-viritelmistä. Plussana, ettei tartte ite koittaa säätää niitä kaikkia toimintoja. Pyörää ei kannata keksiä uudelleen.

sami537 kirjoitti:

ja ihan hieno säädöksi voisi laittaa että siinä on yksi tulos per rivi

Niinhän siin on (\n on rivinvaihtomerkki, tietty voit koittaa \r\n jos Windows-palvelin käytössä...)

Yucca [23.07.2012 13:08:52]

#

sami537 kirjoitti:

p.s Haluaisin tehdä sivun missä näkyisi millä selaimella on käyty verkko sivustossani eniten

Varsinainen tavoite kannattaisi kertoa heti kättelyssä, mieluiten jo otsikossa, eikä jälkikirjoituksessa.

Etenkin kun tuo tavoite merkitsee, että tähän asti aikaan saamasi koodi ja keskustelussa esitetyt lisäykset siihen ovat homman triviaalein osa. Keskustelussa on viitattu siihen, että mm. Googlella on valmista koodia, joka hoitaa sitä vaativampaakin osaa, kuten selainten tunnistamista ja ryhmittelyä.

Jos ajattelit esimerkiksi lukea HTTP-USER-AGENT-arvosta vain alkuosan, niin sehän on liki jokaisella selaimella ja sen veljellä ”Mozilla/5.0”. Selaimen todellinen identiteetti kerrotaan sitten vaihtelevasti jossain myöhemmin.

Lebe80 [23.07.2012 16:37:17]

#

Google Analyticsillä saisit myös käyttäjän käyttöjärjestelmän, resoluution, sivuilla käytetyn ajan yms. Yms. Tietoja. Kannattaa kokeilla.

Edit:
Lisäksi tietenkin saat katsottua miten esim. IE-käyttäjien käyttäytyminen eroaa muista selaimista.

sami537 [24.07.2012 02:27:30]

#

Macro kirjoitti:

sami537 kirjoitti:

Tolla idella ei ole mitään järkeä!

Kui? Paljon enemmän sä siitä hyödyt kun noista omista PHP-viritelmistä. Plussana, ettei tartte ite koittaa säätää niitä kaikkia toimintoja. Pyörää ei kannata keksiä uudelleen.

sami537 kirjoitti:

ja ihan hieno säädöksi voisi laittaa että siinä on yksi tulos per rivi

Niinhän siin on (\n on rivinvaihtomerkki, tietty voit koittaa \r\n jos Windows-palvelin käytössä...)

Joo eli Windows palvelin on käytössä.

edit:Eli koska en halua käyttää JavaScriptii.

Lebe80 kirjoitti:

Google Analyticsillä saisit myös käyttäjän käyttöjärjestelmän, resoluution, sivuilla käytetyn ajan yms. Yms. Tietoja. Kannattaa kokeilla.

Edit:
Lisäksi tietenkin saat katsottua miten esim. IE-käyttäjien käyttäytyminen eroaa muista selaimista.

Tohon en halua mennä koska se idea/ratkasu perustuu JavaScriptiin

The Alchemist [24.07.2012 07:30:18]

#

sami537 kirjoitti:

Macro kirjoitti:

sami537 kirjoitti:

Tolla idella ei ole mitään järkeä!

Kui? Paljon enemmän sä siitä hyödyt kun noista omista PHP-viritelmistä. Plussana, ettei tartte ite koittaa säätää niitä kaikkia toimintoja. Pyörää ei kannata keksiä uudelleen.

sami537 kirjoitti:

ja ihan hieno säädöksi voisi laittaa että siinä on yksi tulos per rivi

Niinhän siin on (\n on rivinvaihtomerkki, tietty voit koittaa \r\n jos Windows-palvelin käytössä...)

Joo eli Windows palvelin on käytössä.

Käytä aina pelkkää \n-merkkiä tai sitten PHP_EOL-vakiota. Älä koskaan käytä \r\n:ää. Alustalla ei ole mitään väliä. Natiivista poikkeavaa rivinvaihtoa käyttämällä rikkoo ainoastaan Notepadin, joten sillä ei ole mitään väliä. Sekavaa rivinvaihtoa käyttämällä vain kerää itselleen potentiaalisia ongelmia.

sami537 kirjoitti:

Tohon en halua mennä koska se idea/ratkasu perustuu JavaScriptiin.

Ihan hyvin voit laittaa GA:n oman viritelmäsi rinnalle, jolloin pääset vertaamaan harrastelijan ja asiantuntijoiden järjestelmien eroja.

Janz [24.07.2012 08:45:50]

#

Herätys, vuosi 2012 kutsuu. Javascriptissä ei ole mitään vikaa, kunnon web-sivuja ei saa edes aikaiseksi ilman sitä. Eiköhän Googlella ole mietitty hyvin tarkkaan ja hartaasti tämä ratkaisu.

Macro [24.07.2012 08:49:27]

#

The Alchemist kirjoitti:

Käytä aina pelkkää \n-merkkiä tai sitten PHP_EOL-vakiota. Älä koskaan käytä \r\n:ää. Alustalla ei ole mitään väliä. Natiivista poikkeavaa rivinvaihtoa käyttämällä rikkoo ainoastaan Notepadin, joten sillä ei ole mitään väliä. Sekavaa rivinvaihtoa käyttämällä vain kerää itselleen potentiaalisia ongelmia.

Ai, mä oon aina luullu että se on \n joka rikkoo Notepadin rivityksen. Tack.

Yucca [24.07.2012 11:46:33]

#

Janz kirjoitti:

Javascriptissä ei ole mitään vikaa

No jaa, vrt. esim. ”JavaScript: The Good Parts” (153 sivua), ”JavaScript: The Definitive Guide” (1078 sivua). ☺

lainaus:

kunnon web-sivuja ei saa edes aikaiseksi ilman sitä.

Kuka saa, kuka ei. Ja riippuu kyllä siitäkin, mitä ollaan tekemässä.

lainaus:

Eiköhän Googlella ole mietitty hyvin tarkkaan ja hartaasti tämä ratkaisu.

Se onkin sitten eri juttu, eikä Google-analytiikassa ole kyse sivujen toimivuudesta vaan seurannasta. Se on tärkeää palvelun tuottajalle. Käyttäjälle, jolla on JavaScript poissa päältä, Google-analyytikan puuttuminen ei tunnu tuon taivaallista (nopeuttaa toimintaa hiukan tietysti, mutta mistäpä sen huomaisi jos ei erikseen tutki). Kun palvelun tuottaja tutkii, miten saa paremman tuoton esimerkiksi verkkokaupasta, niin käyttäjien toiminnan seuraaminen on olennaista *tilastollisessa* mielessä. Tässä ei hirveästi tunnu se, että muutama prosentti käyttäjistä jää seuraamatta.

sami537 [23.08.2012 22:02:13]

#

Yucca kirjoitti:

Janz kirjoitti:

Javascriptissä ei ole mitään vikaa

No jaa, vrt. esim. ”JavaScript: The Good Parts” (153 sivua), ”JavaScript: The Definitive Guide” (1078 sivua). ☺

lainaus:

kunnon web-sivuja ei saa edes aikaiseksi ilman sitä.

Kuka saa, kuka ei. Ja riippuu kyllä siitäkin, mitä ollaan tekemässä.

lainaus:

Eiköhän Googlella ole mietitty hyvin tarkkaan ja hartaasti tämä ratkaisu.

Se onkin sitten eri juttu, eikä Google-analytiikassa ole kyse sivujen toimivuudesta vaan seurannasta. Se on tärkeää palvelun tuottajalle. Käyttäjälle, jolla on JavaScript poissa päältä, Google-analyytikan puuttuminen ei tunnu tuon taivaallista (nopeuttaa toimintaa hiukan tietysti, mutta mistäpä sen huomaisi jos ei erikseen tutki). Kun palvelun tuottaja tutkii, miten saa paremman tuoton esimerkiksi verkkokaupasta, niin käyttäjien toiminnan seuraaminen on olennaista *tilastollisessa* mielessä. Tässä ei hirveästi tunnu se, että muutama prosentti käyttäjistä jää seuraamatta.

Elikkäs olisiko mitään toivoa saada toi ILMAN javascriptia (olkaa te vain eri mieltä mutta haluan sen PHP:eena!) Eli se scripti tarkistais mikä päivä on ja tekis kansion sinne mutta jos siellä olisi jo samalle päivälle kansio se lisäis vain siihen tiedostoon sen tiedot ketä kävi ja sitten YHDEN tiedoston missä on sen päivän käynnit ja niin edelleen?

hernih [23.08.2012 22:42:18]

#

On kyllä taas melekosta meininkiä. Järkyttävää ignorata muutaman koodirivin js trackeri jolla saat 1000000x paremmat työkalut kuin omasi kansiopurkkaviristelmäsi.

Noh voin tarjota tähän piwikin image trackeria, vaatii hieman työtä saada toimimaan

http://piwik.org/docs/tracking-api/#toc-two-tracking-methods-image-tracking-or-using-the-api

sami537 [24.08.2012 14:29:00]

#

hernih kirjoitti:

On kyllä taas melekosta meininkiä. Järkyttävää ignorata muutaman koodirivin js trackeri jolla saat 1000000x paremmat työkalut kuin omasi kansiopurkkaviristelmäsi.

Noh voin tarjota tähän piwikin image trackeria, vaatii hieman työtä saada toimimaan

http://piwik.org/docs/tracking-api/#toc-two-tracking-methods-image-tracking-or-using-the-api

Kuinka monta kertaa täytyy sanoa että HALUAN SEN TOLLA MENETELMÄLLÄ ENKÄ MUULLA!
p.s tiedän että se on viritelmä mutta tykkään viritelmistä!

Lebe80 [24.08.2012 14:46:27]

#

Voitko kertoa vielä syyn, mikset voi uhrata 2 minuutin työtä javascript-träkkeriin, vaan haluat mieluummin epävarmemman ja epätarkemman kikkareen, jota et ole saanut edes kuukaudessakaan laitettua?

sami537 [24.08.2012 14:58:03]

#

Lebe80 kirjoitti:

Voitko kertoa vielä syyn, mikset voi uhrata 2 minuutin työtä javascript-träkkeriin, vaan haluat mieluummin epävarmemman ja epätarkemman kikkareen, jota et ole saanut edes kuukaudessakaan laitettua?

Koska yksinkertaisesti en halua mitään HELVETIN 3 party softia käyttää (Minun mielestäni niistä on vain haittaa)

p.s en ole saanut sitä kanion teko/haku juttua toimimaan koska PHP on "vähän" hepreaa minulle (Ainoastaan jos sinä on kommentteja missä sanotaan että mikää tekee mitäkin niin sitten osaan kyllä muokata)

Lebe80 [24.08.2012 15:01:19]

#

No jos omasta mielestä kuukauden uurastus, joka ei ole tuottanut tulosta, "ei ole haittaa", kun taas 3rdpartyllä olisi homma toiminut kahdessa minuutissa, niin mikäs siinä. Jatkahan heprean opettelua.

sami537 [24.08.2012 15:14:23]

#

Lebe80 kirjoitti:

No jos omasta mielestä kuukauden uurastus, joka ei ole tuottanut tulosta, "ei ole haittaa", kun taas 3rdpartyllä olisi homma toiminut kahdessa minuutissa, niin mikäs siinä. Jatkahan heprean opettelua.

Ehkä niin mutta huluan että kaikki on SAMALLA pelvelimella

Lebe80 [24.08.2012 15:29:04]

#

Lebe80 kirjoitti:

Nuo statistiikkaskriptit ovat kuitenkin sellaisia, että vievät omalta palvelimelta tolkuttoman paljon tilaa muutaman vuoden päästä, joten on järkevää käyttää ulkopuolisia palveluita.

Ne vievät tilaa, lisäksi pahimmissa tapauksissa jumittavat vain sitä palvelintasi.

Mutta jatka harjoituksia.

hernih [24.08.2012 18:03:02]

#

Jotenkin tulee mieleen tästä keskustelusta lautapelit. :D

sami537 [26.08.2012 03:12:43]

#

hernih kirjoitti:

Jotenkin tulee mieleen tästä keskustelusta lautapelit. :D

Miten muka?
Ps kenelläkään hyvää kirjautumis scriptiä?

t0ll0 [26.08.2012 05:34:53]

#

sami537 kirjoitti:

Ps kenelläkään hyvää kirjautumis scriptiä?

Hei mulla on idea! Tee se itse..
Kun alkaa miettimään niin homma ei ole vaikea ja toisaalta jos se tuntuu ylitsepääsemättömältä niin kannattaa katsella jo valmiita esimerkkejä että miten homma about noinniinkuin toimii ja siitä oppia..

Juu, itsekkin kysyn välillä neuvoa jos jonkinlaisiin hommiin mutta ei saakeli.. kirjautumisscriptiä?
Google on kaveri jos ei kykene itse miettimään mitä mahdollisesti siihen tarvis..
Lomake, lähetys, käyttäjän tunnitus, käyttäjän "pitäminen" linjoilla, uloskirjaus..

Tätä keskustelua seurannut jo hetken ja hitto mitä perseilyä..
sami537, pystyt parempaan joten lopeta trollaus, ei tuota enää muuna voi ottaa.

The Alchemist [26.08.2012 14:52:42]

#

https://github.com/ZF-Commons/ZfcUser

Tuossapa olisi yksi kirjautumismokkula, jota olen itse käyttänyt. Mielestäni se on hyvä.

sami537 [08.09.2012 01:23:58]

#

t0ll0 kirjoitti:

sami537 kirjoitti:

Ps kenelläkään hyvää kirjautumis scriptiä?

Hei mulla on idea! Tee se itse..
Kun alkaa miettimään niin homma ei ole vaikea ja toisaalta jos se tuntuu ylitsepääsemättömältä niin kannattaa katsella jo valmiita esimerkkejä että miten homma about noinniinkuin toimii ja siitä oppia..

Juu, itsekkin kysyn välillä neuvoa jos jonkinlaisiin hommiin mutta ei saakeli.. kirjautumisscriptiä?
Google on kaveri jos ei kykene itse miettimään mitä mahdollisesti siihen tarvis..
Lomake, lähetys, käyttäjän tunnitus, käyttäjän "pitäminen" linjoilla, uloskirjaus..

Tätä keskustelua seurannut jo hetken ja hitto mitä perseilyä..
sami537, pystyt parempaan joten lopeta trollaus, ei tuota enää muuna voi ottaa.

Tämä ei kyllä ole trollia se on vain niin että jos PHP koodissa EI ole mitään kommentteja en tiedä yhtään että mikä tekee mitäkin!

The Alchemist kirjoitti:

https://github.com/ZF-Commons/ZfcUser

Tuossapa olisi yksi kirjautumismokkula, jota olen itse käyttänyt. Mielestäni se on hyvä.

Kiitos tuosta katsellaan jos vaikka saisi hyvän näköisen toteutuksen aikaseksi tolla :)

The Alchemist [09.09.2012 07:55:03]

#

Noh, oma viestini oli lähinnä trollausta ja kritisointia huonosta vaatimusmäärittelystä. ZfcUserista ei todennäköisesti ole hyötyä kuin Zend 2:n käyttäjille.


Sivun alkuun

Vastaus

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

Tietoa sivustosta