Thomas: PHP in PHP-Datei einbinden

Hallo,
Ich erlerne gerade php, und bin soweit eigentlich ganz zufrieden mit meinen fortschritten.

Nur, mein Problem ist jetzt:
Ich habe eine PHP-Datei mit einem Form.
Dieses enthält 1 Textfeld und 1 Submit button.
Es übergibt den inhalt per get.
Die Datei heist form.php

Was ich kann ist,
Eine zweite php datei anlegen,
die dann mit $inhalt = $_GET["inhalt"];
die daten aufnimmt und dann per echo "$inhalt"; ausgibt.

Nun würde ich gerne, die zweite datei so in die erste php mit dem form einbinden, dass ich am schluss nur eine Datei habe, die folgendes macht:
Man schreibt etwas ins Feld, klickt auf den button,
und anschliesend wird die eingabe unter dem form angezeigt.

aber was schreib ich dann bei <form action:""> rein?
ich habs schon versucht den eigenen Dateinamen also form.php einzugeben.
Dann kan eine Error Message.

Ich hoffe jemand ist so lieb und hilft mir...
(Ich weis, dass ganze ist vollkomnmen sinnlos, aber dient mir zu übungszwecken!)

  1. aber was schreib ich dann bei <form action:""> rein?
    ich habs schon versucht den eigenen Dateinamen also form.php einzugeben.
    Dann kan eine Error Message.

    Die da sei?

    mfg Beat

    --
    <°)))o><   O                      ><o(((°>
               O _ |  |__/ ><o(((°>
      ><o(((°>o   \ /
                   |  |_/            <°)))o><
         <°)))o><   \ /  \  <°)))o><
                     |
            ><o(((°> /\ Fehler
    Das Format Ihres Postings scheint unsauber zu sein (z. B. keine Zeilenumbrüche, keine Satzzeichen, alles klein geschrieben oder ähnliches). Solche Postings sind ungern gesehen, da sie oft schwer zu lesen sind. Sind Sie sicher, dass Sie so posten möchten?
    1. Also ich habs nochmal probiert.
      Jetzt kam kein error mehr.
      Nur es is halt so, dass die PHP funktion sofort ausgeführt wird.
      die soll eigentlich erst ausgeführt werden wenn man den button drückt.

      Als beispiel.
      Es wird eine Zahl zwischen 1 und 10 mit $zufall = rand(1,10); generiert.
      Es geht darum, diese zu treffen. (so wie lotto eben)
      In dem ganzen ist ne if funktion, also:
      ---------
      if($mynumber == "$zufall")
      {
      echo "<font COLOR="yellow"><h1>Gut gemacht =)</h1>";
      }
      else
      {
      echo "Versuchs nochmal :(";
      }
      ---------

      Jetzt wird sobald ich die datei öffne direkt untrerm form angezeigt:
      Versuchs nochmal :(

      Ich will aber, dass diese Funktion erst danach ausgeführt wird.
      Hier mal mein ganzes script im moment:

      Lotto.php
      ---------
      <body bgcolor="#000000" text="#CCCCCC">
      <center>
      <font face="Arial, Helvetica, sans-serif">
      <h2>Lotto xD</h2>
      Gib eine Zahl zwischen 1 und 15 ein!
      <form action="" method="get">
      <table border="1">
      <tr>
      <th><input type="text" name="mynumber" size="5" maxlength="2" /></th>
      <th><input type="submit" /></th>
      </tr>
      </table>
      </form>
      <?
      $mynumber = $_GET["mynumber"];
      $zufall = rand(1,10);
      if($mynumber == "$zufall")
      {
      echo "<font COLOR="yellow"><h1>Gut gemacht =)</h1></font>";
      }
      else
      {
      echo "Versuchs nochmal :(";
      }
      ?>
      </font>
      </center>
      </body>

      Bitte helft mir!

      1. Ich will aber, dass diese Funktion erst danach ausgeführt wird.

        $mynumber = $_GET["mynumber"];
        $zufall = rand(1,10);
        if($mynumber == "$zufall")
        {
        echo "<font COLOR="yellow"><h1>Gut gemacht =)</h1></font>";
        }
        else
        {
        echo "Versuchs nochmal :(";
        }

        Tja wer Userinput grobfahrlässig verwendet.
        Konsultiere die Funktion "isset".
        Denn jetzt trifft "else{}" auf jeden Fall zu.

        mfg Beat

        --
                         /|
          <°)))o><      / |    /|
                    ---- _|___/ |     ><o(((°>
                   OvVVvO    __ |         ><o(((°>
        <°)))o><  /v    v\/  |
         <°)))o>< ^    ^/_/_         ><o(((°>
                   ^^^^/___/
        ><o(((°>    ----       ><o(((°>
           <°)))o><                      ><o(((°>o
        Fehler
        Das Format Ihres Postings scheint unsauber zu sein (z. B. keine Zeilenumbrüche, keine Satzzeichen, alles klein geschrieben oder ähnliches). Solche Postings sind ungern gesehen, da sie oft schwer zu lesen sind. Sind Sie sicher, dass Sie so posten möchten?
        1. Ähm...danke schonmal,
          Aber könntest du dich bitte so ausdrücken dass ich als Anfänger verstehe was du sagst?

          Das Ganze muss nicht sicher sein,
          Ist nur zu übungszwecken.

          Geht das irgendwie, dass ich die php funktion da einbinde?

          1. Hallo Thomas!

            Das Ganze muss nicht sicher sein,
            Ist nur zu übungszwecken.

            Du solltest die "gratis-Tipps" schon berücksichtigen wenn du weitere Hilfe erwarten willst. Oder zumindest vorher erklären warum Teile deines Codes "merkwürdig" erscheinen. Du sagst doch, du willst üben, also mach es gleich ordentlich.

            Geht das irgendwie, dass ich die php funktion da einbinde?

            Das hat dir Martin mit dem Hinweis auf das name/value-Pärchen in dem $_GET-Array bereits gesagt.

            Grüße, Matze

      2. Hallo,

        du machst hier eine ganze Menge "Fehler". "Fehler" in Anführungszeichen, weil du vieles nicht syntaktisch falsch, aber unsinnig machst.

        <body bgcolor="#000000" text="#CCCCCC">

        Von CSS hast du aber schon gehört?

        <center>
        <font face="Arial, Helvetica, sans-serif">

        Anscheinend nicht ... :-(

        <?

        Aua! Benutze grundsätzlich die ausgeschriebene Form <?php, denn die short_open_tags, auf die du dich hier verlässt, sind auf vielen Servern deaktiviert (zum einen der Ordnung halber, zum andern weil es Konflikte gibt, wenn jemand auch noch XML serverseitig verarbeiten will).

        $mynumber = $_GET["mynumber"];

        Da hat Vinzenz schon gemeckert: Dieses Umkopieren von Variablenwerten ist nicht nur unnötig, sondern sogar kontraproduktiv. Du kannst ohne weiteres $_GET['mynumber'] direkt verwenden!

        $zufall = rand(1,10);
        if($mynumber == "$zufall")

        Warum schließt du eine einzelne Variable nochmal in Anführungszeichen ein? Normalerweise ist das Unsinn. In diesem speziellen Fall ist es sogar korrekt, weil $_GET[] auch nur Strings enthält. Aber ich gleube nicht, dass dir das bewusst war. Im allgemeinen ist die Schreibweise "$variable" nämlich Quatsch.

        Der Hinweis auf das Affenformular ist ja auch schon gekommen; generell: Frage das Vorhandensein des name/value-Pärchen vom submit-Button in den GET-Daten ab. Ist es vorhanden, wurde das Script durch Absenden des Formulars aufgerufen; wenn nicht, dann durch direkte URL-Eingabe oder einen Link.

        So long,
         Martin

        --
        Zwischen Leber und Milz
        passt immer noch'n Pils.
        1. Ich versteh das alles nich...
          Ich nutze normalerweise css, aber hatte da grad nich wirklich lust drauf.
          Ich finds auch nett, dass ihr mich über meine Fehelr aufklärt,
          aber ich woltle nur wissen wie ich so eine php datei einbinde =(

          1. Mahlzeit Thomas,

            Ich versteh das alles nich...

            Dann lies bei den verlinkten Hinweisen nach.

            Ich finds auch nett, dass ihr mich über meine Fehelr aufklärt,

            Nicht? Du schriebst aber selbst "Ich erlerne gerade php" - was hast Du also gegen kostenlose Tipps, wie Du sauberen Code schreibst und Dir selbst einen Haufen Probleme vom Hals schaffst?

            aber ich woltle nur wissen wie ich so eine php datei einbinde =(

            Das ist schon klar - wenn aber schon das Fundament wackelig ist und das Erdgeschoss mehr als brüchig, hat es wenig Sinn irgendwo im Dachgeschoss eine Wand anders zu streichen ...

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Nun würde ich gerne die zweite Datei so in die erste mit dem Formular einbinden, dass ich am schluss nur eine Datei habe, die folgendes macht:
    Man schreibt etwas ins Feld, klickt auf den Button,
    und anschließend wird die Eingabe unter dem Formular angezeigt.

    aber was schreib ich dann bei <form action:""> rein?
    ich habs schon versucht den eigenen Dateinamen also form.php einzugeben.
    Dann kam eine Error Message.

    Als da wäre? Grundsätzlich ist der Weg richtig. Alternativ kannst du auch action="" schreiben.

  3. Hallo Thomas,

    Ich erlerne gerade php, und bin soweit eigentlich ganz zufrieden mit meinen fortschritten.

    Was ich kann ist,
    Eine zweite php datei anlegen,
    die dann mit $inhalt = $_GET["inhalt"];

    dieses oft gesehene Umkopieren ist überflüssig und verschleiert die Herkunft der Daten.

    die daten aufnimmt und dann per echo "$inhalt"; ausgibt.

    Bei vom Benutzer eingegebenen Daten musst Du immer mit dem Allerschlimmsten rechnen, kodiere die Daten daher bei der Ausgabe in HTML kontextgerecht. PHP bietet dafür die Funktion htmlspecialchars():

    echo [link:http://www.php.net/manual/de/function.htmlspecialchars.php@title=htmlspecialchars]($_GET['inhalt']);

    Nun würde ich gerne, die zweite datei so in die erste php mit dem form einbinden, dass ich am schluss nur eine Datei habe, die folgendes macht:
    Man schreibt etwas ins Feld, klickt auf den button,
    und anschliesend wird die eingabe unter dem form angezeigt.

    Du willst vernünftigerweise ein Affenformular erstellen. So geht's, allerdings solltest Du aus Sicherheitsgründen nicht $_SERVER['PHP_SELF'] sondern $_SERVER['SCRIPT_NAME'] verwenden, siehe Handbuchkapitel zu $_SERVER.

    Du kannst gerne nochmals nachfragen, wenn Dir etwas unklar ist oder Dich zurückmelden wenn Dir diese Informationen weitergeholfen haben.

    Freundliche Grüße

    Vinzenz

  4. Mahlzeit Thomas,

    Nun würde ich gerne, die zweite datei so in die erste php mit dem form einbinden, dass ich am schluss nur eine Datei habe, die folgendes macht:
    Man schreibt etwas ins Feld, klickt auf den button,
    und anschliesend wird die eingabe unter dem form angezeigt.

    Kein Problem - informiere Dich zum Thema "Affenformular".

    aber was schreib ich dann bei <form action:""> rein?

    Entweder nichts oder den Namen der aktuellen Datei (die, die erneut aufgerufen werden soll).

    ich habs schon versucht den eigenen Dateinamen also form.php einzugeben.
    Dann kan eine Error Message.

    Die wie lautete (oder sollen wir raten bzw. hellsehen?)?

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|