Beste allemaal,

Ik zou graag eens een probleempje (uitdaging) bij jullie neerleggen.

Ik krijg een notice:
Undefined variable: context op Regel: 1788


Op deze regel begint het volgende stukje code:
if (!$spider_match || $context['user']['is_guest'])
is_not_guest();


Nu denk ik dat ik dit kan oplossen met isset. Het probleem echter is dat ik geen PHP held ben die precies weet hoe hij dit kan toepassen binnen dit stukje code.

Ik hoop dat jullie mij kunnen helpen.

Bij voorbaat dank!

Hij herkent de $context niet, weet je zeker dat je die hiervoor hebt gedefinieerd en je kan deze inderdaad checken door isset dat doe je zo:

<?php
if(isset($context)){
//$context is geset dus ga door
}
else{
//$context word niet herkend dus foutmelding
}
?>
<?php if (!empty($modSettings['enabled_spider']))
{
$enabled_spider = explode(",", preg_replace("/(\[^a-ZA-Z0-9,])/", "", $modSettings['enabled_spider']));




		foreach ($enabled_spider as $key => $value)
		if (empty($value))
		unset($enabled_spider[$key]);
}
else
$enabled_spider = array();
$spider_match = false;

	if (!empty($modSettings['enable_spiderAccess']))
	{


	
		foreach($enabled_spider as $spider)
		{
			preg_match('/' . $spider . '/', $_SERVER['HTTP_USER_AGENT'], $matches);
		
		

			if(count($matches) > 0)

			  $spider_match = true;


		

		}

	}

		if (!$spider_match || $context['user']['is_guest'])
			is_not_guest(); ?>


Dit is het stuk code waar het om gaat.
Wat ik niet helemaal snap is, ik definieer $context bovenin het document (global).
zou je alsjeblieft alleen even de code willen plaatsen die relevant is ?
niemand hier heeft zin om 1443 regels aan code door te spitten.
Excuses :) Het is aangepast.

[size=xsmall]Toevoeging op 24/01/2011 14:05:43:[/size]

Het is gelukt! :) Hartelijk dank!
Een notice is geen error; een notice is ook geen warning.
Vertaal eens dat woord; het betekent iets als "merk op".

Wat php jou probeert te vertellen:

Jij vraagt:
is $context['user']['is_guest'] gelijk aan true?

Nu, als $context niet gedefinieerd is, en dus niet bestaat, bestaat $context['user'] ook niet en $context['user']['is_guest'] zeker niet.


Vergelijk het wat met iemand die vraagt: "Wie is de onderdirecteur van Duff beer?"
Dan denk je: "Duff" bestaat niet eens, dus er is sowieso ook geen directeur. Laat staan dar er een onderdirecteur zou kunnen zijn.

Oplossing:
1) met isset() of empty().

<?php
...
if (!$spider_match || (!empty($context['user']['is_guest']) && $context['user']) ['is_guest']) )
...
?>

2)zet je error reporting wat soepeler, op bv.
error_reporting(E_ERROR | E_WARNING | E_PARSE);

Reageren