PHP ver gevorderde |
|
Ik heb een script: Bezoekers (leden en gasten) online. Als ik op de site ben geeft ie alles goed weer, als er iemand bij komt, dan komt die erbij. Als dan iemand vernieuwd, dan komt er een nieuwe gast bij (met hetzelfde ip). En als ik vernieuw (ingelogd), dan sta ik er plots 3 keer op. Script:
sluipwegwijzer.php
<?php
//Mensen die langer dan 5 minuten niets meer hebben gedaan (ze hebben waarschijnlijk de site verlaten) verwijderen
$query = "DELETE FROM `sluipwegwijzer` WHERE `sinds` < ".(time()-300);
$result = mysql_query($query) or die(mysql_error());
//Checken of er ingelogd is voor de input
if(isset($_COOKIE['id']) && isset($_COOKIE['gebruikersnaam']) && isset($_COOKIE['hash']))
{
$query2 = "SELECT `status`, `sluip_verborg`, `sluip_verborg_pag` FROM `leden` WHERE `id`='".$_COOKIE['id']."'";
$result2 = mysql_query($query2) or die(mysql_error());
$fetch2 = mysql_fetch_array($result2);
if($fetch2['sluip_verborg'] == "ja")
{
$lid = "Verborgen lid";
}
else
{
$lid = $_COOKIE['gebruikersnaam'];
}
if($fetch2['sluip_verborg_pag'] == "ja")
{
$pagina = "Verborgen";
}
else
{
$pagina = $pagina2;
}
$lidid = $_COOKIE['id'];
$status = $fetch2['status'];
$sorteer = 1;
}
else
{
$lidid = "";
$pagina = $pagina2;
$lid = "Gast";
$status = "";
$sorteer = 0;
}
//Tellen hoeveel keer dit ip al in de DB staat
$query3 = "SELECT COUNT(`lid`) FROM `sluipwegwijzer` WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."'";
$result3 = mysql_query($query3) or die(mysql_error());
$mysql_result3 = mysql_result($result3,0);
//Als deze persoon nog niet in de DB staat, hem erin zetten
if($mysql_result3 == 0)
{
$query4 = "INSERT INTO `sluipwegwijzer`(`lidid`, `lid`,`pagina`,`url`,`sinds`,`ip`, `status`, `sorteer`) VALUES('".$lidid."', '".$lid."', '".$pagina."', 'http://".$_SERVER['HTTP_HOST']."".$_SERVER['REQUEST_URI']."', '".time()."', '".$_SERVER['REMOTE_ADDR']."', '".$status."', '".$sorteer."')";
$result4 = mysql_query($query4) or die(mysql_error());
}
//Anders staat de persoon er wel in en updaten we zijn gegevens
else
{
$query4 = "UPDATE `sluipwegwijzer` SET `lidid`='".$lidid."', `lid` = '".$lid."', `pagina` = '".$pagina."', `url` = 'http://".$_SERVER['HTTP_HOST']."".$_SERVER['REQUEST_URI']."', `sinds`='".time()."', `ip` = '".$_SERVER['REMOTE_ADDR']."', `status`='".$status."', `sorteer`='".$sorteer."'";
$result4 = mysql_query($query4) or die(mysql_error());
}
?>
<?php //Mensen die langer dan 5 minuten niets meer hebben gedaan (ze hebben waarschijnlijk de site verlaten) verwijderen $query = "DELETE FROM `sluipwegwijzer` WHERE `sinds` < ".(time()-300); //Checken of er ingelogd is voor de input if(isset($_COOKIE['id']) && isset($_COOKIE['gebruikersnaam']) && isset($_COOKIE['hash'])) { $query2 = "SELECT `status`, `sluip_verborg`, `sluip_verborg_pag` FROM `leden` WHERE `id`='".$_COOKIE['id']."'"; if($fetch2['sluip_verborg'] == "ja") { $lid = "Verborgen lid"; } else { $lid = $_COOKIE['gebruikersnaam']; } if($fetch2['sluip_verborg_pag'] == "ja") { $pagina = "Verborgen"; } else { $pagina = $pagina2; } $lidid = $_COOKIE['id']; $status = $fetch2['status']; $sorteer = 1; } else { $lidid = ""; $pagina = $pagina2; $lid = "Gast"; $status = ""; $sorteer = 0; } //Tellen hoeveel keer dit ip al in de DB staat $query3 = "SELECT COUNT(`lid`) FROM `sluipwegwijzer` WHERE `ip` = '".$_SERVER['REMOTE_ADDR']."'"; //Als deze persoon nog niet in de DB staat, hem erin zetten if($mysql_result3 == 0) { $query4 = "INSERT INTO `sluipwegwijzer`(`lidid`, `lid`,`pagina`,`url`,`sinds`,`ip`, `status`, `sorteer`) VALUES('".$lidid."', '".$lid."', '".$pagina."', 'http://".$_SERVER['HTTP_HOST']."".$_SERVER['REQUEST_URI']."', '".time()."', '".$_SERVER['REMOTE_ADDR']."', '".$status."', '".$sorteer."')"; } //Anders staat de persoon er wel in en updaten we zijn gegevens else { $query4 = "UPDATE `sluipwegwijzer` SET `lidid`='".$lidid."', `lid` = '".$lid."', `pagina` = '".$pagina."', `url` = 'http://".$_SERVER['HTTP_HOST']."".$_SERVER['REQUEST_URI']."', `sinds`='".time()."', `ip` = '".$_SERVER['REMOTE_ADDR']."', `status`='".$status."', `sorteer`='".$sorteer."'"; } ?>
En ik pas het zo toe, op elke pagina staat dit dus:
<?php
$pagina2 = "Home";
require_once($_SERVER['DOCUMENT_ROOT']."/includes/sluipwegwijzer.php");
?>
<?php $pagina2 = "Home"; require_once($_SERVER['DOCUMENT_ROOT']."/includes/sluipwegwijzer.php"); ?>
Normaal kan er toch niet 2 keer hetzelfde ip voorkomen? Waarom gebeurt dit toch? En waarom komt er zoveel keer hetzelfde op de weergeef pagina van de inhoud?
|