Icnlude Probleme

xeno

Moderator
Mitarbeiter
hoi ...

ich steh irgendwie super auf'm schlauch. seit gestern funktioniert der include befehl auf meiner seite net mehr. ich erklärs mal:

ich ruf über eine navigation einen link auf der zb. "index.php?actionbd=bilder.php" heisst.
die include routine sieht folgendermassen aus:
<?php
if(!isset($actionbd)) $actionbd="news.php";
$invalide = array('/','/\/',':');
$actionbd = str_replace($invalide,' ',$actionbd);
include($actionbd);
?>

er öffnet einfach die seite nicht sonder bleibt immer auf news.php.
hab dann mal zum testen die isset zeile rausgenommen. normalerweise spuckt der dann nen fehler aus, denn $actionbd ist beim ersten aufruf ja "nichts". bei einem klick auf einen der links sagt er mir aber dann einen fehler weil $actionbd noch immer NICHTS ist ... also ''.

hat jemand ne idee warum der die action nicht mehr überträgt?

hab noch ne andere seite auf dem server bei der's wunderbar klappt.
also ich steh echt auf'm schlauch :rolleyes:
 
so? ungetestet.

PHP:
if(!isset($_GET['actionbd'])) {
$actionbd="news.php"; 
}else{
$invalide = array('/','/\/',':');
$actionbd = str_replace($invalide,' ',$actionbd);
}
include($actonbd);
 
Woher soll denn $actionbd auch einen Wert bekommen? Register Globals aktiviert??


Und vllt. mal das probieren:
PHP:
<?php
$actionbd=""; // ansonsten wird die Variable möglicherweise nur lokal in der if-Bedingung deklariert!!
if(!(isset($actionbd)))
{
   $actionbd="news.php";
}

$invalide = array('/','/\/',':');
$actionbd = str_replace($invalide,' ',$actionbd);

include($actionbd);
?>

Es ist sowieso immer besser, es übersichtlicher zu gestalten.


@Mackz: Du warst schneller^^. Aber ich bin mir fast sicher dass es an der lokalen Deklaration von $actionbd liegt. Wenn's daran liegt dass die Variable erst gar keinen Wert kriegt, dann muss man schon zieeeemlich auf dem Schlauch stehen ;).



MfG, BattleMaker
 
Warning: main(): Failed opening '' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /home/breakdown/index.php on line 104

passiert übrigens bei beiden scripten ;)
zeile 104 ist die include zeile und wie man sieht wird nix übertragen!
 
Das Problem lag doch darin, dass $actionbd keinen Wert kriegt:

PHP:
<?php
	$actionbd=$_GET['actionbd']; // ansonsten wird die Variable möglicherweise nur lokal in der if-Bedingung deklariert!!
	if(!(isset($actionbd)))
	{
	   $actionbd="news.php";
	}
	
	$invalide = array('/','/\/',':');
	$actionbd = str_replace($invalide,' ',$actionbd);
	
	include($actionbd);
?>

Also ist auf dem anderen Server (bzw. es ist ein andere VHost) REGISTER_GLOBALS aktiviert.

Damit hatten ich und Mackz recht. :] *g*

Außerdem haben wir noch ein paar Sicherheitslücken eliminiert... (in obigem Code sind sie jedoch noch enthalten!)



MfG, BattleMaker
 
Zurück
Oben