webstats php

  • Onderwerp starter Onderwerp starter miem
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

miem

Gebruiker
Lid geworden
24 feb 2002
Berichten
797
Ik ben een beetje aan het stoeien met php, kan nog niet zoveel en het leren gaat boven de 40 ook niet meer zo goed, maar ik ben bezig met een webstatistieken scriptje. Nu wil ik graag zien welke pagina's bezocht zijn. Als ik ze dan later weer oproep uit de database, dan wil ik graag per bezoeker zien hoe hij/zij door de site is gegaan. In het script wat ik nu heb, krijg ik elke keer weer alle info te zien.

log script:

PHP:
<?php

include("config.php");

mysql_connect("$hostname","$gebruiker","$wachtwoord");
mysql_select_db("$database");

$datum = date("d-m-y - H:i");
$ip = $REMOTE_ADDR;
$remoteHost = gethostbyaddr($REMOTE_ADDR);
$pagina = $REQUEST_URI;
$referred = $HTTP_REFERER;

$query = "INSERT INTO $tabel (id,datum,ip,remoteHost,pagina,referred) VALUES ('$id','$datum','$ip','$remoteHost','$pagina','$referred')";
mysql_query($query) or die(mysql_error());

?>
view.php
PHP:
<?php

include("config.php");

// open database connectie.
$connectie = mysql_connect($hostname, $gebruiker, $wachtwoord)
             or die ("Kan geen verbinding opbouwen!");

// selecteer database.
mysql_select_db($database) or die ("Kan geen database selecteren!");

// Het opzetten van een vraagstelling
$query = "SELECT * from $tabel ORDER BY id";

// Het uitvoeren van een vraagstelling
$resultaat = mysql_query($query)
             or die ("Fout in query:$query. " . mysql_error());

// Laat gegevens op het scherm zien
while ( $rij = mysql_fetch_array($resultaat) )
      {

// Vanuit array toewijzen van variabelen van de array $rij
$datum = $rij["datum"];
$ip = $rij["ip"];
$remoteHost = $rij["remoteHost"];
$referred = $rij["referred"];
$pagina = $rij["pagina"];

}

?>
 
Laatst bewerkt:
Ik kom er ook met de manual dus niet uit. Weet niet waar ik dit moet zoeken. Kun je me niet een meer specifiek tip geven ;)
 
Ik kreeg gisteren de output niet goed hier geplaatst. Nog maar eens proberen.
viewphp


PHP:
<?php
echo "<body bgcolor="C1FFD4">";
echo "<table align=\"center\" width=\"90%\" bgcolor=\"00A633\">";

echo "<tr>";
echo "<td width=\"150\"><strong>Datum</strong></td>";
echo "<td width=\"150\"><strong>IP</strong></td>";
echo "<td><strong>Host</strong></td>";
echo "<td><strong>Referred</strong></td></tr>";
echo "<tr><td colspan=\"4\" align=\"left\">&nbsp;</td></tr>";

include("config.php");

// open database connectie.
$connectie = mysql_connect($hostname, $gebruiker, $wachtwoord)
             or die ("Kan geen verbinding opbouwen!");

// selecteer database.
mysql_select_db($database) or die ("Kan geen database selecteren!");

// Het opzetten van een vraagstelling
$query = "SELECT * from $tabel ORDER BY id DESC";

// Het uitvoeren van een vraagstelling
$resultaat = mysql_query($query)
             or die ("Fout in query:$query. " . mysql_error());

// Laat gegevens op het scherm zien
while ( $rij = mysql_fetch_array($resultaat) )
      {

// Vanuit array toewijzen van variabelen van de array $rij
$datum = $rij["datum"];
$ip = $rij["ip"];
$remoteHost = $rij["remoteHost"];
$referred = $rij["referred"];
$pagina = $rij["pagina"];


echo "<tr><td width=\"150\">$datum</td>";
echo "<td width=\"150\">$ip</td>";
echo "<td>$remoteHost</td>";
echo "<td>$referred</td></tr>";
echo "<td colspan=\"4\" align=\"left\">$pagina</td></tr>";
echo "</table>";

}

?>
 
ik heb gevonden hoe ik het beter op het scherm kreeg, ik hoop dat het nu wat duidelijker is.

Nu wordt er elke keer als er een nieuwe pagina op de site wordt bezocht, een nieuw id aangemaakt. Ik zou graag dat per bezoek alle bezochte pagina's bij elkaar staan.
Ik heb voor de pagina's een plaatje. Die wil ik dan achter elkaar in een tabelcel plaatsen.

Misschien moet ik iets doen met cookies, maar daar begrijp ik nog niet veel van.
 
Moet je deze niet buiten de while-lus plaatsen?

echo "&lt;/table>";

Inderdaad zal je dat kunnen doen met cookies. Je geeft iemand een id-nummer mee voor in de database en dat id-nummer sla je ook op in de cookie.

In de log zet je (deze cookie bestaat 7 dagen):

setcookie('naamcookie', $id, time()*86400*7);

En je kunt dan iets inserten of updaten door middel van

mysql_query(".... WHERE id='".$_COOKIE['naamcookie']."'");
 
Bedankt Chris, ga ik morgen mee aan de slag. Laat wel weten of het gelukt is.
 
Geplaatst door miem
PHP:
<?php
$ip = $REMOTE_ADDR;  // $ip = $_SERVER['REMOTE_ADDR']
$pagina = $REQUEST_URI; // $pagina = $_SERVER['REQUEST_URI'];
$referred = $HTTP_REFERER;  // $referred = $_SERVER['HTTP_REFERER'];
?>
view.php
PHP:
<?php

while ($rij = mysql_fetch_array($resultaat))
      {
$ip = $rij["ip"]; //kweenie of dat hoort, maar bovenaan gebruik je ook al variabele $ip...


}

?>
 
Dat is toch totaal verschillend... De een is om een nieuwe rij toe te voegen en de ander is om de rijen er uit te halen.
 
Ik heb in log php nu het volgende

PHP:
<?php
 include("config.php");
 
mysql_connect("$hostname","$gebruiker","$wachtwoord");
mysql_select_db("$database");

$datum = date("d-m-y - H:i");
$ip = $REMOTE_ADDR;
$remoteHost = gethostbyaddr($REMOTE_ADDR);
$pagina = $REQUEST_URI;
$referred = $HTTP_REFERER;

$query = "INSERT INTO $tabel (id,datum,ip,remoteHost,pagina,referred) VALUES ('$id','$datum','$ip','$remoteHost','$pagina','$referred')";
mysql_query($query) or die(mysql_error());

setcookie('naamcookie', $id, time()*86400*7);
$query2 = "UPDATE $tabel SET pagina=$pagina WHERE id='".$_COOKIE['naamcookie']."'"; 
mysql_query($query2) or die(msql_error());

?>
maar dit werkt niet. Wat doe ik fout? Er wordt elke keer weer een nieuwe id aangemaakt.
 
Wil je alle pagina's die iemand bezoekt in 1 cel hebben, zodat er steeds een pagina bij in komt te staan?

PHP:
<?php
 include("config.php");
 
mysql_connect("$hostname","$gebruiker","$wachtwoord");
mysql_select_db("$database");

$datum = date("d-m-y - H:i");
$ip = $REMOTE_ADDR;
$remoteHost = gethostbyaddr($REMOTE_ADDR);
$pagina = $REQUEST_URI;
$referred = $HTTP_REFERER;

if(!IsSet($_COOKIE['naamcookie'])) // Bestaat er al een cookie?
{
setcookie('naamcookie', $id, time()*86400*7);
$query = "INSERT INTO $tabel (id,datum,ip,remoteHost,pagina,referred) VALUES ('$id','$datum','$ip','$remoteHost','$pagina','$referred')";
mysql_query($query) or die(mysql_error());
}
else // Bestaat de cookie niet, dan...
{
$query2 = "UPDATE $tabel SET pagina = pagina + $pagina WHERE id='".$_COOKIE['naamcookie']."'"; 
mysql_query($query2) or die(msql_error());
}
?>
 
Ja, dat bedoel ik, in een cel alle bezochte pagina's. Maar in de database wordt nu nog steeds elke keer dat een pagina wordt bezocht, een nieuwe id aangemaakt.

Ik heb het iets veranderd, maar het werkt nog steeds niet
PHP:
<?php

include("config.php"); 

mysql_connect("$hostname","$gebruiker","$wachtwoord");
mysql_select_db("$database");

$datum = date("d-m-y - H:i");
$ip = $REMOTE_ADDR;
$remoteHost = gethostbyaddr($REMOTE_ADDR);
$pagina = $REQUEST_URI;
$referred = $HTTP_REFERER;
setcookie('naamcookie', $id, time()*86400*7);
if(!IsSet($_COOKIE['naamcookie'])) // Bestaat er al een cookie?
{
$query2 = "UPDATE $tabel SET pagina = pagina + $pagina WHERE id='".$_COOKIE['naamcookie']."'"; 
mysql_query($query2) or die(msql_error());

}
else // Bestaat de cookie niet, dan...
{
$query = "INSERT INTO $tabel (id,datum,ip,remoteHost,pagina,referred) VALUES ('$id','$datum','$ip','$remoteHost','$pagina','$referred')";
mysql_query($query) or die(mysql_error());

}

?>
 
Laatst bewerkt:
Nou doe je het juist verkeerd om... eigenlijk een foutje van mij...

Als de cookie wél bestaat, moet ie een UPDATE doen. Als die niet bestaat moet ie een INSERT doen.

PHP:
<?
if(!IsSet($_COOKIE['naamcookie'])) // Bestaat de cookie niet, dan...
{
setcookie('naamcookie', $id, time()*86400*7);
$query = "INSERT INTO $tabel (id,datum,ip,remoteHost,pagina,referred) VALUES ('$id','$datum','$ip','$remoteHost','$pagina','$referred')";
mysql_query($query) or die(mysql_error());
}
else // Bestaat de cookie wel, dan...
{
$query2 = "UPDATE $tabel SET pagina = pagina + $pagina WHERE id='".$_COOKIE['naamcookie']."'"; 
mysql_query($query2) or die(msql_error());
}
?>
 
Bedankt Chris, maar het wil maar niet werken. Ik had ook al het een en ander omgekeerd, maar helaas.
 
Nee, ik heb niet op local host geprobeerd, maar op de server.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan