Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Wie erstelle ich einen index.php?=

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Wie erstelle ich einen index.php?=

    Hallo Community...

    ich bastel momentan ein paar neue Seiten...
    Nun stehe ich vor dem Problemchen, das ich ein Menü einbauen will...

    Ich möchte die Links so erstellen, das diese im selben fenster angezeigt werden jedoch nicht das menü verschwindet.

    Habe es schon bei mehreren CMS Systemen gesehen, das da dann steht:

    <a href="index.php?=about_us">Über uns</a>

    Dies wird dann auch so in der Browserzeile übergeben...
    Nun die warscheinlich dümmste Frage der Welt...

    WIE GEHT DAS?

    Ich stehe absolut derzeit auf dem Schlauch und google bringt mich leider nicht weiter.

    Hoffe Ihr versteht was ich meine und könnt mir vielleicht helfen..

    Vielen Dank im Voraus.

    SaMsOn
    Stefan

  • #2
    Das sind einfach Parameter die an die URL angehängt wurden. Diese Parameter kannst du über $_GET['name'] abfragen.
    Die Parameter musst du einfach an die URL dranhängen. Hinter dem namen der Datei ein ? und alle anderen Parameter mit einem & also quasi so:

    Code:
    index.php?name1=value1&name2=value2
    Das umgeht aber noch lange nicht dein Problem. Die Seite wird auch so neu geladen.

    Kommentar


    • #3
      Mit den verschiedenen Parametern liest du dann, wie erwähnt, mit $_GET['name'] die Werte aus, womit du dann z.B. per if-Bedingung die Inhalte regeln kannst.
      PHP-Code:
      <?
      $name = $_GET['name'];
      if (!$name || $name == 'name0') { //Deise Schleife wird ausgeführt wenn _GET name0 liefert, oder _GET nicht definiert ist -> Startseite z.B.
          //Inhalt der Seite mit Name0
      }
      elseif ($name == 'name1') {
          //Inhalt der Seite mit Name1
          }
      elseif ($name == 'name2') {
          //Inhalt der Seite mit Name2
      }
      elseif (...) {


      //usw usw.
      ?>
      Grüsse

      Kommentar


      • #4
        Mit den verschiedenen Parametern liest du dann, wie erwähnt, mit $_GET['name'] die Werte aus, womit du dann z.B. per if-Schleife die Inhalte regeln kannst.

        PHP-Code:
        <? 
        $name = $_GET['name']; 
        if (!$name || $name == 'name0') { //Deise Schleife wird ausgeführt wenn _GET name0 liefert, oder _GET nicht definiert ist -> Startseite z.B. 
            //Inhalt der Seite mit Name0 

        elseif ($name == 'name1') { 
            //Inhalt der Seite mit Name1 
            } 
        elseif ($name == 'name2') { 
            //Inhalt der Seite mit Name2 

        elseif (...) { 

        }  
        //usw usw. 
        ?>
        Grüsse

        Böse... sowas wie ne if-schleife gibts nicht..

        außerdem würde ich

        a. zu allererst überprüfen, ob ein $_GET['name'] überhaupt übergeben wurde (ansonsten gibts nen notice error)

        b. statt dem if, elseif teil ein einfaches switch einbauen!


        lg
        Andi

        Kommentar


        • #5
          und auch nicht

          <?

          schreiben, sondern immer

          <?php

          Die einzelnen Menüpunkte sprichst du so an:
          index.php?seite=start
          index.php?seite=anmelden
          index.php?seite=impressum

          Meist werden das ja recht viele Menüpunkte, sodass diese elseif-Wiederholungen nicht grade zur Lesbarkeit des Codes beitragen. Man kann das recht elegant so lösen:

          PHP-Code:
          // Ist ein parameter übergeben worden?
          if ( isset($_GET['seite']) ) {
            
          $seite $_GET['seite'];
          } else {
            
          $seite 'start';
          }
           
          // in $seite ist jetzt der übergebene Wert

          switch ($seite) {

            case 
          'impressum':
              include 
          'impressum.php';
              break;

            case 
          'anmelden':
              include 
          'anmelden.php';
              break;

            case 
          'start':
            default:
              include 
          'start.php';

          Sehr wichtig ist es, dass du NIEMALS so was schreibst: include($seite)
          Ein böser Mensch könnte deine Seite aufrufen mit index.php?seite=http://viagrasales.org

          Kommentar


          • #6
            Ein böser Mensch kann damit noch viel bösere sachen machen^^

            Kommentar


            • #7
              Könnte man auch so lösen =)

              PHP-Code:
              function getcontentpage () {
                      if(isset(
              $_GET['content'])) {
                      
              $site basename($_GET['content']);
                              if(
              strtolower($site) == 'index') {
                                      echo 
              "<h3>Fehler</h3>Diese aufgerufene Seite würde Fehler erzeugen!";
                                      exit;
                              }
                                      if(
              is_file($site.'.php')) {
                                              include(
              $site.'.php');
                                      } else { echo 
              "<h3>Fehler</h3>Die aufgerufene Seite wurde nicht gefunden..."; }
                                                      } else {
                        include(
              'news.php');
                                                      }

              Zum Thema böse Menschen, gibt es Tutorials zum Thema Sicherheitslücken fixen etc?

              Kommentar


              • #8
                Controlling via switch
                Controlling via Array (ab "Zurück zum Thema:")

                Kommentar


                • #9
                  Wäre auch so zu regeln:

                  Diese brauchst du zum ersten laden der Seite, hiermit gibst du an welche geladen werden soll, wenn keine Angabe gemacht worden ist. Kommt meistens in den Head.
                  PHP-Code:
                   if (strstr($_GET["cat"], '://') OR empty($_GET["cat"])) $_GET["cat"] = "home"

                  so rufst du die seiten auf:
                  PHP-Code:
                  <?php
                      
                  include(''.$_GET["cat"].'/content.php');
                      
                  ?>

                  und die Links sehen dazu dann so aus:
                  a href="page.php?cat=home">

                  Kommentar


                  • #10
                    Vor allem das ''. ist wiedermal hochgradig sinnvoll. */ironie*

                    Kommentar


                    • #11
                      Danke erstmal für die vielen Antworten. Das Forum und vorallem die User hier sind echt erste Sahne


                      Ich würde gerne auf die Lösung von lastresort eingehen...

                      PHP-Code:
                      if (strstr($_GET["cat"], '://') OR empty($_GET["cat"])) $_GET["cat"] = "home"
                      und
                      PHP-Code:
                      include(''.$_GET["cat"].'/content.php'); 
                      brauch ich also nur den include($_GET["cat"].'/content.php'); in die gewünschte tabelle einfügen und dann die zu linkenden texte mit index.php?=datei angeben?

                      Danke schon mal

                      Grüße SaMsOn

                      Kommentar


                      • #12
                        Danke für Eure hilfe... Ich habs gelöst bekommen....
                        Folgenden Code habe ich nun verwendet... Vielleicht habt ihr noch einen verbesserungsvorschlag...?

                        [Dies steht in der acp.php am anfang vom Body Tag]
                        PHP-Code:
                        $site $_GET['site'];

                        if(!isset(
                        $_SERVER['REQUEST_URI'])) {
                          
                        $arr explode("/"$_SERVER['PHP_SELF']);
                          
                        $_SERVER['REQUEST_URI'] = "/" $arr[count($arr)-1];
                          if (
                        $_SERVER['argv'][0]!="")
                           
                        $_SERVER['REQUEST_URI'] .= "?" $_SERVER['argv'][0];
                        }
                        ?> 
                        [Das steht im Content bereich... Also in der Tabelle wo der Content geändert werden soll]

                        PHP-Code:
                        if(isset($site) && $site!="news") include($site.'.php'); 
                        else include(
                        'home.php'); 
                        nun noch eine abschließende frage... ist der code so sicher genug?

                        Grüße Stefan alias SaMsOn

                        Kommentar


                        • #13
                          ist der code so sicher genug?
                          Nein. Das Warum findest Du über die Boardsuche oder unter Google: "php get include sicherheit" oder so. Auch in einem der oben verlinkten Threads: http://www.php.de/php-einsteiger/133....html#post9721

                          Kommentar


                          • #14
                            @nikosch: ich habe vor 2 Tagen mal aus Neugierde eine Analyse von XSS- bzw. Code-Injection-Attacken (wie mit dem obigen Code möglich ist) erstellt. Ziel: APF-Seite. Ergebnis: es gab in 2009 ungefähr 120.000 eindeutige Angriffe und insgesamt um die 500.000 Angriffe. Wenn ich sehe, welche Lücken da versucht werden auszunutzen, wird mir bei dem obigen Code echt schlecht.

                            Kommentar


                            • #15
                              danke für die schnelle antwort... leider komme ich damit nicht klar...
                              du hast mich sicherlich direkt auf die lösung gestoßen, aber leider finde
                              ich diese in den beiträgen nicht...?!
                              wo genau würdet ihr beide denn was an meinem code verändern,
                              um das er sicherer ist?

                              Danke schon mal im voraus.
                              Stefan

                              Kommentar

                              Lädt...
                              X