Cookies on this website

This website uses cookies to improve your navigation and technical cookies (info). Browsing this website you accept the cookies usage.

Cookies op deze website

Deze website maakt gebruik van cookies om uw navigatie en website ervaring te verbeteren (info). Door verder te gaan, accepteert u het gebruik van cookies.

OK
 
Foto Hoofdfoto bij artikel "Sommigen proberen de gekste dingen, maar waarom?".

Sommigen proberen de gekste dingen, maar waarom?


De vaste lezers weten het inmiddels wel dat ik iedere dag de fouten-log van de website bekijk om te kijken of alles soepel verloopt en er geen gekke dingen gebeuren. Gebeuren er gekke dingen dan is het meestal het resultaat van een bug, groot of klein, waar naar gekeken moet worden.

Zojuist zag ik weer een hele rits meldingen in de log staan, die me de wenkbrauwen doen fronsen:

[Tue May 06 11:54:02.145011 2025] [proxy_fcgi:error] [pid 449586:tid 449599] [client 185.118.79.221:53323] AH01071: Got error 'PHP message: PHP Warning: A non-numeric value encountered in /multisite/includes/Paginator.php on line 86; PHP message: PHP Warning: A non-numeric value encountered in /multisite/includes/Paginator.php on line 86'

Deze melding heb ik wel vaker voorbij zien komen en ik ben er ook wel in gedoken om te achterhalen waar het nu precies fout gaat. In de betreffende regel (86) wordt alleen een kleine berekening gemaakt. Natuurlijk probeer ik dan zelf in dit geval ook zelf of ik de fout zelf kan veroorzaken, maar mij lukte dat niet. Als je de website op een normale manier gebruikt dan gaat alles goed en is er niks aan de hand.

Wat ik me kan bedenken is dat iemand moedwillig verkeerde waarden aan bepaalde parameters aan een pagina probeert mee te geven in de hoop dat het systeem onderuit gaat. In dit geval wordt er blijkbaar ergens een niet nummerieke waarde meegegeven in plaats van alleen een cijfer.

Helaas voor degene die het probeerde, MultiSite gaat echt niet zo snel onderuit, maar geeft mij wel de nodige meldingen terug in de logs. Ik schrik toch altijd wel van dergelijke meldingen en ban dan echt wel scherp en vraag me af, wat men probeerde te doen, want dat kan ik helaas niet zien. Maar het is aan mij wel de taak om dit nu eindelijk eens aan te gaan pakken, zodat dit soort meldingen tot het verleden behoren.

Dus ik ben wat dieper in de code gaan duiken en zag dat er geen controle werd uitgevoerd of er een nummerieke waarde wordt meegegeven of niet. De code van de paginator heb ik ooit eens van het internet geplukt en naar mijn idee aangepast, zodat ie breed inzetbaar is op de hele website. Het is dus een universele functie, of eigenlijk een class met verschillende functies.

Er werd wel gecontroleerd of een bepaalde variabele is gezet en dus wordt meegegeven, maar er werd niet gekeken naar de inhoud daarvan. Slordigheidje van de originale programmeur of van mij? Dat laat ik maar even in het midden.

Intussen heb ik he stukje van 3 regels code vervangen voor de onderstaande regel:

$this->currentPage = isset($_GET['p']) && is_numeric($_GET['p']) ? (int)trim($_GET['p']) : 1;

Deze regel doet 3 dingen ineens, het checkt of de variabele 'p' aanwezig is en of deze een nummerieke waarde heeft en maakt er een integer van en dat is een nummerieke waarde. Wordt daar niet aan voldaan dan is het standaard antwoord een 1.

Met andere woorden: als men loopt te klooien, zal het antwoord altijd 1 zijn en blijft alles gewoon doorlopen zonder meldingen in de logs. Dus MultiSite is alweer wat beter en robuuster geworden.

Nu kan ik me weer gaan richten op de echte problemen en die zijn er momenteel niet, tenminste niet in de logs. Dus eigenlijk kan ik me nu verder gaan richten om het verder verbeteren van MultiSite door middel van uitbreidingen, zoals de ratings bij de verschillende onderdelen van de website.


 

Foto's bij dit artikel:

Klik op een foto vor een vergroting.
Foto 1 bij artikel "Sommigen proberen de gekste dingen, maar waarom?".

 

Reacties:

Reactie #1 door Richard Sikkes uit Groningen.
Geplaatst Di 6 Mei 2025 - 21:20:57 uur.

Even wat CSS code toegevoegd om de uitvoer van de logs en het regeltje programmacode wat mooer en netter weer te geven.

Zoals dit veld waar deze tekst nu in staat.
Het werkt bijna hetzelfde als een standaard PRE veld, met het verschil dat de tekst nu wel binnen het kader blijft en keurig netjes wordt afgebroken als het buiten het kader dreigt te vallen.

Dit ziet er toch wel vet uit, al zeg ik het zelf.

Plaats een reactie:

Door op de knop "Reactie plaatsen" te drukken, gaat u akkoord met de algemene richtlijnen voor het plaatsen van reacties.
Reacties zullen echter niet direct op deze pagina verschijnen, deze worden eerst beoordeeld door de beheerder.