nightlife: PHP URL-Weiterleitung (index.php?action=seitexy)

Guten Abend!

Wie kann ich über einen Link auf der index.php auf eine weitere Unterseite verweisen, sodass im Browser z.B. steht
" http://www.homepage.de/index.php?action=news "

Hab das mal mit
<a href="/index.php?action=faq>FAQ</a>
gemacht, die Datei FAQ heißt faq.php und liegt im gleichen Ordner.
Wenn ich auf den Link klicke in der Index passiert gar nichts.

Welchen Code muss man verwenden? Muss ein spezieller code in den HTML-head?
Muss die Datei faq.php heißen?

Vielen Dank!

  1. Guten Abend!

    Wie kann ich über einen Link auf der index.php auf eine weitere Unterseite verweisen, sodass im Browser z.B. steht
    " http://www.homepage.de/index.php?action=news "

    Hab das mal mit
    <a href="/index.php?action=faq>FAQ</a>
    gemacht, die Datei FAQ heißt faq.php und liegt im gleichen Ordner.

    Also heisst die url /faq.php

    Wenn ich auf den Link klicke in der Index passiert gar nichts.

    Doch. die index.php wird aufgerufen und abgearbeitet. Da diese index.php anscheinend mit den übergebenen Daten nichts wichtiges macht, zeigt sie dasselbe an, wie wenn die ohne parameter aufgerufen würde.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
  2. Hi!
    Das machst Du indem Du die index.php verlinkst, deinen Parameter übergibst und diesen dort auswertest. Je nach Ergebnis dieser Auswertung zeigst Du nun an, was angezeigt werden soll. Und pass auf, dass Injections nicht möglich sind.

    Welches Problem hast Du dabei genau? Falls das Problem ist, daß Du keinerlei PHP Kentnisse besitzt (Was irgendwie zu vermuten ist): Eigne dir diese bitte an.

    --
    Ich bin dafuer verantwortlich was ich sage, nicht dafuer, was Du verstehst.
  3. Dass bei einem Klick auf Deinen Link nichts passiert, ist nach Deinen Angaben kein Wunder - Du machst ja auch nichts!

    Was steht denn in der index.php? Deine Angabe "action=..." ist eine GET-Variable, die erst verarbeitet werden muss.

    Ich vermute, Du möchtest in Deiner index.php so etwas wie den folgenden Code haben:

      
    <?php  
      
    include $_GET['action'] . '.php';  
    
    

    Insgesamt muss bei einem include die Datei weder in dem gleichen Ordner liegen noch einen bestimmten Dateinamen haben.
    Das HTML-Head-Tag hat hier überhaupt keine Bedeutung.

    Allerdings kann ich Dir nur _GANZ DRINGEND DAVON ABRATEN_, oben gezeigten Code zu verwenden. Das Beispiel ist eine der größten Sicherheitsrisiken im Netz. Dazu solltest Du einmal eine Suchmaschine befragen (beispielsweise mit den Schlagworten "php include sicherheit").

    Ansonsten kann ich Dir nur empfehlen, Dich noch einmal von Grund auf mit PHP zu beschäftigen. Zumindest laut Deiner Fragestellung scheinen bei Dir nicht viel mehr Kenntnisse als die Dateiendung ".php" bekannt zu sein.

    Laut Fragestellung solltest Du Dich also am Besten zuerst mit Variablen in PHP (insbesondere GET-Variablen) sowie der include-Funktion beschäftigen.

    Eine gute Einführung zu PHP findest Du unter den Links auf http://de.selfhtml.org/php/index.htm@title=SelfHTML oder auf SelfPHP.

    Wenn ich Dir helfen kann, schreib einfach.

    Gruß, Dennis

    1. Lieber Dennis,

      <?php

      include $_GET['action'] . '.php';

        
      das ist grob fahrlässig!! Von daher war Dein Rat absolut für den Müll!  
        
      Liebe Grüße,  
        
      Felix Riesterer.
      
      -- 
      ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
      
      1. Hallo Felix,

        warum hast Du nicht weitergelesen?

        <?php

        include $_GET['action'] . '.php';

          
        
        > das ist grob fahrlässig!! Von daher war Dein Rat absolut für den Müll!  
          
        Dennis rät doch gar nicht dazu, sondern vermutet, dass der OP so etwas machen möchte. Und rät:  
          
        
        > > Allerdings kann ich Dir nur \_GANZ DRINGEND DAVON ABRATEN\_, oben gezeigten Code zu verwenden. Das Beispiel ist eine der größten Sicherheitsrisiken im Netz. Dazu solltest Du einmal eine Suchmaschine befragen (beispielsweise mit den Schlagworten "php include sicherheit").  
          
        Ich sehe hier wirklich kein Problem, außer dass der OP bei der zweiten Zeile aufhört zu lesen, die include-Zeile ausprobiert, es funzt[tm] und der Webauftritt gehört nicht mehr dem OP ...  
          
          
        Freundliche Grüße  
          
        Vinzenz
        
        1. Moin Moin!

          Ich sehe hier wirklich kein Problem, außer dass der OP bei der zweiten Zeile aufhört zu lesen, die include-Zeile ausprobiert, es funzt[tm] und der Webauftritt gehört nicht mehr dem OP ...

          Exakt deswegen ist es grob fahrlässig. Fast genauso, wie eine geladene und entsicherte Waffe im Kindergarten auszulegen mit dem Hinweis, das Ding doch bitte nicht zu berühren ("Denken sie jetzt nicht an einen blauen Elefanten").

          Alexander

          --
          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
          1. Exakt deswegen ist es grob fahrlässig.

            Jeder ist seines Glückes Schmied. Wenn der TO Mist machen will, dann macht er das doch sowieso.
            Der Beitrag von Dennis ist jedenfalls völlig ok.

          2. Ich schreib den Hinweis, dass man es so absolut nicht machen soll, das Nächste mal noch dicker und vor den Code...

            Aber wie wollt Ihr denn sonst einem Anfänger erklären, was dort grundsätzlich passiert? Hätte ich Ihm schreiben sollen, er soll sich erstmal mit OOP beschäftigen und einen sicheren Front-Controller schreiben, wenn er (wahrscheinlich) noch nicht mal was von Variablen gehört hat?

            Gruß, Dennis

  4. Wie kann ich über einen Link auf der index.php auf eine weitere Unterseite verweisen, sodass im Browser z.B. steht

    Array erstellen, if-Abfrage einfügen, include. Fertig.

    Im Array steht dann z.B.

      
    $rubriken = array (  
      "news" => "news.php,  
      "faq" => faq.php,  
      "abcdefg" => "qrstuvw.php"  
    );  
    
    

    Den Rest solltest du dir dann selber ausmalen können. Aber beschäftige dich bitter unbedingt mit GET-Parametern, Includes, Arrays, Validierung von Benutzereingaben und so weiter. Ansonsten drohen Injections und im schlimmsten Fall XSS - und das mag wirklich keiner.

    Liebe Grüße.

    PS: In PHP dieses Thema hätte besser gepasst, treuer Paderwan.

    1. $rubriken = array (
        "news" => "news.php,
        "faq" => faq.php,
        "abcdefg" => "qrstuvw.php"
      );

        
      Ich noch Mal:  
      vertippt ich mich habe!  
      Ich hoffe, das ist mir um diese Uhrzeit zu verzeihen! ;)  
        
      ~~~php
        
      $rubriken = array (  
        "news" => "news.php",  
        "faq" => "faq.php",  
        "abcdefg" => "qrstuvw.php",  
        "", ""  
      );  
      
      

      Es ginge übrigens auch per switch-case oder verschachtelte if-elseif-else-Abfragen - aber das Array finde ich recht kurz und relativ (!) sicher - wenn man seine Parameter zusätzlich validiert.

  5. Moin!

    Hab das mal mit
    <a href="/index.php?action=faq>FAQ</a>
    gemacht, die Datei FAQ heißt faq.php und liegt im gleichen Ordner.
    Wenn ich auf den Link klicke in der Index passiert gar nichts.

    Wundert mich gar nicht, weil Du nämlich
    <a href="/index.php?action=faq">FAQ</a>
    schreiben wolltest.

    Welchen Code muss man verwenden? Muss ein spezieller code in den HTML-head?

    Validen. Oder wenigstens einigermaßen validen.

    Muss die Datei faq.php heißen?

    Hier weiß keine Sau was Du eigentlich willst: In Deinem Beispiel rufst Du die index.php auf und übergibst dieser einen query-string. In PHP kannst Du den einfach auswerten/ausgeben:

    if (isset($_GET['action'])) {
        print htmlentities($_GET['action']);
    }

    Was Du sonst damit willst kann ich nicht wissen. Vielleicht willst Du ja einen Text einbinden:

    $arBoese=array('..', '/', '\');
    if (isset($_GET['action'])) {
        $file=$_SERVER['DOCUMENT_ROOT'].'/data/'.str_replace($arBoese,'',$_GET['action']).'.part.html';
        if (is_file($file)) {
            if (is_readable($file)) {
                 readfile(file);
            } else {
                 header("Error: 403");
                 die ("Kriegste nich!");
            }
        } else {
                 header('Error: 403');
                 die ('Ham wa nich!');
        }
    }

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix