Ankündigung

Einklappen
Keine Ankündigung bisher.

php includes/navigation problem

Einklappen

Neue Werbung 2019

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

  • php includes/navigation problem

    hallo!

    seid mir bei folgendem problem bitte nicht boese, wenn ich doofe fragen stelle, ich hab naemlich so ziemlich ueberhaupt keine ahnung von php, muss das hier aber irgendwie zum laufen kriegen.

    bis jetzt hatte ich eine php navigation, die so aussah:

    Code:
    <?php
    $page = $_GET['x'];
    if($page == "" || $page == "home") {
    include('header.php');
    include('home.php');
    include('footer.php');
    } 
    else if($page == "bla") {
    include('header.php');
    include('blabla.php');
    include('footer.php');
    }
    ?>
    der host meiner seite hat diesen code jetzt allerdings verboten, da er ein sicherheitsrisiko darstellt, und hat alle hostees gebeten, folgenden code zu benutzen:

    Code:
     <?php 
    $x = $_GET['x']; 
    
    if(!$x) { 
    include("$default"); 
    
    } else { 
    $t = apache_lookup_uri($x); 
      if (!file_exists($t->filename)) { 
        // invalid input, probably deliberate 
        die('Invalid'); 
      } 
      else { 
        include(escapeshellcmd("$x")); 
      } 
    } 
    ?>
    jetzt weiss ich allerdings nicht, wie ich damit das gleiche machen kann, was der vorherige code gemacht hat. der erste teil ist klar, wenn nichts hinter dem .php?x= steht, dann wird die index seite eingefuegt, ich habe da hingeschrieben

    Code:
    ...
    if(!$x) { 
    include('header.php');
    include('home.php');
    include('footer.php');
    ...

    und das funktioniert auch (oder sollte das auch anders aussehen?). nur was mache ich mit dem rest? wenn ich .php?x=bla eintippe, soll ein header, bla.php und ein footer eingefuegt werden. was muss ich dafuer schreiben? oder geht das gar nicht mit diesem script?

    waere nett wenn mir irgendwer helfen koennte, und nochmals sorry wenn die fragen arg dumm sind.

    danke!

  • #2
    PHP-Code:
    <?php
    elseif($x == "bla") {
        include(
    'header.php');
        include(
    'blabla.php');
        include(
    'footer.php');

    ?>
    ich glaube das du das suchst ^o)
    :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

    Kommentar


    • #3
      PHP-Code:
      <?php
      $x 
      $_GET['x'];

      if(!
      $x || $x == 'home') {
        include(
      'header.php');
        include(
      'home.php');
        include(
      'footer.php'); 
      } else {
      $t apache_lookup_uri($x);
        if (!
      file_exists($t->filename)) {
          
      // invalid input, probably deliberate
          
      die('Invalid');
        }
        else if (
      $x == 'bla') {
          
      //include(escapeshellcmd("$x"));
          // hier ist deine "else" bedingung
          
      include('header.php');
          include(
      'blabla.php');
          include(
      'footer.php'); 
        }
      }
      ?>
      Ist aber sehr seltsam, dass euch der Hoster vorschreibt, welchen Code ihr verwenden sollt, spricht eigentlich nicht so für die Kompetenz des Hosters, denn der könnte sowas mit geeigneten php.ini Settings von vornherein besser lösen. Zumal du offenbar keine Ahnung von PHP hast (kein Vorwurf) und wenn du da nur eine Bedingung falsch kopierst oder eintippst ist eh alles fürn Arsch.

      Edit, warum bricht er meinen Text nicht um (sorry dafür)

      Kommentar


      • #4
        naja, ist keine webhosting firma, sondern eher ein network fuer fanseiten, wo gute seiten kostenlos gehostet werden. ein paar von den seiten wurden anscheinend gehackt, also hat der host jemanden engagiert, der die sicherheitsluecke sucht, und dann jemanden, der einen sichern code schreibt.

        aber ich werd jetzt erstmal das probieren was du mir da geschrieben hast. danke!

        Kommentar


        • #5
          Dann sage dem Hoster mal, dass
          PHP-Code:
          $x $_GET['x'
          auch nicht das Gelbe vom Ei ist, denn $_GET['x'] ist nur vorhanden, wenn das Script auch mit diesem Parameter aufgerufen wurde. Ein isset wäre da wohl ordentlicher.

          Gruß
          phpfan

          Kommentar


          • #6
            irgendwas funktioniert da nicht

            ich hab es genau so uebernommen wie es da steht, aber wenn ich .php?x=bla eintippe, kommt immer 'Invalid'. blabla.php ist aber hochgeladen, und im gleichen ordner wie die eigentliche datei. schreibfehler sind auch keine drin.

            irgendwelche ideen wieso das nicht geht?

            Kommentar


            • #7
              Denk dich doch mal rückwärts durch.
              Du landest in der invalid-Schleife. Daraus folgt, die if ()-Bedingung dafür ist TRUE (== !file_exists($t->filename)). D.h. die Datei $t->filename existiert nicht.
              Lass dir doch dann mal einfach ausgeben, was darin steht...

              Kommentar


              • #8
                Zitat von Zergling
                Ist aber sehr seltsam, dass euch der Hoster vorschreibt, welchen Code ihr verwenden sollt, spricht eigentlich nicht so für die Kompetenz des Hosters, denn der könnte sowas mit geeigneten php.ini Settings von vornherein besser lösen. Zumal du offenbar keine Ahnung von PHP hast (kein Vorwurf) und wenn du da nur eine Bedingung falsch kopierst oder eintippst ist eh alles fürn Arsch.
                So wie ich das sehe, geht es darum, den übergebenen Parameter unmittelbar als Dateiname zu verwenden. Das kann natürlich Probleme geben.
                In dem vorliegenden Script wird aber abhängig vom Parameter eine fest vorgegebene Datei eingebunden.

                Ob die Regel damit überhaupt greift, wäre nochmal zu prüfen.
                **********************************
                Nein, ich bin nicht die Signatur.
                Ich putze hier nur.
                **********************************

                Kommentar

                Lädt...
                X