Akin: Undefined variable

HAbe mir ein eigenes WAMP eingerichtet und habe nun folgende unstimmigkeit...

also Ich habe eine main.php in der sich, wie unten sichtbar, ein iframe befindet, dessen Source(Quelle)mit der variable $main erst im browser definiert wird...

zum Beispiel:

www.meineseite.de/www/main.php?main=/news

Fehlermeldung:

Forbidden
You don't have permission to access /www/<br /><b>Notice</b>: Undefined variable: main in <b>E:/I_htdocs/www/main.php</b> on line <b>120</b><br /> on this server

Zeile 120:
<td height="108" valign="top"><iframe name="iframe1" scrolling="auto" align="center"  frameborder="0" src="<?php echo("$main");?> " width="100%" height="570"></iframe></td>

könnt ihr mir irgendwie helfen?
Benutze Apache 2, PHP4 + PHP5

Vielen Dank. Akin

  1. Hallo!

    in iframe befindet, dessen Source(Quelle)mit der variable $main erst im browser definiert wird...

    Das glaube ich nicht ;-)

    Forbidden
    You don't have permission to access /www/<br /><b>Notice</b>: Undefined variable: main in <b>E:/I_htdocs/www/main.php</b> on line <b>120</b><br /> on this server

    Zeile 120:
    <td height="108" valign="top"><iframe name="iframe1" scrolling="auto" align="center"  frameborder="0" src="<?php echo("$main");?> " width="100%" height="570"></iframe></td>

    Hast du überprüft, was in $main drinnen steht?

    Beste Grüße
    Viennamade

    1. in iframe befindet, dessen Source(Quelle)mit der variable $main erst im browser definiert wird...

      Das glaube ich nicht ;-)

      das glaube ich schon.... wenn ich "www.xxx.de?x=dasglaubstdudoch" eingebe... wird die variable "x" zu "dasglaubstdudoch"

      1. Hi!

        das glaube ich schon.... wenn ich "www.xxx.de?x=dasglaubstdudoch" eingebe... wird die variable "x" zu "dasglaubstdudoch"

        In einer vernünftig konfigurierten PHP-Umgebung sicher nicht, siehe: http://de3.php.net/manual/de/security.globals.php.

        Verwende <?php echo $_GET['x']; ?>

        siehe: http://de3.php.net/manual/de/reserved.variables.php#reserved.variables.get

        Grüße
        Andreas

        --
        SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/
        1. Unglaublich, dass mir Nachts um halb 2 noch jemand sagen kann, wie ich das gebacken krieg.... vielen Dank andreas...

          Kannte diese art von definition nicht, da ich das bei meinem provider (bm-media.net) immer auf die art(wie im beispiel) gemacht habe.erstaunlich, dass es da funktioniert...
          hmm... nochmals dankeschön.

          Akin

          p.s. könnt ihr mir noch sagen, wie mein bei apache auch eine PHP-Datei als startseite benutzen kann?
          danke im voraus

          1. Hi Akin,

            p.s. könnt ihr mir noch sagen, wie mein bei apache auch eine PHP-Datei als startseite benutzen kann?

            der Apache selbst hat keine »Startseite«, eine solche stellt man höchstens bei seinem Browser ein.

            Ich könnte mir vorstellen, dass du vielleicht die DirectoryIndex-Direktive suchst, also die Standarddatei, die der Apache serviert, wenn keine direkte Anfrage auf eine Datei stattfindet (eine Anfrage auf "http://aktuell.de.selfhtml.org/" beantwortet der Webserver z.B. auch mit dem Servieren der Seite "http://aktuell.de.selfhtml.org/index.htm").

            Sofern dein Provider dies erlaubt, kannst du dies mittels einer .htaccess-Datei regeln. In dieser müsste dann in etwa folgendes stehen:

            DirectoryIndex index.php index.html

            Da hilft auch eventuell etwas Apachedoc-Lektüre:
            http://httpd.apache.org/docs-2.0/mod/mod_dir.html#directoryindex

            Viele Grüße
             Benjamin

          2. Hi!

            Unglaublich, dass mir Nachts um halb 2 noch jemand sagen kann, wie ich das gebacken krieg.... vielen Dank andreas...

            kein Problem, sowas passiert hier öfter... ;-)

            Kannte diese art von definition nicht,

            $_GET für GET-Daten,
            $_POST für POST-Daten (Formular),
            $_COOKIE für Cookies und
            $_SERVER für Sachen wie $_SERVER['PHP_SELF']...

            da ich das bei meinem provider (bm-media.net) immer auf die art(wie im beispiel) gemacht habe.erstaunlich, dass es da funktioniert...

            Ja, viele Provider verwenden aus Kompatibilitäts-Gründen noch die alte, unsichere Einstellung. Wenn die das von heut auf morgen umstellen würden, dann liefen vermutlich 90% sämtlicher Scriptsammlungen nicht mehr...

            p.s. könnt ihr mir noch sagen, wie mein bei apache auch eine PHP-Datei als startseite benutzen kann?

            http://httpd.apache.org/docs-2.0/mod/mod_dir.html#directoryindex

            Grüße
            Andreas

            --
            SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/
            1. Hallo Andreas,

              Kannte diese art von definition nicht,
              $_GET für GET-Daten,
              $_POST für POST-Daten (Formular),
              $_COOKIE für Cookies und
              $_SERVER für Sachen wie $_SERVER['PHP_SELF']...

              $_ENV für Umgebungsvariablen (habe ich allerdings noch nie gebraucht),
              $_FILES für Dateiuploads und
              $_REQUEST für den Inhalt von $_GET, $_POST und $_COOKIE zusammen.

              Grüße aus Nürnberg
              Tobias

              1. Hi!

                $_ENV für Umgebungsvariablen (habe ich allerdings noch nie gebraucht),

                ich auch nicht...

                $_FILES für Dateiuploads und

                ja das ist wichtig!

                $_REQUEST für den Inhalt von $_GET, $_POST und $_COOKIE zusammen.

                auch manchmal recht hilfreich.

                Grüße
                Andreas

                --
                SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/
              2. hi,

                $_REQUEST für den Inhalt von $_GET, $_POST und $_COOKIE zusammen.

                wenn wir schon derart ins detail gehen ;-), dann wäre an dieser stelle wohl auch noch zu erwähnen, dass die "reihenfolge", in der sich gleichnamige indizes dieser einzelnen datenquellen in $_REQUEST gegenseitig überschreiben, von der konfiguration von variables_order abhängig ist.
                http://www.php.net/manual/de/ini.sect.data-handling.php#ini.variables-order

                gruß,
                wahsaga

                --
                "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
                1. Hello,

                  hi,

                  $_REQUEST für den Inhalt von $_GET, $_POST und $_COOKIE zusammen.

                  wenn wir schon derart ins detail gehen ;-), dann wäre an dieser stelle wohl auch noch zu erwähnen, dass die "reihenfolge", in der sich gleichnamige indizes dieser einzelnen datenquellen in $_REQUEST gegenseitig überschreiben, von der konfiguration von variables_order abhängig ist.
                  http://www.php.net/manual/de/ini.sect.data-handling.php#ini.variables-order

                  Ich sehe auch keinen Grund mehr dafür, $_REQUEST zu benutzen. Als Kontroll, ob überhaupt Parameter übergeben wurden, mag das noch gut sein, aber i.d.R. will man doch schon wissen, auf welchem Wege (mit welcher Methode) die Parameter übergeben wurden. Die Methoden haben schließlich alle ihren speuiellen Nutzen und damit auch eine Bedeutung für die Sicherheit eines Scriptes.

                  Harzliche Grüße aus http://www.annerschbarrich.de

                  Tom

                  --
                  Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                  Nur selber lernen macht schlau
      2. Hallo!

        in iframe befindet, dessen Source(Quelle)mit der variable $main erst im browser definiert wird...

        Das glaube ich nicht ;-)

        das glaube ich schon.... wenn ich "www.xxx.de?x=dasglaubstdudoch" eingebe... wird die variable "x" zu "dasglaubstdudoch"

        » dessen Source mit der Variable $main erst im browser definiert wird« glaube ich nicht.

        Beste Grüße
        Viennamade

  2. MIr fällt grad auf, dass das bei allen files ist, bei denen die Variable erst im nachhinein bei der adresseingabe definiert ist... gibts dazu irgendeine einstellung bei PHP, die man beachten muss?
    THX Akin

    1. hi,

      MIr fällt grad auf, dass das bei allen files ist, bei denen die Variable erst im nachhinein bei der adresseingabe definiert ist... gibts dazu irgendeine einstellung bei PHP, die man beachten muss?

      neben dem schon genannten zugriff auf GET-parameter über das superglobale array $_GET solltest du natürlich vor dem zugriff überprüfen, ob es den jeweiligen index im array überhaupt gibt.
      isset() oder empty() helfen dir dabei.

      gruß,
      wahsaga

      --
      "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
  3. Hello,

    www.meineseite.de/www/main.php?main=/news

    Und was meisnt Du wohl, was passiert, wenn man

    www.meineseite.de/www/main.php?main=%2Fetc%2Fpasswd

    eingibt? Oder was ähnlich gemeines?

    Die Parameter müssen außerdem (siehe oben) mit urlencode() umgewandelt werden, sodass aus den Slashes z.B. %2F wird.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau