Goto + anschließendes include geht nicht

hallo community,

folgendes Problem:
ich habe eine seite gebastelt mit folgendem aufbau:
a href=seite1.php?goto=seite1_1
dann:
includefile=$goto +.html (dann wird aus $goto: seite1_1.html)
include(includefile)
etc.

lokal funktioniert alles, auf einem Testserver von all-inkl. geht auch alles, nur auf dem Strato Server geht dieses include nicht … das Problem zeigt sich darin dass die aufgerufenen Seiten nicht erscheinen … z.B. wenn man auf Leistungsprofil links klickt sollte ein Menü aufklappen … ich denke mal dass das include daran Schuld ist.
Kann es sein dass der Strato Server PHP anders interpretiert als ein all-inkl. Server?
das selbe Problem habe ich mit einem eingebundenen Flash:
auf dem Strato Server wird dieses Flash verkleinert, lokal und auf dem all-inkl. Server wird das flash in originalgröße angezeigt.
die Dateien sind absolut identisch.

Strato Server:
http://www.secen.de/secenphp/
all-inkl. Server
http://test60101.test-account.com/scn/

und die flash Seiten:
strati:
http://www.secen.de/flash_house.html
all inkl:
http://test60101.test-account.com/flash_house.html

danke

Hallo,

ohne Quelltext kann man da nichts sagen. Vielleicht hast du ja auch ein altes Problem aufgegrifen, dass du direkt per $goto auf die Variable zugreifst, statt $_REQUEST[‚goto‘] bzw. $_GET[‚goto‘] - aber das sind jetzt nur vage Vermutungen - ohne deinen Skill zu kennen.

da er immer die standardseite anzeigt beim strato-server, vermute ich, dass es dieses problem ist.

Grundsätzlich gilt noch zu sagen, dass du die Variable vor dem Nutzen auf unerlaubt zeichen testen solltest (kein Punkt oder Slash oder …), sonst sehen deine Seiten evtl. ganz schnell anders aus als gewünscht.

Bye.

… dass du direkt per $goto
auf die Variable zugreifst, statt $_REQUEST[‚goto‘] bzw.
$_GET[‚goto‘]…

hallo,

ich habe folgendes ganz oben stehen …:

if (!ini_get(‚register_globals‘)) {
$types_to_register = array(‚GET‘,‚POST‘,‚COOKIE‘,‚SESSION‘,‚SERVER‘);
foreach ($types_to_register as $type) {
$arr = @${‚HTTP_‘ . $type . ‚_VARS‘};
if (@count($arr) > 0) {
extract($arr, EXTR_OVERWRITE);
} } }

danach benutze ich aber weiter $goto …
$arr hört sich wie ein array mit den vars an …
sollte ich vielleicht das $goto mit dem $goto aus dem array ( falls wirklich vorhanden ) gleichsetzen ??

ich hoffe, das bissle code reicht für eine diagnose …

danke

finished ---- goto + anschließendes include …
danke an alle,

thema beendet …

war im grunde nur ein GET …

Hi,

du solltest aber grundsätzlich lieber mit $_GET[‚xxx‘] arbeiten statt mit $xxx, da du so zwischen lokalen („sicheren“) Variablen und unsicheren externen Variablen unterscheiden kannst. Des weiteren solltest du register_globals abstellen (so wie es bei Strato anscheinend löblicherweise ist).

Falls du mal eine Initialisierung von einer lokalen Variable vergisst und register_globals aktiviert ist, dann kann man die Werte unterjubeln und dein Skript ist potenziell unsicher.

Bye.

hi hebelt,

bei mir steht jetzt nur:
$goto = $_GET[„goto“];

und dann wird mit $goto gearbeitet …
reicht das aus, muss ich „register_globals = off“ extra noch dazu schreiben, wenn ja in welcher Art ?? … ( wenn bei Strato das nicht so wäre )

danke

Hi,

das geht m.E. nach nur über die php.ini - Direktiven (also auch über die .htaccess) - zur Laufzeit geht es nicht, dass steht dort explizit. Du kannst also deinen Provider bitten, dass er es für dich ausschaltet oder es selbst in die .htaccess eintragen, sofern dein Provider dies unterstützt.

S.a.:
http://de2.php.net/manual/de/ini.core.php#ini.regist…

Ab PHP 6.0 wird es dieses globale initialisieren auch gar nicht mehr geben - so hättest du also dann später weniger migrationsaufwand:

http://de2.php.net/manual/de/security.globals.php