Roman: Problem mit include()

Hallo erstmal,

ich möchte in meine impressum.html ein E-Mail-Formular "includen".

dazu habe ich erstmal meine impressum.html in impressum.php umbenannt:

impressum.html -> impressum.php

die sieht jetzt erstmal so aus:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

<html>

<head>

<title>_.-:=|) www.roman-online.net.tc (|=:-._</title>

<meta name="author" content="...">
<meta name="discription" content="private homepage">
<meta name="date" content="2006-09-16T16:55+01:00">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-88-59-1">
<meta name="robots" content="index">

</head>

<body bgcolor="#000000" text="#C0C0C0" link="#C0C0C0" vlink="#C0C0C0" alink="#C0C0C0">

<br>

<center>

<font size="6" face="Arial"><u>Impressum</u></font>

<br><br>

<hr>

<br><br>

<font size="4" face="Arial">Verantwortlich für den Inhalt dieser Homepage, ausgenommen der Inhalte des Gästebuches ist:

<br><br>

...

</center>

</body>

</html>

Jetzt habe ich folgendes eingefügt:

<?php

include "...../email.php?id=admin

?>

Und nun sieht das ganze so aus:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

<html>

<head>

<title>_.-:=|) www.roman-online.net.tc (|=:-._</title>

<meta name="author" content="...">
<meta name="discription" content="private homepage">
<meta name="date" content="2006-09-16T16:55+01:00">
<meta http-equiv="Content-Type" content="text/html; charset=ISO-88-59-1">
<meta name="robots" content="index">

</head>

<body bgcolor="#000000" text="#C0C0C0" link="#C0C0C0" vlink="#C0C0C0" alink="#C0C0C0">

<br>

<center>

<font size="6" face="Arial"><u>Impressum</u></font>

<br><br>

<hr>

<br><br>

<font size="4" face="Arial">Verantwortlich für den Inhalt dieser Homepage, ausgenommen der Inhalte des Gästebuches ist:

<br><br>

...

<br><br><br>

<?php

include "...../email.php?id=admin";

?>

</center>

</body>

</html>

und nun sollte das ja eigentlich funktioneieren, ODER NICHT???

Es Funktioniert nicht!

kann mir jemand helfen???

LG´s

Roman

"..." (Punkte) sind nur als Platzhalter gedacht

  1. achja ...

    die email.php soll visuell sichtbar sein in der impressum.html/php und das ohne irgentwelche frames oder iframes

    LG´s

    Roman

    1. hast du es hochgeladen? verlink es mal.
      MFG
      bleicher

      --
      __________________________-
      Menschen an sich , sind nicht schlecht - es sind nur ihre Taten (c).
      1. hast du es hochgeladen? verlink es mal.

        na klar habe ich das hochgeladen ... sonst würde ich mich darüber auch net so aufregen das es nicht geht...

        ^^

  2. n'abend,

    ich gehe mal davon aus, dass du mit deinen Codebeispielen sagen willst, dass dein PHP-Code (<?php include "...../email.php?id=admin"; ?>) nicht ausgeführt wird, sondern exakt so in deinem HTML-Quelltext erscheint.

    Ist PHP denn bei deinem Hoster überhaupt verfügbar?

    weiterhin schönen abend...

    --
    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
    1. dass dein PHP-Code (<?php include "...../email.php?id=admin"; ?>)
      nicht    ausgeführt wird, sondern exakt so in deinem HTML-Quelltext
      erscheint.

      also:

      mein Code nochmal:

      <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

      <html>

      <head>

      <title>_.-:=|) www.roman-online.net.tc (|=:-._</title>

      <meta name="author" content="roman-online.net.tc">
      <meta name="discription" content="private homepage">
      <meta name="date" content="2006-09-16T16:55+01:00">
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-88-59-1">
      <meta name="robots" content="index">

      </head>

      <body bgcolor="#000000" text="#C0C0C0" link="#C0C0C0" vlink="#C0C0C0" alink="#C0C0C0">

      <br>

      <center>

      <font size="6" face="Arial"><u>Impressum</u></font>

      <br><br>

      <hr>

      <br><br>

      <font size="4" face="Arial">Verantwortlich für den Inhalt dieser Homepage, ausgenommen der Inhalte des Gästebuches ist:

      <br><br>

      Roman Ueberück<br>Freienstr.&nbsp;4<br>Bilm<br>D&nbsp;31319&nbsp;Sehnde</font>

      <br><br><br>

      <?php

      include "http://roman1528.ro.funpic.de/private/guestbook/email.php?id=admin";

      ?>

      </center>

      </body>

      </html>

      genau so steht es in meiner impressum.php

      und nach dem hochladen wird nur der html code angezeigt (also ausgeführt)

      kannste dir ja mal anschauen:

      [url=http://roman1528.ro.funpic.de/private/impressum/impressum.html]Impressum[/url]

      ...

      Ist PHP denn bei deinem Hoster überhaupt verfügbar?

      ja PHP ist verfügbar. sonst würde mein GB garnicht funktionieren.

      1. n'abend,

        <?php

        include "http://roman1528.ro.funpic.de/private/guestbook/email.php?id=admin";

        ?>

        Na moment mal. Du hast eingangs nichts davon gesagt, dass du eine http-ressource includieren möchtest. Ich kann mir sehr gut vorstellen, dass das bei funpic nicht gestattet ist (, da es ein Sicherheitsrisiko darstellt).

        Herausfinden kannst du das indem du eine Datei (nennen wir sie info.php) hochlädst, die folgenden Inhalt hat:

        <?php echo phpinfo(); ?>

        Wenn du dieses Script aufrufst, bekommst du die PHP-Konfiguration (und einige andere Informationen) vorgesetzt. Schau in der Konfigurationstabelle nach allow_url_fopen. Sollte neben dieser Direktive der Wert "Off" stehen, so kannst du keine HTTP-Ressourcen mit den normalen Dateifunktionen benutzen.

        Da wir sowas aber sowieso nicht wollen, binden wir deine email.php anders ein:

        <?php  
          
        // in deinem Beispiel übergibst du den Parameter id, das machen wir hier auch:  
        $_GET['id'] = 'admin';  
        // solltest du dich auf register_globals verlassen, was wir nicht hoffen, setzen wir diese Variable eben auch noch:  
        $id = 'admin';  
        // wir befinden uns im Verzeichnis impressum, weshalb wir eine Ebene aufsteigen um in das Verzeichnis guestbook einsteigen zu können:  
        include('../guestbook/email.php');  
          
        ?>
        

        [url=http://roman1528.ro.funpic.de/private/impressum/impressum.html]Impressum[/url]

        Die "verlinkte" Seite existiert nicht. impressum.php hingegen schon. Links werden in diesem Forum anders angegeben, nämlich so: [ link : http://adresse.de/des/links.htm @ title = Titel des Links ] (ohne die Leerzeichen, versteht sich)

        weiterhin schönen abend...

        --
        Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
        sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
        1. Herausfinden kannst du das indem du eine Datei (nennen wir sie info.php) hochlädst, die folgenden Inhalt hat:

          <?php echo phpinfo(); ?>

          da steht off ... und was nu???

          Da wir sowas aber sowieso nicht wollen, binden wir deine email.php anders ein:

          <?php

          // in deinem Beispiel übergibst du den Parameter id, das machen wir hier auch:
          $_GET['id'] = 'admin';
          // solltest du dich auf register_globals verlassen, was wir nicht hoffen, setzen wir diese Variable eben auch noch:
          $id = 'admin';
          // wir befinden uns im Verzeichnis impressum, weshalb wir eine Ebene aufsteigen um in das Verzeichnis guestbook einsteigen zu können:
          include('../guestbook/email.php');

          ?>

           so jetzt gehts richtig los ....  
            
          ich habe von PHP mal so garkeinen schimmer und nu steh ich da.  
            
          ich will das das ganze anschließend ungefähr so aussieht...  
            
          [BILD](http://roman1528.ro.funpic.de/private/pics/beispiel.jpg)  
            
          wenn das irgentwie geht und du mir sagen könntest wie, (und wenns geht einfach) wäre ich dir sehr verbunden  
            
          Ich habe nämlich echt keinen plan von dem ganzen..  
            
          LG´s Roman
          
          1. n'abend,

            wenn das irgentwie geht und du mir sagen könntest wie, (und wenns geht einfach) wäre ich dir sehr verbunden

            das habe ich doch bereits getan?

            statt deinem bisherigen Versuch ( <?php include "http://roman1528.ro.funpic.de/private/guestbook/email.php?id=admin"; ?> ), in welchem du versuchst eine Seite zu includieren, die dir der Webserver schickt, nehmen wir mal eben einen Ansatz, der direkt die Datei includiert:

            <?php  
              
            // in deinem Beispiel übergibst du den Parameter id, das machen wir hier auch:  
            $_GET['id'] = 'admin';  
            // solltest du dich auf register_globals verlassen, was wir nicht hoffen, setzen wir diese Variable eben auch noch:  
            $id = 'admin';  
            // wir befinden uns im Verzeichnis impressum, weshalb wir eine Ebene aufsteigen um in das Verzeichnis guestbook einsteigen zu können:  
            include('../guestbook/email.php');  
              
            ?>
            

            Obiger Code berücksichtigt sogar dein "?id=admin". Der Parameter wird halt nicht als solcher übergeben, sondern als Variable gesetzt.

            Damit müssten wir geklärt haben, wie man anderes Script includiert und wie man diesem Script sogar noch Parameter mitgibt.

            Wenn du das hinbekommen hast, können wir uns auch schon an das nächste Problem machen. Denn so wie ich das sehe wird aus dem einfachen includieren der email.php nichts, da diese ein _vollständiges HTML-Dokument_ ausgibt. Es macht sich aber nicht so schön ganze HTML-Dokumente in andere HTML-Dokumente zu integrieren, da das invaliden Code erzeugt und wahrscheinlich zu eher zweifelhafte Resultaten führt. Aus diesem Grunde müssen wir sicherstellen, dass falls die email.php in deinen Impressum includiert wird, dieses ganze <doctype><html><head>..<body> gedöns _nicht_ ausgegeben wird.

            eine angepasste email.php könnte folgendermaßen aussehen:

            <?php  
            // prüfen ob die Variable $includedByImpressum gesetzt ist,  
            // wenn nicht, dann html-gedöns ausgeben  
            // das ! vor dem isset() bewirkt die logische umkehrung, aus true wird false und as false wird true  
            // (nachzulesen im Manual, welches du dir durchaus mal anschauen solltest)  
            if( !isset($includedByImpressum) )  
            {  
            ?>  
              
            <!--  
              hier kommt alles rein, vom dateianfang bis zu dem part,  
              den du im impressum includieren möchtest  
             -->  
              
            <?php  
            }  
            ?>  
              
            <!--  
              hier der part rein, den du im impressum includieren möchtest  
             -->  
              
            <?php  
            if( !isset($includedByImpressum) )  
            {  
            ?>  
              
            <!--  
              hier kommt alles rein, vom ende des parts,  
              bis zum ende der datei  
             -->  
              
            <?php  
            }  
            ?>
            

            Das Beispiel wird keinen Schönheitspreis gewinnen, es sollte dir aber relativ klar machen, wie du das Problem lösen könntest. Wenn das gemacht ist, müssen wir im Impressum vor dem include nur noch die Variable $includedByImpressum setzen.

            weiterhin schönen abend...

            --
            Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
            sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
            1. also ich versteh nur bahnhof ... aber ich werds mal probieren

              LG´s

              Roman

              ^^

            2. mal ganz ehrlich ...

              das ist mir zu hoch...

              ich komme ja mal garnicht drauf klar ... ich habe da jetzt nur müll stehen .. und ich glaube, dass ich das auch garnicht richtig eingefügt habe ... ich probiers weiter

              LG´s

              Roman

              Impressum

              1. n'abend,

                Impressum

                wie ich sehe funktioniert das mit dem includieren mittlerweile.

                Wenn du Probleme beim Anpassen deiner email.php hast, wäre es vielleicht sinnvoll den Inhalt dieser Datei hier zu posten? Am Besten mit deinen Versuchen?

                weiterhin schönen abend...

                --
                Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
                sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
                1. wie der krams nu´ ausgegeben wird gefällt mir ja schon super...

                  nur die textformatierung der eigentlichen impressum.php nicht...

                  das wichigste ist, dass die email.php nicht weiter verändert wird, da diese auch noch in anderen scripts (Gästebuch) verwendet wird...

                  Gibt es eigentlich einen Grund dafür, dass du immer wieder impressum.html verlinkst

                  wahrscheinlich ne angewohnheit weil ich sonst alles in .html schreibe....

                  LG´s

                  Roman

                  1. ach noch was...

                    ich kann die email.php nicht posten

                    ist wahrscheinlich zu groß

                    LG´s

                    Roman

                  2. n'abend,

                    wie der krams nu´ ausgegeben wird gefällt mir ja schon super...

                    aus technischer Sicht gefällt mir das überhaupt nicht.

                    nur die textformatierung der eigentlichen impressum.php nicht...

                    Das mag durchaus daran liegen, dass unerwünschte Teile aus deiner email.php ausgegeben werden. Unterbinde das.

                    das wichigste ist, dass die email.php nicht weiter verändert wird, da diese auch noch in anderen scripts (Gästebuch) verwendet wird...

                    Nun, entweder du kümmerst dich darum, dass gewisse Dinge in der email.php nicht ausgegeben / ausgeführt werden, oder du lebst mit einer kaputten Ausgabe. Es ist absolut kein Thema sicherzustellen, dass dein Gästebuch (oder was auch immer sonst noch) korrekt mit der email.php arbeitet.

                    ich kann die email.php nicht posten
                    ist wahrscheinlich zu groß

                    Dann schieb die email.php einfach nochmal als email.php.txt auf deinen Webspace?! (Sollten sich darin irgendwelche Zugangsdaten, oder sonstige Dinge befinden, die keiner Wissen sollte, würde es sich anbieten, diese vor der Veröffentlichung zu entfernen)

                    weiterhin schönen abend...

                    --
                    Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
                    sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
                    1. Das mag durchaus daran liegen, dass unerwünschte Teile aus deiner email.php ausgegeben werden. Unterbinde das.

                      ja und wie .... ich hab kein plan von PHP...

                      http://roman1528.ro.funpic.de/private/guestbook/email.php.txt@titel=email.php

                      LG´s

                      Roman

                      1. n'abend,

                        http://roman1528.ro.funpic.de/private/guestbook/email.php.txt@titel=email.php

                        selbst wenn der Link korrigiert wird, ist keine Datei zu finden.
                        Tipp: es ist @title nicht @titel ;)

                        weiterhin schönen abend...

                        --
                        Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
                        sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
                        1. email.php

                          jetzt wird gehen ...

                          LG´s

                          Roman

                          1. n'abend,

                            email.php

                            vor der Zeile
                            include ("header.php");
                            fügst du folgenden code ein:

                            if( isset($includedByImpressum) )  
                            {  
                              echo $ausgabe; // formular ausgeben  
                              return; // restliche ausgabe abbrechen - das sollte bei includes so funktionieren, wie man es von funktionen kennt.  
                            }
                            

                            Gegebenenfalls möchtest du in impressum.php noch ein $PHP_SELF = 'http://deineadresse/guestbook/email.php'; setzen, damit das Formular an email.php gesendet wird.

                            (Ich habe mir nicht den gesamten Code angeschaut und kann nicht erraten was in den includierten Dateien passiert, daher ist es möglich, dass dieser Rat nicht so funktioniert, wie ich mir das denke.)

                            weiterhin schönen abend...

                            --
                            Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
                            sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
                            1. vor der Zeile
                              include ("header.php");
                              fügst du folgenden code ein:

                              if( isset($includedByImpressum) )

                              {
                                echo $ausgabe; // formular ausgeben
                                return; // restliche ausgabe abbrechen - das sollte bei includes so funktionieren, wie man es von funktionen kennt.
                              }

                                
                              das funktioniert leider net so recht aber würde das irendwie gehen wenn man:  
                                
                              <code lang=php]  
                              <?php  
                                
                              if( isset($includedByImpressum) )  
                              {  
                                echo $ausgabe;  
                                return ('settings.php');  
                              }  
                                       include ("settings.php");  
                                       include ("language/lang\_main.php");  
                                
                                       if($\_GET[id]!="admin")  
                                        {  
                                        $sql="SELECT email, name FROM $db[entrys] WHERE id=".$\_GET[id]." ORDER BY ID DESC";  
                                       $link=mysql\_connect($db[host], $db[user], $db[password]) or die ("Keine Verbindung zur Datenbank möglich. Prüfen Sie die Zugangsdaten.");  
                                       mysql\_select\_db($db[dbname], $link) or die ("Datenbankfehler");  
                                       $result=mysql\_query($sql, $link) or die ("MySQL Fehler");  
                              [/code)  
                                
                              ...  
                                
                              weil ja die settings.php in diesem fall nicht geladen werden soll, das so macht...  
                                
                              LG´s  
                                
                              Roman  
                                
                              
                              
                              1. n'abend,

                                weil ja die settings.php in diesem fall nicht geladen werden soll, das so macht...

                                nein!
                                ich gehe davon aus, dass die Variable $settings aus einer dieser Dateien kommt. würdest du diese also nicht mehr einbinden, hättest du ein mittelschweres Problem.

                                weiterhin schönen abend...

                                --
                                Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
                                sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
            3. so ich habs jetzt ... war viel einfacher als wir gedacht haben ...

              deine arbeit war leiuder umsonst...

              [code:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

              <html>

              <head>

              <title>_.-:=|) www.roman-online.net.tc (|=:-._</title>

              <meta name="author" content="roman-online.net.tc">
              <meta name="discription" content="private homepage">
              <meta name="date" content="2006-09-16T16:55+01:00">
              <meta http-equiv="Content-Type" content="text/html; charset=ISO-88-59-1">
              <meta name="robots" content="index">

              </head>

              <body bgcolor="#000000" text="#C0C0C0" link="#C0C0C0" vlink="#C0C0C0" alink="#C0C0C0">

              <br>

              <center>

              <font size="6" face="Arial"><u>Impressum</u></font>

              <br><br>

              <hr>

              <br><br>

              <font size="4" face="Arial">Verantwortlich für den Inhalt dieser Homepage, ausgenommen der Inhalte des Gästebuches ist:

              <br><br>

              Roman Ueberück<br>Freienstr.&nbsp;4<br>Bilm<br>D&nbsp;31319&nbsp;Sehnde</font>

              <br><br><br>

              <?php

              $_GET['id'] = 'admin';

              include('../guestbook/email.php');

              ?>

              </center>

              </body>

              </html>][/code]

              ist viel einfacher ...

              aber trotzdem vielen dank ...

              jetzt wird allerdings noch die settings.php die in der email.php includet wird, includet und wirft mir meinen Font-Tag wieder durcheinander...

              kann man jetzt in der impressum.php die settings.php "abstellen" ohne sie aus der email.php zu entfernen????

              LG´s

              Roman

              http://roman1528.ro.funpic.de/private/impressum/impressum.html@titel=Impressum

              1. n'abend,

                jetzt wird allerdings noch die settings.php die in der email.php includet wird, includet und wirft mir meinen Font-Tag wieder durcheinander...
                kann man jetzt in der impressum.php die settings.php "abstellen" ohne sie aus der email.php zu entfernen????

                ganz fertig bist du noch nicht, da du erst mal noch dafür sorgen musst, dass durch das Includieren der email.php das HTML der impressum.php nicht mit den HTML-Document-Tags der email.php verseucht wird. (Einfach mal in den Quältext schauen...)

                Wenn du das so korrigiert hast, wie ich das beschrieben habe, kannst du auch den Include der settings.php auf gleiche Art und Weise abstellen.

                http://roman1528.ro.funpic.de/private/impressum/impressum.html@titel=Impressum

                Gibt es eigentlich einen Grund dafür, dass du immer wieder impressum.html verlinkst, wenn du eigentlich auf impressum.php zeigen möchtest?

                weiterhin schönen abend...

                --
                Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
                sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|
  3. Hallo Roman

    Also soviel mir bekannt ist, musst Du zum Includieren bei php, die externe Datei einbinden BEVOR der header gesendet wird.
    Also:

    <?php
    include("...../email.php?id=admin");
    ?>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">

    <html>

    <head>

    ...

    <?php
       meineFunktionAusDerIncludiertenDatei($parameter);
    ?>

    usw.

    Bin mir aber nicht sicher, ob ich Deine Frage richtig verstanden habe.

    LG *Alex*

    1. habe d'ehre *Alex*

      Also soviel mir bekannt ist, musst Du zum Includieren bei php, die externe Datei einbinden BEVOR der header gesendet wird.

      Nein.

      man liest sich
      Wilhelm