Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Variablenübergabe funktioniert nicht

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Variablenübergabe funktioniert nicht

    Folgendes Problem: Nach Umzug zu einem neuen Provider funktioniert die Variablenübergabe an ein eingebundenes PHP-Script nicht.

    Ich habe ein Script main.php, darin werden header.php, die eigentliche Seite und footer.php geladen.

    Hier am Beispiel der Startseite:

    Aufruf mit
    main.php?inhalt=start

    PHP-Code:
    <?php
    $inhalt
    =$_REQUEST['inhalt'];

    echo 
    $inhalt;   // gibt $inhalt korrekt aus

    include('header.php');  //funktioniert

    //include 'http://www.danielms.de/header.php?inhalt='.$inhalt;   //funktioniert nicht, auch nicht mit Klammern

    include($inhalt.".php");  //funktioniert
    include("footer.inc");    //funktioniert
    ?>

    Hat jemand ne Idee, woran es liegen könnte?
    error_reporting(E_ALL); hatte ich schon eingebaut, hat keinen Fehler angezeigt.

    PHP Version 5.3.3-7+squeeze14

    Gruß Daniel

  • #2
    Was Du da machst, ist im höchsten Maße unsicher, weil auf diese Weise alles Mögliche includiert werden kann, weil Du den Parameter gar nicht verifizierst. Also unabhängig von Deinem Problem musst Du da eine Prüfung einbauen. Du kannst Dir z.B. ein Array machen mit den erlaubten Seiten und dann prüfen, ob die angeforderte Seite im Array enthalten ist [ in_array() ] und erst dann wird die Datei includiert.

    Zu Deinem Problem: Funktioniert denn nur Dein dynamischer Include nicht oder auch die statischen (header, footer) nicht? Aus Deinen Kommentaren ist das nicht aus zu machen, weil bei allen Includes steht "funktioniert".
    Wenn alles nicht funktioniert, versuche es mal mit dem absoluten Pfad zu den Dateien. So was in der Art: /userXYZ/htdocs/bla/datei.php
    Um herauszufinden welcher Pfad der richtige ist, hilft Dir
    PHP-Code:
    var_dump($_SERVER); 
    weiter.

    Kommentar


    • #3
      Ich hab alles überflüssige aus dem Beispielcode rausgenommen. Klar prüfe ich die eingebundenen Seiten.

      Zu deiner Frage: Wenn ich es so nehme, wie es oben steht, dann werden die Variable (das echo) und alle drei includes angezeigt. Nehme ich für den Header die Variante mit Variablenübergabe, dann wird nur die Variable angezeigt, ansonsten ist die Seite leer.

      Ich verstehs nicht, weil es so beim alten Provider funktioniert hat. Kann man php so konfigurieren, dass keine Variablen beim include übergeben werden können?

      Gruß Daniel

      Kommentar


      • #4
        Also ist Dein Problem, dass in einer includierten Datei keine Variablen aus der Eltern-Datei angezeigt werden? Und die dynamische Einbindung von $inhalt ist nicht Dein Problem?

        Kommentar


        • #5
          PHP-Code:
          include 'http://www.danielms.de/header.php?inhalt='.$inhalt
          Diese Zeile funktioniert nicht (header.php wird nicht angezeigt), das ist mein Problem. $inhalt wird richtig gefüllt. Okay, vielleicht ist der Threadtitel etwas unglücklich gewählt. "Include von php-Datei mit Variable funktioniert nicht" trifft es eher.

          Gruß Daniel

          Kommentar


          • #6
            wie siehts damit aus ?
            http://www.php.net/manual/de/filesys...llow-url-fopen

            Kommentar


            • #7
              Achso, die auskommentierte Zeile war Dein Problem.
              Naja, stell Dir mal vor das würde funktionieren. Dann könnte jeder Hansel Deine Dateien einbinden und somit auch Deinen PHP-Quelltext einsehen.
              Also bevor Du da jetzt mit allow_url_include oder sonstwas rumspielst, nimm das http://www. raus und gib die Datei mit dem richtigen absoluten Pfad auf Deinem Server an.

              Kommentar


              • #8
                Das funktioniert leider nicht. header.php wird gefunden, header.php?inhalt=start nicht. Habe dann hier gelesen, dass er wohl in dem Fall eine Datei namens header.php?inhalt=start sucht, die gibts ja auch nicht. Deswegen das http-Gedöns.

                Gruß Daniel

                Kommentar


                • #9
                  Habe diese Zeile eingefügt:

                  PHP-Code:
                  ini_set("allow_url_include"true); 
                  Ändert nichts am Ergebnis. phpinfo() zeigt beim include "off" an, auch nach dem Setzen. Daran wirds wohl liegen.

                  Gruß Daniel

                  Kommentar


                  • #10
                    Ach jetzt habe ich erst verstanden was Du da willst.
                    Also allow_url_include machst Du bitte wieder aus. Es hat schon seine Gründe, warum das standardmäßig ausgeschaltet ist. Und das ist auch nicht Dein Problem.

                    Du brauchst inhalt nicht per Parameter zu übergeben, da es in Deinem Script schon vorhanden ist. Vielleicht zeigst Du uns mal wie Deine header.php aussieht und was Du da mit $inhalt machen willst.

                    Ich vermute Du benutzt es dort in einer Funktion und auf dem alten Webspace war register_globals eingeschaltet und $inhalt somit immer verfügbar, weil es ein Alias für $_GET['inhalt'] ist.

                    Kommentar


                    • #11
                      Die Variable dient nur dazu, die ausgewählte Seite im Menü hervorzuheben. header.php funktioniert hervorragend, wenn man es einzeln aufruft. Beispiel: http://danielms.de/header.php?inhalt=portfolio

                      PHP-Code:
                      <?php

                        $inhalt
                      =$_REQUEST['inhalt'];


                        
                      $pages=array("projekte" => "projekte",
                                     
                      "portfolio" => "portfolio",
                                     
                      "kontakt" => "kontakt",
                                     
                      "impressum" => "impressum");

                         foreach(
                      $pages as $page => $pname) {
                           
                      $pos strpos($inhalt$page);
                           if(
                      $pos === false) {
                             echo (
                      '<li><a href="main.php?inhalt='.$page.'" >'.$pname.'</a></li>');
                           } elseif (
                      $page <> "start") {
                             echo (
                      '<li><a href="main.php?inhalt='.$page.'" class="active">'.$pname.'</a></li>');
                           }
                         }

                      ?>

                      Kommentar


                      • #12
                        Mal ein Tipp für die Zukunft: Wenn Du der Meinung bist, dass ein bestimmtes Problem Auslöser der ganzen Misere ist, dann baue Dir eine Test-Seite nur mit diesem Problem.
                        Also in Deinem Fall wäre das:

                        PHP-Code:
                        //parent.php
                        $test="ABC";
                        include_once(
                        "child.php"); //ggf. den absoluten Pfad einbinden 
                        PHP-Code:
                        //child.php
                        var_dump($test); 
                        Und dann rufst Du parent.php im Browser auf. Und wenn jetzt keine Ausgabe von ABC erfolgt, dann würde ich den Webspace wechseln
                        Was aber nicht passieren wird.

                        Kommentar


                        • #13
                          Das heißt, Variablen, die in einem PHP-Script definiert werden, sind automatisch in includierten PHP-Scripten verwendbar? Coole Sache, das funktioniert tatsächlich. Sorry, war mir nicht bekannt. Ich dachte, ich muss die immer übergeben, wenn ich die weiter nutzen will. Hättste ja auch gleich sagen können

                          Danke!

                          Gruß Daniel

                          Kommentar


                          • #14
                            Wenn Du gleich genau gesagt hättest wo Dein Problem liegt, hätte ich das auch tun können

                            Kommentar

                            Lädt...
                            X