PHP functie eenmalig aanroepen via Javascript

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Thomas van den Heuvel

Thomas van den Heuvel

27/08/2020 14:28:01
Quote Anchor link
@Ozzie dat neemt niet weg dat je de vragensteller aan de tand mag voelen om een gevoel te krijgen of de persoon in kwestie snapt waar 'ie mee bezig is, over bepaalde zaken heeft nagedacht en ook een idee heeft waar 'ie nou eigenlijk naartoe aan het borduren is. Geen van deze zaken worden eigenlijk duidelijk. Waarom zou je (PHP-)sessies gebruiken voor het tellen van (unieke) bezoekers / pagina-bezoeken? En hoe zou dat er dan uit moeten zien? Joost mag het weten.

Je zou op zijn minst een soort van plan moeten hebben wat je gaat doen of hoopt te bereiken; hoe je dat implementeert is een tweede. Wat is dus precies het plan?

Natuurlijk kun je je niet overal tegen indekken, dat suggereer ik volgens mij ook nergens. Het enige wat ik probeer te doen is een bewustzijn creëren van dingen waar je mogelijk mee te maken kunt krijgen. Of en wat je hier eventueel mee kunt of wilt doen staat hier verder helemaal los van. Je zou het wel in je besluitvorming mee moeten nemen bij de vormgeving van je oplossing.
 
PHP hulp

PHP hulp

27/12/2024 00:07:06
 
Guido  -

Guido -

27/08/2020 15:31:01
Quote Anchor link
@Ozzie PHP

Goed punt, WordPress werkt met pagina IDs dus ik zal er een prefix aan toevoegen zodat de naam van de sessie in het voorbeeld "page-600" wordt.

Het werkt nu op zich goed, als ik meerdere pagina's aanklik wordt er keurig een nieuwe sessienaam aangemaakt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
array(4) { ["page-616"]=> bool(true) ["page-597"]=> bool(true) ["page-592"]=> bool(true) ["page-603"]=> bool(true) }


Volgende stap is de cookie niet direct sluiten als scherm gesloten wordt.

Guido
Gewijzigd op 27/08/2020 15:31:41 door Guido -
 
Thomas van den Heuvel

Thomas van den Heuvel

27/08/2020 15:34:25
Quote Anchor link
Waarom geen subarray "pages"? Moet je op een zeker moment een page-xyz index weer demonteren om hier xyz uit te halen? Bij het aan elkaar plakken van informatie wordt het lastiger om deze informatie rechtstreeks te gebruiken.
 
Ozzie PHP

Ozzie PHP

27/08/2020 16:25:35
Quote Anchor link
@Thomas

>> @Ozzie dat neemt niet weg dat je de vragensteller aan de tand mag voelen ...

Ja, van mij mag je hoor. Alleen ging het in dit specifieke geval om vrij algemene "wat als" situaties.

@Guido

Thomas heeft wel een punt wat betreft het gebruik van een array. Nu zijn het allemaal losse 'entries', terwijl dit informatie is die bij elkaar hoort.

Als je de array dan $visited_pages noemt dan is gelijk duidelijk wat er in zit. Je hoeft dan ook alleen maar de id op te slaan en niet een boolean.
 
Guido  -

Guido -

27/08/2020 16:44:59
Quote Anchor link
Hallo,

@Thomas
Ik begrijp je kritische houding. Ik ben zeker niet heel deskundig op dit gebied, daarom vraag ik support op dit forum, en ben blij met jullie hulp. Ik heb een WordPress website en wil daar een simpele teller op hebben, die globaal bij gaat houden hoe vaak een pagina bezocht wordt, that's it. Wil geen bloated freemium plugin. En ik vind het juiste leuk om zelf iets te maken, en te begrijpen hoe het werkt. Dat doe ik nu.


@Ozzie PHP
Wat de array betreft, dat was een var dump van de sessie, om te kijken of het werkt.
Iedere pagina genereert dus een nieuwe sessie-variabele.
 
Ozzie PHP

Ozzie PHP

27/08/2020 17:07:56
Quote Anchor link
@Guido

>> Iedere pagina genereert dus een nieuwe sessie-variabele.

Yes ... en beter kun je dus 1 sessie-variabele aanmaken waarin je alle waardes opslaat :-)
Dit in plaats van voor iedere pagina een aparte variabele aanmaken.

Snap je het verschil?
 
Thomas van den Heuvel

Thomas van den Heuvel

27/08/2020 17:33:10
Quote Anchor link
Maar een PHP-sessie ($_SESSION) heeft een beperkte levensduur. Deze is dus niet echt geschikt om hierin over een langere periode / meerdere bezoeken informatie in bij te houden. Als je deze niet ergens anders opslaat (voor statistiek of wat dan ook?) dan gaat deze informatie tussentijds verloren.
 
Ozzie PHP

Ozzie PHP

27/08/2020 17:49:51
Quote Anchor link
@Thomas

Dat hangt dus een beetje er vanaf wat je als een 'bezoek' beschouwt. Meestal wordt een browsersessie als 1 bezoek geteld. Dus als je 's ochtends en 's avonds de site bezoekt, dan zijn dat 2 bezoeken.

Hoe zou je het anders willen doen? Per dag?
 
Thomas van den Heuvel

Thomas van den Heuvel

27/08/2020 19:10:26
Quote Anchor link
Maar waar wordt deze informatie elders vastgelegd? Tenzij je alleen van jezelf ziet welke pagina's je hebt bezocht en je verder helemaal geen historie wilt bijhouden? Dat is nou niet echt wat ik versta onder een "bezoekersteller".
 
Ward van der Put
Moderator

Ward van der Put

27/08/2020 19:31:59
Quote Anchor link
Ongeacht of het om bezoekers of bezoeken gaat: waarom zou je een omweg maken via een JavaScript-callback als het ook in de front controller kan?

Als je weet hoe WordPress wordt geladen, kun je alles meten:

https://github.com/WordPress/WordPress/blob/master/index.php
 
Ozzie PHP

Ozzie PHP

27/08/2020 22:06:39
Quote Anchor link
@Thomas

>> Maar waar wordt deze informatie elders vastgelegd?

Ik neem aan dat dit slechts een stukje van de code is en dat het daadwerkelijke aantal in de database wordt opgeslagen.

@Ward

Wat bedoel je precies te zeggen? Heeft WordPress al een ingebouwde functionaliteit om paginabezoeken te tellen?
 
Guido  -

Guido -

28/08/2020 00:12:17
Quote Anchor link
Ik sla de value (het aantal views) per pagina/bericht op in een tabel, middels de WordPress functie update_post_meta().

Nogmaals, het is een simpele teller. Ik doe er verder niets mee. Naast het gebruik van een sessie sluit ik ingelogde gebruikers uit (dat kan wel middels een WordPress functie).
Ja, er zijn plugins die het vast beter doen, maar die zijn vaak bloated en hebben features die ik niet gebruik.

Guido
 
Thomas van den Heuvel

Thomas van den Heuvel

28/08/2020 16:54:10
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
// start hier ergens je sessie
// ...


$currentPage = function_for_getting_current_page_id(); // bepaal huidige pagina

if (false === isset($_SESSION['pages'][$currentPage])) {
    // tel pagina op een of andere manier
    // ...

    // voeg pagina toe aan $_SESSION

    $_SESSION['pages'][$currentPage] = true;
}

?>

Dat is alles?
 
Ozzie PHP

Ozzie PHP

28/08/2020 17:05:21
Quote Anchor link
>> if (false === isset($_SESSION['pages'][$currentPage]))

Ik doe gewoon zo :)

if (!isset($_SESSION['pages'][$currentPage]))
 
- Ariën  -
Beheerder

- Ariën -

28/08/2020 19:03:55
Quote Anchor link
Kan ook, maar de 'Yoda'-techniek . het leest veel lekkerder, volgens sommige ontwikkelaars, en zorgt ervoor dat je oplettender bent bij programmeren.

Check de voorbeelden in de link maar ;-)
Gewijzigd op 28/08/2020 19:04:05 door - Ariën -
 
Ozzie PHP

Ozzie PHP

28/08/2020 20:25:57
Quote Anchor link
>> het leest veel lekkerder

Ik vind het juist raar lezen ... maar zal wel een persoonlijk dingetje zijn :)
 
Thomas van den Heuvel

Thomas van den Heuvel

28/08/2020 21:29:34
Quote Anchor link
Een ! -de negatie-operator- zie je nog wel eens over het hoofd. En als je deze weg kunt laten, dus als je bijvoorbeeld zoiets hebt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if (!A) {
    B
} else {
    C
}

Dan kun je het omdraaien zodat je niet eens een ! hoeft te gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if (A) {
    C
} else {
    B
}

Als je een ! op een of andere manier kunt weglaten leest dat doorgaans prettiger.
 
Ozzie PHP

Ozzie PHP

28/08/2020 22:27:59
Quote Anchor link
>> Als je een ! op een of andere manier kunt weglaten leest dat doorgaans prettiger.

Wat ik al zeg ... dat is dan iets persoonlijks. Ik vind dat 'omgekeerde' juist minder prettig om te lezen.
 
Thomas van den Heuvel

Thomas van den Heuvel

29/08/2020 00:55:40
Quote Anchor link
Ozzie PHP op 28/08/2020 22:27:59:
Wat ik al zeg ... dat is dan iets persoonlijks. Ik vind dat 'omgekeerde' juist minder prettig om te lezen.

Dan vorm je wellicht de uitzondering op de regel en ben je waarschijnlijk de enige die nooit over een ! heen heeft gelezen in code.

Een regel met false === of het omkeren van de codeblokken om zo maar het gebruik van de negatie-operator te voorkomen zorgt er waarschijnlijk vaker voor dat je code in 1x goed leest dan wanneer je een ! gebruikt. Hiermee ga je leesfouten uit de weg, wat mij een goede gewoonte lijkt en daarmee het niveau van persoonlijke voorkeur ontstijgt (het dient een groter doel dan enkel jezelf te plezieren met dit soort constructies).

Ik kan mij ook heel goed voorstellen dat dit soort dingen worden vastgelegd in codeconventies. Al leest dit niet altijd voor iedereen even prettig, het heeft nog steeds tot doel om code minder foutgevoelig en kwalitatief beter te maken.

Ik heb het trouwens ook niet zozeer over deze "eenvoudige" gevallen, maar als je je bedient van dit soort praktijken zet je gewoon de deur open voor meer ellende. Denk bijvoorbeeld aan wat minder triviale voorbeelden waarbij je een soort "dubbele ontkenning" krijgt in de vorm van een Boolse variabele in combinatie met de negatie-operator, bijvoorbeeld: !$doorClosed. Dit ontwerp mondt uiteindelijk uit in slechter leesbare code die een stuk minder intuïtief is dan bijvoorbeeld $doorOpen.

Stop je vervolgens meerdere van dit soort constructies in een predikaat (Bools statement) en strooi je hier wat && en || overheen dan moet je op een gegeven moment een waarheidstabel gaan uitschrijven om uit te vinden wanneer het statement tot true evalueert en of vervolgens het ene of het andere codeblok wordt uitgevoerd. Dit zul je waarschijnlijk toch/ook moeten doen wanneer je deze code niet geschreven hebt en je het werk van iemand anders aan het debuggen bent. En dan kom je misschien na lange tijd erachter dat er één randgeval was die niet klopte waardoor alles in de soep liep...

Dit soort constructies met ongelukkig gekozen Boolse variabelen (of liever gezegd "ontkenningsvariabelen") in combinatie met negatie-operatoren leveren uitsluitend hoofdpijn op. Maar dit begint dus met het vrijelijk strooien met de negatie-operator. Het stuurt je van begins af aan eigenlijk al het verkeerde pad op.

Je bent natuurlijk vrij om dit niet te doen maar het lijkt mij gewoon makkelijker om dit uberhaupt uit de weg te gaan, dan loop je hier ook nooit tegenaan. Maar misschien moet je dat eerst wel doen voordat dit inzicht ontstaat. Wanneer je ergens geen "last" van hebt is er meestal geen stimulans om iets te veranderen.
Gewijzigd op 29/08/2020 00:59:40 door Thomas van den Heuvel
 
Ozzie PHP

Ozzie PHP

29/08/2020 01:13:24
Quote Anchor link
Ik snap wel wat je bedoelt, maar ik ben gewend om van links naar rechts te lezen. In m'n hoofd maak ik (voor mij) logische zinnen.

Ik lees dus heel gemakkelijk:

Als xxx niet waar is, dan ...

En hier struikel is:

Als niet waar gelijk is aan xxx, dan ...

Dat moet ik dan als het ware eerst 'vertalen'.

Voor mij klinkt 'als Jantje niet thuis is, dan ...' een stuk logischer dan 'als niet thuis gelijk is aan Jantje, dan ...'.

Maar goed ... ieder z'n voorkeur natuurlijk :)
 

Pagina: « vorige 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.