Frage zu include

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

  • Frage zu include

    Hoi

    ich habe den content meiner Seite mit includes eingebunden. Jetzt möchte ich wenn eine Seite noch nicht erstellt ist, das ein von mir devinierter text angezeigt wird, oder auf eine andere url umgeleitet wird.
    Das ganze hab ich so probiert.

    PHP-Code:
    <?php 
    require_once 'includes.php';
    ?>
    in der includes.php steht:

    PHP-Code:
    <?php
    if ($_GET['side'] == '') { include('include/start.php'); }
    if (
    $_GET['side'] == 'news') { include('include/news.php'); }
    .
    .
    .
    else 

    include 
    'http://www.xyz.de'

    ?>
    Jetzt wird zwar die url eingebunden, aber der Fehler ist noch da wie bekomme ich diesen weg?

    Schön wäre auch noch jemand schreiben könnte wie das mit einem Text funktioniert.
    Zuletzt geändert von MaddinX; 16.05.2006, 19:12.

  • #2
    Re: Frage zu include

    Original geschrieben von MaddinX
    in der includes.php steht:
    [X] Du möchtest switch() kennenlernen.
    Jetzt wird zwar die url eingebunden, aber der Fehler ist noch da wie bekomme ich diesen weg?
    Vielleicht möchtest du uns erst mal mitteilen, um welchen Fehler es sich denn handelt ...?
    Schön wäre auch noch jemand schreiben könnte wie das mit einem Text funktioniert.
    Statt einem include einfach mal echo benutzen ...?
    (Oder mittels readfile eine Textdatei einlesen.)
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Re: Frage zu include

      Du mußt deinen Text nur in PHP übersetzen, der Gedankengang ist schon richtig.
      Jetzt möchte ich wenn eine Seite noch nicht erstellt ist,
      if (!file_exists(...))
      das ein von mir devinierter text angezeigt wird,
      echo 'defffffinierter Text';
      oder auf eine andere url umgeleitet wird.
      header('Location: http://example.com/path/site.ext');

      So wie du das angefangen hattest, wird das nichts. Da müßtest du immer schön mit elseif arbeiten, also if-elseif-elseif-...-elseif-else.
      PHP-Code:
      if (empty($_GET['side']))
          include(
      'include/start.php');
      elseif (
      $_GET['side'] == 'news')
          include(
      'include/news.php');
      .
      .
      else 
          include 
      'http://www.xyz.de/'// bad habit 
      Nachteil dieser Methode: Für jede neu erstellte Seite mußt du einen weiteren elseif-Zweig einbasteln.
      Besser wäre, wenn du die Bedingungen festlegst, die eine Seite erfüllen muß, um included werden zu können.

      Minimale und schon ausreichende Bedingungen wären:
      1. muß auf dem lokalen System liegen
      2. im Ordner xyz
      3. muß mit .php(x) (x = 3, 4, 5, s) oder .(y)htm(l) (y = s, x) enden
      Weitere/schärfere Bedingungen könnten sein:
      4. muß mit _inc.php(x) oder _inc.(y)htm(l) enden

      Könnte ansatzweise so aussehen:
      PHP-Code:
      // Standard-Include
      $default 'start.inc.php';

      // Bedingung 2
      $dir 'include/';

      // Bedingung 3, läßt sich leicht zu Bedingung 4 ausbauen
      $ext = array('.php''.php3''.php4''.php5''.phps',
                       
      '.htm''.html''.shtm''.xhtm''.shtml''.xhtml');

      if (empty(
      $_GET['side'])) 
          include 
      $dir.$default;

      // Anwendung Bedingung 1/2
      elseif (!file_exists($dir.$_GET['side'])) 
          include 
      $dir.$default;

      // Anwendung Bedingung 3/4    
      elseif (!in_array(substr($_GET['side'], strrpos($_GET['side'], '.'))))
          include 
      $dir.$default;

      else
          include 
      $dir.$_GET['side']; 
      Das ist kein einsatzfertiger Code! Man sollte es zum Beispiel noch so umstricken, dass in der URL nicht der komplette Dateiname steht, da sonst User auf die Idee kommen, die Datei direkt öffnen zu wollen. Dürfte zwar schwer werden, besonders wenn man dem Include-Verzeichnis einen anderen Namen gibt, aber es verseucht doch die Serverlogs und sieht unprofessionell aus.

      Kommentar


      • #4
        Danke erstmal dafür, mein problem ist nur das ich von php null Ahnung habe.
        Ich hab das andere script auch nur von einem bekannten bekommen, und nur dafür verwendet das ich mein Design ändern kann ohne das ich jedesmal ewig viele Seiten ändern muß.
        Wenn ich das per include mache kann ich mir ne menge Arbeit sparen.
        Das ganze teil sieht so aus
        PHP-Code:
        if ($_GET['side'] == 'news') { include('include/news.php'); }
        if (
        $_GET['side'] == 'uber') { include('include/uber.php'); }
        .
        .
        .
        usw
        Meine Verlinkung schaut dann so aus index.php?side=xxx
        Und wie ich das dann in dein script einbaue ist mir auch nicht ganz klar.

        Auf die Idee mit dem umleiten bzw. text anstatt einer Fehlermeldung, bin ich nur gekommen weil noch viel an der Seite gemacht werden muß , aber teile davon halt schon online gestellt werden müssen.

        Kommentar


        • #5
          Tja was soll ich dazu sagen? Wenn es deine Fähigkeiten übersteigt, bleiben dir nur zwei Möglichkeiten: Du lernst dazu oder du läßt es dir erledigen. Letzteres habe ich schon fast getan - du mußt eigentlich nur den Code, den du hier gepostet hast durch meinen ersetzen.
          Ansonsten -> Jobangebote oder Projekthilfe.

          Kommentar


          • #6
            Ok ich muß leider zugeben du hast recht. Ich hab mir das jetzt mal von einem bekannten machen lassen.

            PHP-Code:
            <?php
                
            function check_file($include_file) {
                    if (!
            file_exists($include_file)) {
                        echo 
            "Hier wird noch gearbeitet...!";
                    }
                    else
                    {
                        include(
            $include_file);
                    }
                }
                

                switch (
            $_GET['side']) {
                    case 
            "xxx":
                        
            check_file("include/xxx.php");
                        break;
                    case 
            "xxx":
                        
            check_file("include/xxx.php");
                        break;
                    case 
            "xxx":
                        
            check_file("include/xxx.php");
                        break;
                    default:
                        
            check_file("include/start.php");
                        break;
                }
            ?>
            Ist das so ok? Also laufen tut es, ist nur die frage ob man damit jetzt keinen unfug machen kann?

            Kommentar


            • #7
              Ist okay so. Aber wenn du eine neue Seite anlegst, mußt du auch einen entsprechenden case-Zweig schreiben.

              Kommentar


              • #8
                Jo das weis ich. Danke nochmal für deine hilfe.

                Kommentar

                Lädt...
                X