Daniel Jehnes: Problem mit meiner Seite

Hallo,

habe für ne Bekannte eine Webseite programmiert. Nun ist folgendes aufgetreten. Wenn ich einen Link egal welchen anklicke öffnet sich immer wieder die Startseite.

Die Auswahl der Link läuft über eine Variable mit der Bezeichnung Content. Je nachdem welchen Wert diese Variable hat, wird eine bestimmte Datei per IFrame auf der rechten Seite angezeigt. Lokal hab ich das alles getestet und es hat wunderbar funktioniert. Woran kann das liegen? Kann mir jemand helfen? Oder ist jemandem dieses Problem bekannt?

  1. Moin Daniel,

    Hallo,

    habe für ne Bekannte eine Webseite programmiert. Nun ist folgendes aufgetreten. Wenn ich einen Link egal welchen anklicke öffnet sich immer wieder die Startseite.

    wie übergibst Du die Variable? Wie wird sie entgegen genommen? Wie wird sie weiter gereicht?

    Post mal den relevanten Code.

    regds
    Mike©

    --
    Freunde kommen und gehen. Feinde sammeln sich an.
    1. Moin Daniel,

      Hallo,

      habe für ne Bekannte eine Webseite programmiert. Nun ist folgendes aufgetreten. Wenn ich einen Link egal welchen anklicke öffnet sich immer wieder die Startseite.

      wie übergibst Du die Variable? Wie wird sie entgegen genommen? Wie wird sie weiter gereicht?

      Post mal den relevanten Code.

      regds
      Mike©

      Hier ein Link über den die Seiten aufgerufen werden.

      <a href="index.php?content=anfahrt">Anfahrt</a>

      Und hier die Verarbeitung:

      if($content!="")
      {
       $filename=$content . ".php"; ?>
       <iframe style="width:495px; height:575px; border:hidden;" src="<? echo $filename . "?id=" . $id; ?>" allowtransparency="true" frameborder="no"></iframe>
      <? }
      else
      { ?>
       <iframe style="width:490px; height:575px; border:hidden;" src="start.php" allowtransparency="true" frameborder="no" scrolling="no"></iframe>
      <? }
      ?>

      da er beim anklicken jedes Links die Startseite neu lädt, vermute ich das es eher an der If-Abfrage liegt, aber ich versteh nicht das es in der lokalen Umgebung funktioniert und online nicht.

      1. Hi,

        Und hier die Verarbeitung:
        if($content!="")

        wo hast Du die Variable $content deklariert und initialisiert? Hast Du sie mit dem Inhalt des gleichnamigen Parameters gefüllt?

        $filename=$content . ".php"; ?>

        Hussa. Ich rieche, rieche Menschenflei^W eine Sicherheitslücke.

        <iframe style="width:495px; height:575px; border:hidden;" src="<? echo $filename . "?id=" . $id; ?>" allowtransparency="true" frameborder="no"></iframe>

        Noch einmal die Frage: Warum Frames?

        aber ich versteh nicht das es in der lokalen Umgebung funktioniert

        Du hast Deinen lokalen Server falsch und unsicher konfiguriert.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Also das IFrame verwende ich weil die Seiten sehr viel Text enthalten und wenn ich include verwende würde mein festes Hintergrundlayout gesprengt. Die Variable content ist nicht deklariert, sondern wird eben mit dem Aufruf durch den Link erst erstellt.

          1. Danke an alle Tipps, mein Problem habe ich erstmal gelöst. Das mit der Sicherheit werde ich erstmal in Ruhe überdenken.

            1. Danke an alle Tipps, mein Problem habe ich erstmal gelöst. Das mit der Sicherheit werde ich erstmal in Ruhe überdenken.

              Ja nehme aber vorher die Seite vom NETZ!!!!!!!!!!!!!!!
              Was du dort gebaut hast ist ein Sicherheitsloch welches die Größe von Scheunentoren hat!!!

          2. hi,

            Also das IFrame verwende ich weil die Seiten sehr viel Text enthalten und wenn ich include verwende würde mein festes Hintergrundlayout gesprengt.

            Dann hast du dein Layout falsch aufgebaut.
            Es sollte problemlos auch ohne Iframe möglich sein.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
      2. Hallo,

        <a href="index.php?content=anfahrt">Anfahrt</a>

        if($content!="")
        {
        $filename=$content . ".php"; ?>
        <iframe style="width:495px; height:575px; border:hidden;" src="<? echo $filename . "?id=" . $id; ?>" allowtransparency="true" frameborder="no"></iframe>
        <? }

        und wo kommt die Variable $content her? Wo wird sie definiert?

        Außerdem solltest du bedenken, dass du hier eine ganz gefährliche Sicherheitslücke aufreißt: Ich kann mit ?content=meinscript.php beliebigen eigenen Code auf deinem Server ausführen. Ich kann deinen Webspace nach meinem Geschmack umbauen, deine Dateien löschen, und und und ...

        Darum überprüfe Werte, die dein Script auf irgendwelchen Wegen von außen bekommt, IMMER auf Gültigkeit und Plausibilität!
        Ach so, auf short_open_tags=on solltest du dich auch besser nicht verlassen.

        Ciao,
         Martin

        PS: Zitiere doch bitte nicht das gesamte Vorposting. Danke.

        --
        Es sagte...
        ein korpulenter Lehrer zu einem Schüler, der ihn ein Fass genannt hatte: "Nein. Ein Fass ist von Reifen umgeben, ich dagegen von Unreifen."
      3. Moin Daniel,

        if($content!="")

        auf Sicherheitslücken und register_globals wurdest Du bereits hingewiesen.

        Ändere die Abfrage so:

        if($_GET['content'] != '')
          {
            $filename=$_GET['content'] . ".php"; ?>

        Dennoch solltest Du das Konzept mal überdenken.

        regds
        Mike©

        --
        Freunde kommen und gehen. Feinde sammeln sich an.
        1. echo $begrüßung;

          auf Sicherheitslücken und register_globals wurdest Du bereits hingewiesen.

          Prinzipiell ist register_globals keine Sicherheitslücke. Die Sicherheitslücke entsteht, weil einige Programmierer beim Variablenzugriff schlampig sind. Es wird oftmals - sicher aus Unwissenheit - vergessen, Variablen vor dem ersten Lesezugriff mit einem definierten Wert zu füllen. Machte man dies konsequent, müsste sich register_globals=On nicht immer wieder als Sicherheitslücke bezeichnen lassen.

          PHP erzeugt bei Lesezugriff auf nicht vorhandene Variablen zwar eine Notice, doch die Anzeige dieser Meldungen ist per default ausgeschaltet. Während der Entwicklung ist es sehr empfehlenswert, das error_reporting aus E_ALL zu stellen, um diese wichtigen Meldungen nicht zu ignorieren. Auch ist die Chance geringer, Vertipper bei Variablennamen zu übersehen.

          Ändere die Abfrage so:

          Das ist doch nur die halbe Wahrheit, die nun dafür sorgt, dass die Sicherheitslücke auch funktioniert.

          Es ist besser, die übergebenen Werte auf Gültigkeit zu prüfen. Erwartet man Zahlen, testet man, ob es sich um eine solche handelt, usw. Hilfreiche Funktionen dazu findet man im Kapitel Variable Handling Functions.

          Möchte man auf einen String-Wert aus einer Reihe vorgegebener Werte testen (wobei die Vorgabe sich hier aus den zur Verfügung stehenden Seiten ergibt), kann man ein Array verwenden:

          $contents = array(  
            'start' => 'start.php',  
            'irgendwas' => 'irgendwas.php',  
            ...);
          

          Der Schlüssel ist der Wert, der in der URL übergeben wird. Der Inhalt dazu stellt den Dateinamen dar.

          if (isset($_GET['content']) and isset($contents[$_GET['content']])  
            $filename = $contents[$_GET['content']];  
          else  
            $filename = $contents['start'];
          

          Hier wird nun geprüft, ob überhaupt ein Parameter namens content übergeben wurde und ob dieser als Key im Array enthalten ist. Wenn nicht, wird ein $filename mit einem Default-Wert belegt.

          echo "$verabschiedung $name";

          1. Moin dedlfix,

            auf Sicherheitslücken und register_globals wurdest Du bereits hingewiesen.

            Prinzipiell ist register_globals keine Sicherheitslücke.

            Halt, Stop, Moment a mal. Es ging in Bezug zur Sichrheitslücke nicht um register_globals, sondern um:

            [...]
            $filename=$content . ".php"; ?>
             <iframe style="width:495px; height:575px; border:hidden;" src="<? echo $filename . "?id=" . $id; ?>" allowtransparency="true" frameborder="no"></iframe>
            [...]

            regds
            Mike©

            --
            Freunde kommen und gehen. Feinde sammeln sich an.
  2. Hi,

    Die Auswahl der Link läuft über eine Variable

    wie kann das sein? Variablen werden über HTTP nicht übertragen.

    Je nachdem welchen Wert diese Variable hat, wird eine bestimmte Datei per IFrame auf der rechten Seite angezeigt.

    Du magst Deine Bekannte nicht besonders, richtig?

    Lokal hab ich das alles getestet und es hat wunderbar funktioniert. Woran kann das liegen?

    quote:#428

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  3. Moin,

    Die Auswahl der Link läuft über eine Variable mit der Bezeichnung Content. Je nachdem welchen Wert diese Variable hat, wird eine bestimmte Datei per IFrame auf der rechten Seite angezeigt. Lokal hab ich das alles getestet und es hat wunderbar funktioniert. Woran kann das liegen? Kann mir jemand helfen? Oder ist jemandem dieses Problem bekannt?

    meine Glaskugel ist leider in der langen Hitzeperiode ausgetrocknet und trüb geworden. Ganz diffus erkenne ich noch etwas, das wie "register_globals" aussieht ...

    Im Klartext: Zeig mal ein paar relevante Stücke Quellcode, dann kann man dir bestimmt einen guten Hinweis geben. Raten hilft uns nicht weiter.

    So long,
     Martin

    --
    Ein guter Lehrer muss seinen Schülern beibringen können,
    eine Frage so zu stellen, dass auch der Lehrer lernen muss,
    um die Frage beantworten zu können.
      (Hesiod, griech. Philosoph, um 700 v.Chr.)
  4. Hi,

    Die Auswahl der Link läuft über eine Variable mit der Bezeichnung Content. Je nachdem welchen Wert diese Variable hat, wird eine bestimmte Datei per IFrame auf der rechten Seite angezeigt. Lokal hab ich das alles getestet und es hat wunderbar funktioniert. Woran kann das liegen?

    Bei der Menge an Information läßt sich das einfach eingrenzen: es liegt an der Programmierung.

    Ich wage mal, noch weiter zu raten: es liegt daran, daß Du Dich auf register_globals = on verlassen hast, was aber auf dem Server nicht der Fall ist.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Schreinerei Waechter
    O o ostern ...
    Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
  5. Hallo,

    Schwierig zu sagen, eine Möglichkeit wäre, daß lokal Windows läuft, welches zwischen Groß und Kleinschreibung nicht unterscheidet, auf dem Server aber Linux, welches das sehr wohl tut.
    Index.html und index.html sind dort nicht das selbe. Das gleiche gilt für Verzeichnisnamen. Aber das ist nur ratemodal.

    netten Tag
    ^da Powl