include in echo verboten?

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

  • include in echo verboten?

    Wenn ich folgenden Text ausgeben lasse:
    PHP-Code:
    echo "
    <br>
    <form method='post' action='?action=check'><table>
    <tr><td>Benutzername:</td><td><input type='text' name='username'></td></tr>
    <tr><td>Passwort:</td><td><input type='password' name='password'></td></tr>
    <tr><td>Passwort bestätigen:</td><td><input type='password' name='passwordc'></td></tr>
    <tr><td></td><td><input type='submit' value='Absenden'></td></tr>
    <tr><td rowspan='2'>" 
    . include('errors.php') . "</td></tr>
    </table></form>"

    fehlt der ganze letzte Teil mit dem include.

    Ausgabe:

    <br>
    <form method='post' action='?action=check'><table>
    <tr><td>Benutzername:</td><td><input type='text' name='username'></td></tr>
    <tr><td>Passwort:</td><td><input type='password' name='password'></td></tr>
    <tr><td>Passwort bestätigen:</td><td><input type='password' name='passwordc'></td></tr>
    <tr><td></td><td><input type='submit' value='Absenden'></td></tr>
    <tr><td rowspan='2'>

    Darf man in echo kein include benutzen? und wenn doch wie?

  • #2
    Re: include in echo verboten?

    Original geschrieben von jmc
    Darf man in echo kein include benutzen?
    Doch - aber es wird dann natürlich nur der Rückgabewert von include an der Stelle ausgegeben.

    Und der ist idR. nur true (1) oder false - sofern du nicht explizit dafür sorgst, dass aus dem Code im include-File heraus etwas zurückgegeben wird.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      ich weiss, es ist nicht die galanteste lösung, aber eval() sollte das lösen....

      versuchs mal damit:

      $CODE = 'echo "
      <br>
      <form method=\'post\' action=\'?action=check\'><table>
      <tr><td>Benutzername:</td><td><input type=\'text\' name=\'username\'></td></tr>
      <tr><td>Passwort:</td><td><input type=\'password\' name=\'password\'></td></tr>
      <tr><td>Passwort bestätigen:</td><td><input type=\'password\' name=\'passwordc\'></td></tr>
      <tr><td></td><td><input type=\'submit\' value=\'Absenden\'></td></tr>
      <tr><td rowspan=\'2\'>".include(\'errors.php\')."</td></tr>
      </table></form>";';
      eval($CODE);

      Kommentar


      • #4
        Original geschrieben von Herr Kaiser
        ich weiss, es ist nicht die galanteste lösung, aber eval() sollte das lösen....

        versuchs mal damit:

        $CODE = 'echo "
        <br>
        <form method=\'post\' action=\'?action=check\'><table>
        <tr><td>Benutzername:</td><td><input type=\'text\' name=\'username\'></td></tr>
        <tr><td>Passwort:</td><td><input type=\'password\' name=\'password\'></td></tr>
        <tr><td>Passwort bestätigen:</td><td><input type=\'password\' name=\'passwordc\'></td></tr>
        <tr><td></td><td><input type=\'submit\' value=\'Absenden\'></td></tr>
        <tr><td rowspan=\'2\'>".include(\'errors.php\')."</td></tr>
        </table></form>";';
        eval($CODE);
        Öhm, nein? Afaik geht das nicht.
        Entweder macht man das über ein return in der eingebundenen Datei oder man verwendet den Output-Buffer. Link

        Kommentar


        • #5
          also das mit eveal() hat erstmals nicht geklappt.

          PHP-Code:
          echo "
          <br>
          <form method='post' action='?action=check'><table>
          <tr><td>Benutzername:</td><td><input type='text' name='username'></td></tr>
          <tr><td>Passwort:</td><td><input type='password' name='password'></td></tr>
          <tr><td>Passwort bestätigen:</td><td><input type='password' name='passwordc'></td></tr>
          <tr><td></td><td><input type='submit' value='Absenden'></td></tr>
          <tr><td rowspan='2'>" 
          . include('errors.php') . "</td></tr>
          </table></form>"

          und errors.php :
          PHP-Code:
          <? 
          switch($errornr){
              case '':
              echo '';
              break;
              case '1':
              echo '<span>Wrong user or password</span>';
              break;
              case '2':
              echo '<span>You are out of the sistem</span>';
              break;
              case '3':
              echo '<span>Error please authentificate</span>';
              break;}
          return;
          ?>
          wie meinst du das genau mit return?

          Kommentar


          • #6
            Wenn in der eingebundenen Datei zB return "foo" steht, gibt include("die_datei.php") halt "foo" zurück.

            Kommentar


            • #7
              Das Problem ist die datei errors.php wird gar nicht erst eingefügt. nach <td rowspan='2'> wird alles andere im Script ausgelassen.

              Kommentar


              • #8
                Original geschrieben von jmc
                Das Problem ist die datei errors.php wird gar nicht erst eingefügt. nach <td rowspan='2'> wird alles andere im Script ausgelassen.
                PHP-Code:
                error_reporting(E_ALL); 
                an den Anfang des Skriptes ... wahrscheinlich wird sie nicht eingefügt, weil sie nicht gefunden wird

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar


                • #9
                  Vielen dank! Jetzt weiss ich was falsch ist kann aber immer noch nichts damit anfangen...

                  Warning: main(errors.php ): failed to open stream: No such file or directory in /htdocs/trial/login2/signup.php on line 49

                  Warning: main(): Failed opening 'errors.php</td></tr> </table></form>' for inclusion (include_path='.:/data/apache/php/mmp_lib') in /htdocs/trial/login2/signup.php on line 49

                  Linie 49 ist die mit include und wenn ich aber das Formular nicht mit PHP sondern mit HTML ausgeben lasse und dann <? include('errors.php') ?> einfüge funktioniert es. Deswegen nimmt es mich wunder wie man mit echo include verwendet.

                  Kommentar


                  • #10
                    befindet sich errors.php in /htdocs/trial/login2/ ?

                    Wenn ja probiere mal
                    include('./errors.php');
                    wenn nicht passe den Pfad gefälligst an

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      das einzige was passiert ist, dass noch ./ hinzugefügt wird in der Fehlermeldung. Auch der ganz ausgeschriebene Pfad nützt nichts.

                      komisch ist, dass

                      Warning: main(): Failed opening [FONT=Courier]'errors.php</td></tr> </table></form>'[/FONT] for inclusion (include_path='.:/data/apache/php/mmp_lib') in /htdocs/trial/login2/signup.php on line 49

                      rauskommt also nicht nur errors.php in den Anführungszeichen liegt. Da liegt wahrscheinlich der Fehler, aber ich weiss nicht wie man ihn beheben kann.

                      Kommentar


                      • #12
                        mach doch ein echo, dann include mit dem richtigen Pfad
                        und dann wieder ein echo.
                        Oder laß das echo ganz weg, Du kannst in einer php-Datei
                        ja auch so html-Code schreiben.

                        Kommentar


                        • #13
                          jo ohne php klappt es aber ich möchte wissen wo der Fehler liegt wenn ich sowas wieder mal antreffe.

                          Wenn ich ein echo dann das Include und dann wieder ein echo mache wird das include nicht in die Tabelle gesetzt.

                          Kommentar


                          • #14
                            in beiden von Dir geposteten Sources fehlt aber das zweite echo.

                            Du machst ja:

                            echo "xxxx".include."yyy";

                            richtig wäre:

                            echo "xxxx";
                            include ("dsfsadf.php");
                            echo "yyyy";
                            Zuletzt geändert von Koala; 11.05.2006, 18:18.

                            Kommentar


                            • #15
                              ja das ist mir klar ich habe das nur nicht nochmals gepostet, aber das include ist dann ausserhalb der Tabelle. Ich denke ich mache es jetzt einfach mit HTML.

                              Vielen Dank euch allen!

                              Kommentar

                              Lädt...
                              X