Sebastian: Appache stellt include nicht richtig da...

Hallo alle zusammen,

ich habe auf meiner Seiter die Navigation mithilfe eines include Befehls ausgegliedert und nun habe ich folgendes Problem, auf dem Webserver läuft es nur auf dem localhost läuft es nicht was könnte hierfür der Grund sein.

Daten:
Appache 1.3
PHP 4.3.3

meine index.php:
<? if (!isset($seite)) {$seite='home.php'; }include($seite); ?>

meine links:
<a href="index.php?seite=test/test.php">TEST</a>

mein include- Befehl:
<?php include("nav/main.php"); ?>

würde mich freuen wenn mir jemand helfen könnte..

Liebe Grüße
Sebastian

  1. Hallo Sebastian,

    meine index.php:
    <? if (!isset($seite)) {$seite='home.php'; }include($seite); ?>

    ich bin mir zwar nicht so ganz im Klaren, was eigentlich dein Problem ist, aber ich vermute mal, bei dir steht register_globals auf off und du must somit auf Werte die per get übergeben werden, über das Array $_GET zugreifen. An dein 'test/test.php' kommst du also über $_GET['seite'] dran. Wenn das dein Problem nicht löst, erläuter dein Problem mal etwas genauer.

    Ich würde dir aber auch dringend abraten deine Navigation so zu gestalten, da es sonst passieren kann, dass da einer daherkommt und die Seite mit index.php?http://www.example.com/boesesscript.txt aufruft, und schon wird der Code der in boesesscript.txt drinsteht bei dir ausgeführt...

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Mein Problem beim Localhost bleibt er mir beim Klick auf den Link am aktuellen Standort stehen und springt nicht wie gewünscht auf die verlinkte Seite.

      Verstanden...

      welche Möglichkeiten gibt es noch ???

      1. habe d'ehre

        Verstanden...

        Tobias hat Dir die richtige Loesung genannt. Du sprichts die Variable $seite falsch an.

        welche Möglichkeiten gibt es noch ???

        Die Loesung von Tobias verwenden.

        carpe diem
        Wilhelm

        1. Die Loesung von Tobias verwenden.

          ich kapiere nicht wie es Tobias meint, kannst du nochmal erklären bin nicht so der PHP Held... (muss ich ehrlich zugeben)

          1. hi,

            ich kapiere nicht wie es Tobias meint, kannst du nochmal erklären bin nicht so der PHP Held... (muss ich ehrlich zugeben)

            verwende statt $seite _überall_ in deinem script $_GET['seite']

            und lies mal http://www.php.net/manual/de/language.variables.predefined.php.

            gruss,
            wahsaga

          2. habe d'ehre

            ich kapiere nicht wie es Tobias meint, kannst du nochmal erklären bin nicht so der PHP Held... (muss ich ehrlich zugeben)

            Bei Deiner Version von PHP ist in der php.ini der Wert fuer globale Registrierung der Varablen aus Sicherheitsgruenden generell auf "off" gesetzt. Variablen im URL-String musst Du aus dem Array $_GET, Variablen aus Formularen mit method=post aus dem Array $_POST abfragen.

            Dein Beispiel:
            <? if (!isset($seite)) {$seite='home.php'; }include($seite); ?>

            if(!isset($_GET['seite']))
            $zeige_inhalt = "home.php";
            else
            $zeige_inhalt = $_GET['seite'];

            include ($zeige_inhalt);

            Jetzt hast Du natuerlich das Problem, dass jeder mit Kenntnis Deiner Url Dir jedweglichen Schrott unterbinden kann. Dies koenntest Du wie folgt unterbinden: Der Parameter Seite hat nur einen Schluessel, denn Du per Script in den Klarnamen umwandelst.

            carpe diem
            Wilhelm

  2. Hello,

    dass das, was Du machst unter Sicherheitsaspekten eigentlich schon mit lebenslänglich bestraft werden müsste, werden Dir sicher noch die Anderen sagen...

    meine index.php:
    <? if (!isset($seite)) {$seite='home.php'; }include($seite); ?>

    meine links:
    <a href="index.php?seite=test/test.php">TEST</a>

    Du musst den Parameter codieren:

    $param=urlencode("test/test.php");

    Schau Dir mal an, was mit urlencode() daraus wird.

    <a href="index.php?seite=<?= $param ?>">TEST</a>

    $include($startverzeichnis."/".$_GET["seite"]);

    Grüße

    Tom