We hebben op de site een aantal onderwerpen die niet meer werken, https://www.vwltclub.nl/waar.php en http://www.vwltclub.nl/wiki/. Dit zou komen omdat het forum op PHP 7.0 werkt en deze onderwerpen op 5.6. Van een collega club uit Duitsland heb ik een stukje script gekregen om er tussen te plakken. Helaas het werkt niet. De uitleg heb ik vertaald.

Voor de kaart gebruik je hetzelfde programma als wij in het LT forum.
Dit programma werkt alleen tot PHP versie 5.6.
U kunt controleren welke PHP-versie op uw website draait.
Het werkt niet vanaf 7.0.
Als PHP5.6 nog beschikbaar is op uw website, kunt u het dwingen op 5.6 te draaien door een vermelding te maken in het .htaccess-bestand.

De invoer ziet er ongeveer zo uit:[/i]]FilesMatch \.php>
# Apache 2.4.10+ can proxy to unix socket
SetHandler "proxy:unix:/var/run/php/php5.6-fpm.sock|fcgi://localhost/"
</FilesMatch>>

En nu loop ik vast, plak ik de code ertussen, is het hele forum van slag.

Wie heeft een oplossing?
Alvast bedankt
Aart
Nu alleen nog een error voor de "m"
Warning: Undefined array key "m" in /home/janus/domains/zonstraal.be/public_html/landkaart/index.php on line 129

en
Warning: Undefined array key "m" in /home/janus/domains/zonstraal.be/public_html/landkaart/inc/map.func.php on line 87

En

in de index.php
// Karte zeichnen ( standard Aktion )
else {
	require_once('inc/map.func.php');
	echo '<div id="map"><div id="inf"></div>';
	$p=getPoints((int)$_GET['m']);
	generatePoints($p);
	echo '</div>';
}


op en rond regel 87 van map.func.php staat
	// Größe des Punktes ( css-class) anhand der Anzahl der User auf diesem Punkt festlegen
	foreach($GLOBALS['UserCountClass'] as $dCount => $dClass) {
		if($usercount > $dCount || $_GET['m'])
			$cssClass = $dClass;
	}


En in de index.php
// Karte zeichnen ( standard Aktion )
else {
	require_once('inc/map.func.php');
	echo '<div id="map"><div id="inf"></div>';
	$p=getPoints((int)$_GET['m']);
	generatePoints($p);
	echo '</div>';
}
Ook isset() gebruiken. En ook om die functie aanroepen.
om in zo'n aanroep als
$p=getPoints((int)$_GET['m']);

isset() te gebruiken, is lastig.

Je zou daar kunnen gaan voor:
<?php
$p=getPoints((int)$_GET['m'] ?? null);
?>
(mits je een beetje recenten PHP gebruikt)

of

<?php
$p=getPoints( filter_input(INPUT_GET, 'm', FILTER_SANITIZE_NUMBER_INT) );
?>
Wat eigenlijk mijn favoriet is, omdat je daar (ook al in oudere PHP versies) afvangt dat een parameter niet meegegeven kan zijn, en dat je ook kunt corrigeren voor foute invoer ( 123A123, xxx0123, misvormde emailadressen etc).
Dergelijke foute invoer kun je ipv opschonen (sanitize) ook afkeuren met een VALIDATE filter.

https://www.php.net/filter-input
https://www.php.net/manual/en/filter.filters.sanitize.php
https://www.php.net/manual/en/filter.filters.validate.php
De error in de map.func.php is weg met Ivo zijn oplossing nu die in de index.php nog.
Inmiddels komen ook de woonplaatsen van de leden op de kaart te staan :-)
Ik denk dat dat nu wel een eitje is. ;-)
Voor jouw wel, dat geloof ik best maar ik moet elk antwoord van jullie 5x lezen voor ik het een beetje snap.
En dan de juiste pagina en regel vinden en hopen dat het klopt.

[size=xsmall]Toevoeging op 02/03/2022 23:35:53:[/size]

Oke de fout met de m er ook uitgehaald :-)
Zie je hoe makkelijk het is ;-)
Lol maar er zijn nog een aantal waarschuwingen en errors.
+ waarom blijft die tekst in beeld
SELECT u.name, g.lon, g.lat, g.ort FROM lms_user u LEFT JOIN lms_geodb g ON u.geoid = g.id WHERE 1 


Fatal error: Uncaught ArgumentCountError: mysqli_real_escape_string() expects exactly 2 arguments, 1 given in /home/janus/domains/zonstraal.be/public_html/landkaart/inc/map.func.php:31 Stack trace: #0 /home/janus/domains/zonstraal.be/public_html/landkaart/inc/map.func.php(31): mysqli_real_escape_string() #1 /home/janus/domains/zonstraal.be/public_html/landkaart/index.php(129): getPoints() #2 {main} thrown in /home/janus/domains/zonstraal.be/public_html/landkaart/inc/map.func.php on line 31


Ik denk dat je het nu wel kan vertalen:

mysqli_real_escape_string() expects exactly 2 arguments, 1 given

mysqli_real_escape_string() verwacht precies 2 argumenten, waarvan er ééntje is gegeven.

Ik geloof dat deze melding hier al behandeld is.
Good luck :-)

Loop elke regel door, en kijk in php.net/HIERDEFUNCTIENAAM om te zien wat het doet.
Daar leer je van :-)

Reageren