advertentie

Dit forum is niet langer actief. Voor vragen kun je voortaan terecht in de Vraag & Antwoord-rubriek van PCMweb.nl

 
Oud 9 February 2010, 00:13   #1
bee_c4
PCM Lord
 
bee_c4's schermafbeelding
 
Geregistreerd: 5 December 2006
Locatie: -
Berichten: 1.124
Standaard php $_cookie

ik ben bezig met een bezoekers teller zelf geschreven in php
maar tekens als je naar een nieuwe pagina gaat blijft : "je bebezocht deze pagina $bezoeken keer" gewoon doortellen, de teller zelf werkt wel gewoon.
er moet dus voor elke pagina een aparte cookie komen
ik ben nogal verward met wel/niet plaatsen van variablen in $_cookie
PHP-code:

$pagina 
"index.php";// deze variable is voor elke pagina anders en is als record in de database geplaatst
$ip $_SERVER['REMOTE_ADDR']; 
$adres substr($ip715); 
$thuis substr($ip77); 

//een teller, de  "core"
$verbind mysql_connect('localhost''iets''dagaje-nixan') or die('Could not connect: ' mysql_error()); 
mysql_select_db('nikstezienhoor'); 
$lol mysql_query("SELECT * FROM teller  WHERE Bestandsnaam = '$pagina' "); 

$row mysql_fetch_array($lol); 
$bestandsnaam $row['Bestandsnaam']; 
$admin $row['Admin']; 
$bezoekers $row['Bezoekers']; 
$reloads $row['Reloads'];   

if (
$adres == '86.83.216.90' || $adres == '127.0.0.1'  || $thuis == '192.168') { 
//admin+1 
$tadmin $admin 1

mysql_query("UPDATE teller SET Admin = '$tadmin
WHERE Bestandsnaam = '
$pagina'"); 

if (isset(
$_COOKIE["geweest"])) { 
$bezoeken =  $_COOKIE["geweest"]; 
$bezoeken $bezoeken 1
setcookie("geweest""$bezoeken"); 
$treloads $reloads 1;}
if (!isset(
$_COOKIE["geweest"])) { 
$bezoeken 1
setcookie("geweest""$bezoeken"); 
$tbezoekers $bezoekers 1;  
}}
 
else { 

 
if (isset(
$_COOKIE["geweest"])) { 
$bezoeken =  $_COOKIE["geweest"]; 
$bezoeken $bezoeken 1
setcookie("geweest""$bezoeken"); 
$treloads $reloads 1;  

mysql_query("UPDATE teller SET Reloads = '$treloads
WHERE Bestandsnaam = '
$pagina'"); 


 

if (!isset(
$_COOKIE["geweest"])) { 
$bezoeken 1
setcookie("geweest""$bezoeken"); 
$tbezoekers $bezoekers 1;  

mysql_query("UPDATE teller SET Bezoekers = '$tbezoekers
WHERE Bestandsnaam = '
$pagina'"); 
}}   
mysql_close($verbind);

echo 
"<!--administrator: $admin --> 
<!--bezoekers: 
$bezoekers --> 
<!--reloads: 
$reloads --> 
<!--je bezocht deze pagina: 
$bezoeken keer --> 
"


Laatst gewijzigd door bee_c4 : 9 February 2010 om 00:33
bee_c4 is offline   Met citaat antwoorden
Oud 9 February 2010, 13:33   #2
dennislutz
Just Joined!
 
Geregistreerd: 9 February 2010
Berichten: 1
Standaard

Hoi. Er zijn een paar dingen waar je rekening mee moet houden.
Je checkt isset($_COOKIE["geweest"]) . (dat doe je trouwens 2 x, waarom?)
Als daar 0 in staat of een lege string, geeft die altijd true terug.

Verder doe je ;
setcookie("geweest", "$bezoeken"); daarmee zet je de string $bezoeken in je cookie in plaats van de waarde van deze variabele.
setcookie("geweest", $bezoeken); gaat beter.

Misschien is het in jouw geval handiger om met $_SESSION te werken en de database bewerking te doen als de sessie start.

succes
Dennis
dennislutz is offline   Met citaat antwoorden
Oud 9 February 2010, 19:44   #3
bee_c4
PCM Lord
 
bee_c4's schermafbeelding
 
Geregistreerd: 5 December 2006
Locatie: -
Berichten: 1.124
Standaard

bedankt voor je reactie,
ik zijn soms wat eigenaardigheden en het is niet efficient, dat geef ik toe.
maar een programma is nooit af en er kan altijd wel wat verbeterd worden,
ik ben gewoon geen pro en weet niets van object gebaseerd programeren.

ik kon kiezen tussen
setcookie
("$pagina", "$bezoeken");
setcookie($pagina, "$bezoeken");
setcookie("$pagina", $bezoeken);
setcookie($pagina, $bezoeken);het is dus: setcookie("geweest", $bezoeken) nog maals heel erg bedankt
ik moet dus setcookie($pagina, $bezoeken); gebruiken


en over session(), ik wil dat nog eens leren.
door cookies en de database gaat de processing tijd VER omhoog (van 0.000280 seconde tot 0.004000 seconde) niet wenselijk dus
__________________
vind mij @ tweakers.net
bee_c4 is offline   Met citaat antwoorden
Oud 10 February 2010, 16:25   #4
gvanvoor
PCM Lord
 
gvanvoor's schermafbeelding
 
Geregistreerd: 26 January 2006
Locatie: De gezelligste stad ter wereld: Gent
Berichten: 928
Standaard

Een effici?ntere manier is inderdaad in een sessie bij te houden welke pagina's een bezoeker reeds heeft bezocht. Op die manier moet je minder database connecties maken (in principe enkel bij het initialiseren van de sessie en wanneer de bezoeker daarna een nieuwe pagina bezoekt)
BTW je kan de db ook updaten zonder de waarde eerst afzonderlijk op te vragen (dat spaart je ook een query uit):
PHP-code:
mysql_query("UPDATE teller SET teller = teller+1 
WHERE Bestandsnaam = '
$pagina'"); 
__________________
If you want to work on your computer: buy a PC. If you want to do work on your computer: buy a Mac.
gvanvoor is offline   Met citaat antwoorden
Oud 10 February 2010, 23:19   #5
bee_c4
PCM Lord
 
bee_c4's schermafbeelding
 
Geregistreerd: 5 December 2006
Locatie: -
Berichten: 1.124
Standaard

bedankt voor jullie hulp,
ik heb nu het programma werken en dat is in iedergeval mijn doel.
nu nog veel efficienter maken.
kan bijv de mysql query doen als de pagina al verzonden is?
__________________
vind mij @ tweakers.net
bee_c4 is offline   Met citaat antwoorden
Oud 14 April 2010, 23:47   #6
bee_c4
PCM Lord
 
bee_c4's schermafbeelding
 
Geregistreerd: 5 December 2006
Locatie: -
Berichten: 1.124
Standaard

ik zit (alweer) in de problemen,
met mijn scriptje.
het wekt goed maar als mensen cookies uitschakelen kunnen ze alsnog de f5 toets spammen,(en mijnbezoerteller dus ook teller dus ook)

mijn doel is alleen een update query "bezoekers+1" als je cookies aan hebt staan, alle andere bezoeken moeten dan "reloads+1" worden.

PHP-code:
$pagina "verzinietsleuks.php"//op iedere pagina anders
$ip $_SERVER['REMOTE_ADDR']; 
$rest substr($pagina0,-4); 
$adres substr($ip715); 
$thuis substr($ip77); 

//een teller, maar werk nog niet naar behoren zie phptest.php voor hoe het moet 
$verbind mysql_connect('localhost') or die('Could not connect: ' mysql_error()); 
mysql_select_db('verzinmaariets'); 

if (
$adres == '86.83.216.90'  || $thuis == '192.168') { 

mysql_query("UPDATE teller SET Admin = Admin+1 
WHERE Bestandsnaam = '
$pagina'");  

if (isset(
$_COOKIE["$rest"])) { 
$bezoeken =  $_COOKIE["$rest"]; 
$bezoeken $bezoeken 1
setcookie($rest$bezoeken); 
$treloads $reloads 1;} 
if (!isset(
$_COOKIE["$rest"])) { 
$bezoeken 1
setcookie($rest$bezoeken); 
$tbezoekers $bezoekers 1;  
}} 

else { 

 
if (isset(
$_COOKIE["$rest"])) { 
$bezoeken =  $_COOKIE["$rest"]; 
$bezoeken $bezoeken 1
setcookie($rest$bezoeken); 

mysql_query("UPDATE teller SET Reloads = Reloads+1 
WHERE Bestandsnaam = '
$pagina'"); 


if (!isset(
$_COOKIE["$rest"])) { 
$bezoeken 1
setcookie($rest$bezoeken); 

mysql_query("UPDATE teller SET Bezoekers = Bezoekers+1 
WHERE Bestandsnaam = '
$pagina'"); 
}}   
mysql_close($verbind); 
//einde teller 
kan ik ook gebruik maken van SESSION?
__________________
vind mij @ tweakers.net

Laatst gewijzigd door bee_c4 : 14 April 2010 om 23:49
bee_c4 is offline   Met citaat antwoorden
Oud 15 April 2010, 17:39   #7
gvanvoor
PCM Lord
 
gvanvoor's schermafbeelding
 
Geregistreerd: 26 January 2006
Locatie: De gezelligste stad ter wereld: Gent
Berichten: 928
Standaard

Een sessie kan inderdaad ook werken zonder cookies, dan wordt ofwel gebruik gemaakt van verborgen velden in formulieren of wordt er een sessie id aan de URL toegevoegd (?SESSION_ID=.... of toch iets in die aard).

Een alternatief bestaat er in gebruiker en IP adres aan elkaar te linken. Door gebruik te maken van een afzonderlijke tabel waarin je ip adres en sessie id bewaart kan je dan het een in het ander vertalen. Je moet er dan wel zelf voor zorgen dat de ip adressen op geregelde tijdstippen (bijv. na 3600seconden inactiviteit, dan heb je wel een extra kolom nodig om het tijdstip van de laatste toegang bij te houden).
__________________
If you want to work on your computer: buy a PC. If you want to do work on your computer: buy a Mac.
gvanvoor is offline   Met citaat antwoorden
Antwoord


Discussietools
Weergave

Regels voor berichten
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Forumnavigatie


Alle tijden zijn GMT +1. Het is nu 11:54.



Powered by vBulletin Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Nederlandse vBulletin-vertaling door Alacer beschikbaar gesteld door Applinet.