dey: URI als sicherer Parameter

Hallo,

ich möchte gern meine Navigation per include in allen Dateien vereinheitlichen.
Varianten möchte ich über spezielle Angaben im Dateinamen vornehmen.

1.
Ist der Datei-Name in der URI als Parameter sicher zu verwenden?

2.
Wie bekomme ich den Datei-Namen?
Mit dem, was ich bisher in Manuals gefunden habe, HTTP_HOST bekomme ich nur meinen Rechner-Namen.

bydey

--
-- noch immer ein erfolgloser <DIV> Jünger --
  1. Hi,

    ich möchte gern meine Navigation per include in allen Dateien vereinheitlichen.
    Varianten möchte ich über spezielle Angaben im Dateinamen vornehmen.

    Du willst Dich bei der Namenswahl also von einem Framework abhängig machen? Schlechte Idee. Ganz schlechte Idee.

    Ist der Datei-Name in der URI als Parameter sicher zu verwenden?

    Wie definierst Du "sicher"?

    Wie bekomme ich den Datei-Namen?

    Über diverse Angaben in der globalen Variable $_SERVER. Bedenke dabei insbesondere, dass eine URI *nichts* mit Dateien zu tun hat, also auch nicht mit Dateinamen.

    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. Hallo Cheatah,

      Business as usual: wenn du antwortest verstehe ich < 50%.

      ich möchte gern meine Navigation per include in allen Dateien vereinheitlichen.
      Varianten möchte ich über spezielle Angaben im Dateinamen vornehmen.

      Du willst Dich bei der Namenswahl also von einem Framework abhängig machen? Schlechte Idee. Ganz schlechte Idee.

      Warum?!

      Ist der Datei-Name in der URI als Parameter sicher zu verwenden?

      Wie definierst Du "sicher"?

      Wenn ich diesen Dateinamen aus der Addresszeile bekomme ist er nicht manipulierbar.
      Angehängte Parameter wären mir egal.

      Wie bekomme ich den Datei-Namen?

      Über diverse Angaben in der globalen Variable $_SERVER. Bedenke dabei insbesondere, dass eine URI *nichts* mit Dateien zu tun hat, also auch nicht mit Dateinamen.

      Kann ich http://irgendwo.im/Netz/a.21.text.e.html irgendwie aus der Addresszeile bekommen (speziell a.21.text.e.html würde mir reichen)?

      bydey

      --
      -- noch immer ein erfolgloser <DIV> Jünger --
      1. Hi,

        Kann ich http://irgendwo.im/Netz/a.21.text.e.html irgendwie aus der Addresszeile bekommen (speziell a.21.text.e.html würde mir reichen)?

        $_SERVER["PHP_SELF"] ? ;)

        Joah.

        1. Hallo Joah,

          You make my day

          $_SERVER["PHP_SELF"] ? ;)

          Ist ja nicht, dass ich nicht schon seit einer Stunde rumsuche.

          bydey

          --
          -- noch immer ein erfolgloser <DIV> Jünger --
      2. Hi,

        Business as usual: wenn du antwortest verstehe ich < 50%.

        des g'hört so ;-)

        Du willst Dich bei der Namenswahl also von einem Framework abhängig machen? Schlechte Idee. Ganz schlechte Idee.
        Warum?!

        Weil Dir das Probleme bereiten wird.

        Ist der Datei-Name in der URI als Parameter sicher zu verwenden?
        Wie definierst Du "sicher"?
        Wenn ich diesen Dateinamen aus der Addresszeile bekomme ist er nicht manipulierbar.

        Du bekommst aus der Adresszeile keinen Dateinamen. Wie ich bereits sagte, haben in HTTP URLs und Dateien *nichts* miteinander zu tun.

        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. Hallo,

          Business as usual: wenn du antwortest verstehe ich < 50%.

          des g'hört so ;-)

          Ich hoffe dir ist klar, dass das Forum (auch) von Fragen lebt.
          Wenn man aber immer fürchten muss eine deiner kopfschmerzbereitenden Antworten zu bekommen könnte es die Folge haben, dass weniger Fragen gestellt werden!?

          Weil Dir das Probleme bereiten wird.

          Das hast du so oder so ähnlich vorher schon behauptet. Welche Probleme habe ich zu erwarten.
          Sollten wir ein Missverständis haben, ich hatte mein Problem noch mal differenzierter erklärt https://forum.selfhtml.org/?t=116509&m=745475

          Du bekommst aus der Adresszeile keinen Dateinamen. Wie ich bereits sagte, haben in HTTP URLs und Dateien *nichts* miteinander zu tun.

          Na, aber mit echo $_SERVER["PHP_SELF"] bekomme ich doch /my/?t=116509&m=745500 und das ist es was ich suche. Mal abgesehen davon, dass hier auf der Seite kein Dateiname verwendet wird.

          bydey

          --
          -- noch immer ein erfolgloser <DIV> Jünger --
          1. Hi,

            Ich hoffe dir ist klar, dass das Forum (auch) von Fragen lebt.

            natürlich. Von Fragen, vom Self-Gedanken und von der Energie des Verstehens. Wie könnte ich dem Forum also mehr schaden als mit Antworten, die keine Fragen offen lassen, die Self-Arbeit unnötig machen und den Fragesteller am Verstehen hindern?

            Wenn man aber immer fürchten muss eine deiner kopfschmerzbereitenden Antworten zu bekommen könnte es die Folge haben, dass weniger Fragen gestellt werden!?

            Hast Du hier gerade eine Frage gestellt, nachdem Du eine Antwort bekommen hast? Einspruch abgewiesen.

            Weil Dir das Probleme bereiten wird.
            Das hast du so oder so ähnlich vorher schon behauptet. Welche Probleme habe ich zu erwarten.

            Alle möglichen. Wenn Du Abhängigkeiten schaffst, die zudem völlig lose im Raum stehen, *wird* es irgend wann krachen. Und Du wirst nicht wissen, warum.

            Sollten wir ein Missverständis haben, ich hatte mein Problem noch mal differenzierter erklärt https://forum.selfhtml.org/?t=116509&m=745475

            Da behauptest Du etwas zu wollen, was gar nicht der Fall ist. Du willst etwas anderes. Was Du dort beschreibst ist, wie Du Dir den Weg dahin vorstellst. Und der ist unsinnig, denn er führt zu einem Abgrund.

            Du bekommst aus der Adresszeile keinen Dateinamen. Wie ich bereits sagte, haben in HTTP URLs und Dateien *nichts* miteinander zu tun.
            Na, aber mit echo $_SERVER["PHP_SELF"] bekomme ich doch /my/?t=116509&m=745500 und das ist es was ich suche.

            Gerne, aber das ist weit von einem Dateinamen entfernt.

            Mal abgesehen davon, dass hier auf der Seite kein Dateiname verwendet wird.

            In HTTP wird _nie_ ein Dateiname verwendet. Nur URLs.

            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
          2. Hallo Freunde des gehobenen Forumsgenusses,

            Na, aber mit echo $_SERVER["PHP_SELF"] bekomme ich doch /my/?t=116509&m=745500

            Mit ziemlicher Sicherheit nicht.

            und das ist es was ich suche.

            Ich bin der festen Überzeugung, dass du $_SERVER['REQUEST_URI'] suchst.

            Gruß
            Alexander Brock

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

              Ich bin der festen Überzeugung, dass du $_SERVER['REQUEST_URI'] suchst.

              Vielleicht, wenn meine Erwartung eher in diese Richtung geht
              Notice: Undefined index: REQUEST_URI in D:\Eigene\html\dream1\variables.php on line 8

              bydey

              --
              -- noch immer ein erfolgloser <DIV> Jünger --
              1. Hallo Freunde des gehobenen Forumsgenusses,

                Ich bin der festen Überzeugung, dass du $_SERVER['REQUEST_URI'] suchst.

                Vielleicht, wenn meine Erwartung eher in diese Richtung geht
                Notice: Undefined index: REQUEST_URI in D:\Eigene\html\dream1\variables.php on line 8

                Bei mir funktioniert das wunderbar.

                Welche Version von PHP nutzt du?
                Was ergibt echo '<pre>'.print_r($_SERVER, true).'</pre>';?

                Gruß
                Alexander Brock

                --
                [latex]\lim_{3 \to 4}{\sqrt{3}} = 2[/latex]
                1. echo $begrüßung;

                  Notice: Undefined index: REQUEST_URI in D:\Eigene\html\dream1\variables.php on line 8

                  Bei mir funktioniert das wunderbar.

                  Welche Version von PHP nutzt du?

                  Das liegt weniger an PHP. Der Inhalt von $_SERVER wird vom Server bereitgestellt. Der IIS beispielsweise stellt REQUEST_URI nicht zur Verfügung.

                  echo "$verabschiedung $name";

    2. Hi,

      Varianten möchte ich über spezielle Angaben im Dateinamen vornehmen.

      Du willst Dich bei der Namenswahl also von einem Framework abhängig machen? Schlechte Idee. Ganz schlechte Idee.

      Ich weiß ja was Du hier intendiertest, aber prinzipiell ist ein Framework also ein Regel bei Dateinamen unabdingbar. Das Gegenteil wäre ein zwar individueller jedoch echt zufälliger Dateiname, der den entscheidenden Nachteil hat in der Länge unbegrenzt zu sein. Eine Begrenzung der Länge wäre ja schon eine Regel.
      Es ist deshalb ja auch durchaus üblich einen Haufen Regeln, teilweise sogar recht willkürlicher Art anzuwenden. Es ist, genauso wie die Regeln für die Zusammensetzung von Paßwörter, die die Entropie verringern obwohl sie das Gegenteil bezwecken, einfach eine Frage von äußeren Bedingungen und somit Verhandlungssache.

      Im vorliegendem Fall ist es wahrscheinlich der Umstand, das die regulär für die Absicht vorgesehen URL-Parameter wohl einfach nicht "schmecken", die Gründe blieben leider unbekannt. Statt des vorgegebenen Frameworks "URL-Parameter"  möchte er gerne etwas eigenes basteln, das jedoch mit der gleichen Absicht, wie die URL-Parameter: er möchte das Rad neu erfinden. Und genau das ist des OP Fehler, Ursache möglichen zukünftigen Ärgers. Das hättest Du schon kurz anreißen können finde ich. Auch wenn ich eine Einsicht seitens des OP trotz allem bezweifele ;-)

      so short

      Christoph Zurnieden

      1. Hallo,

        Im vorliegendem Fall ist es wahrscheinlich der Umstand, das die regulär für die Absicht vorgesehen URL-Parameter wohl einfach nicht "schmecken", die Gründe blieben leider unbekannt. Statt des vorgegebenen Frameworks "URL-Parameter"  möchte er gerne etwas eigenes basteln, das jedoch mit der gleichen Absicht, wie die URL-Parameter: er möchte das Rad neu erfinden. Und genau das ist des OP Fehler, Ursache möglichen zukünftigen Ärgers. Das hättest Du schon kurz anreißen können finde ich. Auch wenn ich eine Einsicht seitens des OP trotz allem bezweifele ;-)

        von SCHMECKEN kann keine Rede sein. Das ganze läuft auf CMS hinaus.
        Die Vorgabe für den Laien sind

        • bestimmtes Verzeichnis für die neue Datei
        • und der Dateiname im Format a21.any name.e.php
        • mit a21. bestimme ich später die Reihenfolge für die automatisch Navigation
        • mit .e. die Sprache
        • ich will nicht Parameter im üblichen Sinne (?bla=bla), da ich diese erst in einem Link verwenden kann.

        bydey

        --
        -- noch immer ein erfolgloser <DIV> Jünger --
        1. Hi,

          [...] Auch wenn ich eine Einsicht seitens des OP trotz allem bezweifele ;-)

          von SCHMECKEN kann keine Rede sein. Das ganze läuft auf CMS hinaus.
          Die Vorgabe für den Laien sind

          • bestimmtes Verzeichnis für die neue Datei
          • und der Dateiname im Format a21.any name.e.php
          • mit a21. bestimme ich später die Reihenfolge für die automatisch Navigation
          • mit .e. die Sprache
          • ich will nicht Parameter im üblichen Sinne (?bla=bla), da ich diese erst in einem Link verwenden kann.

          Was meinst Du, das ich jetzt antworte außer Q.E.D.?
          Aber ich bin ja geduldig.
          Dein Problem ist von Dir wie folgt beschrieben worden:

          ich möchte gern meine Navigation per include in allen Dateien vereinheitlichen. Varianten möchte ich über spezielle Angaben im Dateinamen vornehmen.

          Du möchtest Deine Navigation vereinheitlichen, machst es aber nicht, da Du sie spezialisierst. Möchtest Du sie nun spezialisieren oder vereinheitlichen? Sollen wir jetzt eine Münze werfen?
          Wenn Du in jeder Datei die Navigation anpassen mußt, kannst Du sie nunmal nicht vereinheitlichen, so einfach ist das.
          Aber das ist nur selten der Fall, meist sind ja nur ein paar Einträge variabel, der Rest steht. Das kann man automatisieren, das nennt man dann "Template". Ganz grob funktioniert das dann so (Pseudocode):

          Template:
          $menu = "<ul class="navilist">\ <li>$menuFirst</li>\ <li>$menuSecond</li>\ <li>$menuThirst</li>\ <li>$menuForth</li>\ <li>$menuFilth</li>\ </ul>";

          individuelle Datei:
          $menuFirst  = makeLink("Foo.html");
          $menuSecond = makeLink("Bar.html");
          $menuThirst = makeLink("Baz.html");
          $menuForth  = makeLink("Foobar.html");
          $menuFilth  = makeLink("Foobaz.html");
          include("Template");
          echo $header.$menu.$footer;

          Das läßt sich natürlich frei variieren, ich wollte nur das Prinzip darstellen, wie bei der Problemstellung normalerweise vorgegangen wird:

          • suche den kleinesten gemeinsamen Nenner KGN
          • wenn keiner vorhanden: Ende.
          • suche die Variablen (den größten, nicht gemeinsamen Nenner) VAR
          • wenn keine vorhanden: Ende.
          • Belege VAR in jeder einzelne Datei und lagere KGN aus
            Alles weitere entscheidet die verwendete Sprache.

          so short

          Christoph Zurnieden

    Ist der Datei-Name in der URI als Parameter sicher zu verwenden?

    unter gewissen Voraussetzungen...
    Beispielsweise solltest als Parameter nur das Dateiprefix angeben, z.B. "home", das machts nicht so offensichtlich. Ausserdem solltest überprüfen dass übergebene Dateinamen nur aus Buchstaben, Ziffern und "_" bestehen dürfen.
    Dann kannst du gefahrlos die Datei wie "includes/".$parameter.".php" includen.

    Wie bekomme ich den Datei-Namen?
    Mit dem, was ich bisher in Manuals gefunden habe, HTTP_HOST bekomme ich nur meinen Rechner-Namen.

    $_GET['parametername'] ist hier das richtige.

    greetz RFZ

    1. Hallo,

      Ist der Datei-Name in der URI als Parameter sicher zu verwenden?
      unter gewissen Voraussetzungen...
      Beispielsweise solltest als Parameter nur das Dateiprefix angeben, z.B. "home", das machts nicht so offensichtlich. Ausserdem solltest überprüfen dass übergebene Dateinamen nur aus Buchstaben, Ziffern und "_" bestehen dürfen.
      Dann kannst du gefahrlos die Datei wie "includes/".$parameter.".php" includen.

      Ich glaube ich habe mich missverständlich ausgedrückt:

      • ich will im Namen meiner Datei einen Parameter einbinden
      • z.B. a21.tolle maschine.e.html
      • diesen Namen will aus der Adresse(URI?) lesen un wieder zerlegen
      • a = Produkt-Typ
      • 21 = laufende Nummer
      • tolle maschine + anderes = Linkname
      • e.html = Englisch

      Wie bekomme ich den Datei-Namen?
      Mit dem, was ich bisher in Manuals gefunden habe, HTTP_HOST bekomme ich nur meinen Rechner-Namen.
      $_GET['parametername'] ist hier das richtige.

      Glaube ich nicht, da ich nicht mit ?type=1 arbeiten.
      Es soll der Dateiname und nicht der Link Dateiname+Parameter sein.

      bydey

      --
      -- noch immer ein erfolgloser <DIV> Jünger --
      1. Hallo Freunde des gehobenen Forumsgenusses,

        Ich glaube ich habe mich missverständlich ausgedrückt:

        • ich will im Namen meiner Datei einen Parameter einbinden
        • z.B. a21.tolle maschine.e.html
        • diesen Namen will aus der Adresse(URI?) lesen un wieder zerlegen
        • a = Produkt-Typ
        • 21 = laufende Nummer
        • tolle maschine + anderes = Linkname
        • e.html = Englisch

        Mit explode('.', $_SERVER['REQUEST_URI']) bekommst du ein nummerisches
        Array mit den Angaben, die du suchst. Wie immer musst du alle Werte dieses Array
        genaustens (d.h. mit einer Whitelist) überprüfen bevor du sie verwendest.

        Gruß
        Alexander Brock

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

    Wie bekomme ich den Datei-Namen?
    Mit dem, was ich bisher in Manuals gefunden habe, HTTP_HOST bekomme ich nur meinen Rechner-Namen.

    Du kennst <?php phpinfo(); ?> ?

    Einen schönen Freitag noch.

    Gruß, Ash*feel free*ura

    --
    Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
    30 Days to becoming an Opera8 Lover -- Fix dsl sbc yahoo com with User JavaScript
    Meine Browser: Opera 8.50 | Firefox 1.0.7 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
    Use OpenOffice.org
  3. Hallo,

    meine Struktur

    index.php
    variables.php
    header.php
    st.css
    ...
    news/any.php

    In any.php benutze ich die gleichen includes auf header.php und variables.php wie in index.php.
    Nach dem ich in any.php mit file_exist festgestellt habe ob ich header.php mit header.php oder mit ../header.php finde funktionieren die includes einwandfrei und die Dateien werden eine Ebene höher gefunden.

    In der header.php verweise ich auf mein style sheet (<link href="st.css" rel="stylesheet" type="text/css">) und dieses wird jetzt nicht mehr gefunden.

    Kann ich per php den Startpunkt für alle nachfolgenden Pfadangaben in HTML zurück auf mein root (eine Ebene höher) setzen?

    bydey

    --
    -- noch immer ein erfolgloser <DIV> Jünger --
    1. Hallo dey.

      Kann ich per php den Startpunkt für alle nachfolgenden Pfadangaben in HTML zurück auf mein root (eine Ebene höher) setzen?

      Mache dies in HTML, in dem du alle Pfadangaben auf zum DOCUMENT_ROOT bezogene Pfade abänderst:

      <link href="st.css" rel="stylesheet" type="text/css">

      wird also zu:

      <link href="/st.css" rel="stylesheet" type="text/css">
                  ^

      Einen schönen Freitag noch.

      Gruß, Ash*feel free*ura

      --
      Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
      30 Days to becoming an Opera8 Lover -- Fix dsl sbc yahoo com with User JavaScript
      Meine Browser: Opera 8.50 | Firefox 1.0.7 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
      Use OpenOffice.org
      1. Hallo Ashura,

        wird also zu:

        <link href="/st.css" rel="stylesheet" type="text/css">

        Bin dir zu äussertem Dank verpflichtet, habe schon angesetzt einen aufwendigen Weg in php zu gehen.

        bydey

        --
        -- noch immer ein erfolgloser <DIV> Jünger --
    2. hi,

      In any.php benutze ich die gleichen includes auf header.php und variables.php wie in index.php.
      Nach dem ich in any.php mit file_exist festgestellt habe ob ich header.php mit header.php oder mit ../header.php finde funktionieren die includes einwandfrei

      Weniger umständlich denkende Menschen würden vielleicht einfach einen passenden include_path setzen ...

      gruß,
      wahsaga

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