Ankündigung

Einklappen
Keine Ankündigung bisher.

include = komplette Einbidung

Einklappen

Neue Werbung 2019

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

  • include = komplette Einbidung

    Moinsen,

    ein Frage, die mir auch nach meiner Suche nicht ganz beantwortet werden konnte.

    Wenn ich in einer beliebigen php Datei eine andere Datei include, ist es doch eigentlich so, als ob der Quelltext der includeten Datei direkt dort drin stehen würde, oder ?

    Oder gibt es Sonderfälle ?

    Ich gebe gerne ein Beispiel, aber vielleicht lässt sich ja auch schon so pauschal sagen, nö das ist so und so...

    Gruß alex


  • #2
    Das ist so...
    http://hallophp.de

    Kommentar


    • #3
      Genauer gesagt ist es so, das aus einem include folgendes wird:
      Code:
      ?>
      // Code in der includierten Datei
      <?php
      Wenn du in der includierten Datei z.B. nur HTML schreibst, wird dieses direkt ausgegeben.

      Kommentar


      • #4
        Man seid ihr schnell...

        Da ich meine (mal abgesehen von den möglichen Fehlermeldungen) das iclude und require im Wesentlichen das gleiche sind, verstehe ich folgendes nicht. Bitte nicht schlagen, wenn ich was falsch gedeutet habe..

        In dieser Datei wird die mailer_function.php includiert:

        PHP-Code:
        <?php

        $ihre_email                 
        "xxx"
        $betreff_der_nachrichten     "xxx";

        require_once(
        'mailer_function.php');


          
        $meldungen "";
          
        $error 0;
          
        $write_db 0;

          
        array_escape_and_strip(&$_POST);
        array_unescape(&$_POST);

        if(isset(
        $_POST['action'])){
            switch(
        $_POST['action']){
                case 
        'submit':    
                    if(!
        check_email($_POST['email'])){
                        
        $meldungen .= "Bitte geben Sie eine gültige E-Mail Adresse ein.<br>";
                        
        $error 1;
                    }
                
                    if(!
        check_telefon($_POST['telefon'])){
                        
        $meldungen .= "Bitte geben Sie eine gültige Nummer ein.<br>";
                        
        $error 1;
                    }
                    
                    if(empty(
        $_POST['nachricht'])){
                        
        $meldungen .= "Bitte geben Sie eine Nachricht ein.<br>";
                        
        $error 1;
                    }
                    
                    if(
        $error) { break; }
                    
                    
        $message =  "Es wurde eine Nachricht fuer Sie hinterlassen:\n\n".
                                
        "Kontaktdaten:\n".
                                
        "Name: $_POST[name]\n".
                                
        "E-Mail: $_POST[email]\n".
                                
        "Telefon: $_POST[telefon]\n".
                                
        "Fax: $_POST[fax]\n".
                                
        "Uhrzeit: ".date('d.m.Y - H:i:s').
                                
        "\n\n".
                                
        "------------------------- Nachricht -------------------------\n\n".
                                
        "$_POST[nachricht]\n\n".
                                
        "--------------------------- ENDE ----------------------------\n\n";            
                    
        $x = @mail($ihre_email,addslashes($betreff_der_nachrichten),$message,"from: $ihre_email");        
                    if(
        $x){
                        
        $_POST = array();
                        
        $write_db 1;
                        break;
                    }    
                    
        $meldungen .= "Aufgrund eines technischen Fehlers konnten wir Ihre Nachricht nicht empfangen.<br>".
                                  
        "Bitte setzen Sie sich anderweitig mit uns in Verbindung.<br>Vielen Dank für Ihr Verständnis!";
                    break;    
            }
        }
        ?>
        So, hier nun die includierte Datei:

        PHP-Code:
        <?php

        ################################################################################################################################
        function check_email($email){
            return 
        eregi("^[_a-z0-9-]([-_.]?[a-z0-9])*@[a-z0-9]([-_.]?[a-z0-9])+[.][a-z0-9]+$",$email);
        }
        ##^=Zeilenanfang / $=Zeilenende##
        function check_telefon($telefon){
            return 
        eregi("^[0-9]*$",$telefon);
        }
        ################################################################################################################################
        function array_escape_and_strip($array)
        {
        if (!isset(
        $array_return)) $array_return '';
            if(!
        is_array($array)){
                return;
            }    
            foreach(
        $array AS $key => $inhalt){
                if(
        is_array($inhalt)){
                    
        $array_return[$key] = array_escape_and_strip($inhalt);
                } else {
                    if(
        get_magic_quotes_gpc()){
                        
        $array_return[$key] = trim(strip_tags($inhalt));
                        continue;
                    } 
                    
        $array_return[$key] = trim(strip_tags(addslashes($inhalt)));
                }
            }
            
        $array $array_return;
            return 
        $array;
        }
        ################################################################################################################################
        function array_unescape($array)
        {
        if (!isset(
        $array_return)) $array_return '';
            if(!
        is_array($array)){
                return;
            }
            foreach(
        $array AS $key => $inhalt){
                if(
        is_array($inhalt)){
                    
        $array_return[$key] = array_escape_and_strip($inhalt);
                } else {
                    
        $array_return[$key] = trim(stripslashes($inhalt));
                }
            }
            
        $array $array_return;
            return 
        $array;
        }
        ################################################################################################################################
        ?>
        Setze ich nun den Quelltext aus mailer_function.php direkt in die mailer.php (Also den ersten Quelltext), gibts nen Fatal error: Cannot redeclare check_email(). UNd zwar in diesen Zeilen: function check_email($email) in der zweiten Datei.

        Im Internet hab ich folgendes gefunden:

        Ursache:
        Es wurde hier versucht einer Funktion den gleichen Namen zu geben, den bereits eine andere Funktion hat. Da im PHP Code jede selbstgeschriebene Funktion einen eindeutigen Namen braucht, bricht PHP hier das Pharsen des Codes ab und gibt die Fehlermeldung aus.

        Das klingt logisch. Aber ich hab doch die Funktion nur 1x ???

        Kann mir bitte jemand den Schubs in die richtige Richtung geben ?

        Dank & Gruß Alex

        Kommentar


        • #5
          Guck einfach mal mit [MAN]get_included_files[/MAN] welche Dateien schon eingebunden sind. Ansonsten weiß ich nicht, wo der Fehler liegen könnte.

          Kommentar


          • #6
            Ich würde auch das error_reporing einschalten error_reporting(-1)
            "My software never has bugs, it just develops random features."
            "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

            Kommentar


            • #7
              HI,

              das error reporting ist an..

              Den Error seh ich ja. Weiß nur nicht warum...

              Gruß Alex

              Kommentar


              • #8
                Weil du die Datei vll schon über ne anderen eingebunden hast (index.php o.ä.)
                Ich benutze immer require_once, das kannste so oft schreiben wie du willst, angefordert wirds nur einmal und das is auch gut so

                Kommentar


                • #9
                  das mal n plan MasterD. Ich mach das mal und melde mich dann.

                  Danke !

                  Kommentar


                  • #10
                    Ich benutze immer require_once, das kannste so oft schreiben wie du willst, angefordert wirds nur einmal und das is auch gut so
                    Das stimmt zwar, auf der anderen Seite hätte man dann eben keinen Fehler mehr und merkte nicht mehr, dass man Datenmüll produziert.
                    Richtiger wäre, die Anwendung zu analysieren, die Include-Strukturen umzustellen etc.
                    --

                    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                    --

                    Kommentar


                    • #11
                      *grmphgffff*

                      ES GEHT....

                      Danke Euch...

                      Kommentar


                      • #12
                        Außerdem ist es performancetechnisch schlecht, da jedesmal überprüft wird, ob diese Datei bereits eingebunden wurde!
                        Man sollte immer auf include oder require zurück greifen, auch alleine aus dem Grund #10 von nikosch
                        "My software never has bugs, it just develops random features."
                        "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

                        Kommentar


                        • #13
                          @nikosch: Recht haste. Ich werde heute abend mal forschen gehen.

                          Danke Euch. Ihr seid echt gut !!

                          Kommentar


                          • #14
                            @Nikosh

                            Ich denke beim Coden mit, im gegensatz zu ein paar anderen Leuten, die einem Tag täglich übern weg laufen

                            @altram

                            Ich arbeite auch gern so, dass es erstmal funzt und dann kommt die optimierung

                            Kommentar


                            • #15
                              Ich denke beim Coden mit,
                              Das ist aber nur die halbe Miete. Auch seinen Code ständig zu redigieren gehört dazu (sog. Refakturieren).
                              Ansonsten klingt für mich
                              das kannste so oft schreiben wie du willst, angefordert wirds nur einmal und das is auch gut so
                              nur bedingt nach einer überlegten Arbeitsweise
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X