Renko: Problem Mit PHP

Hallo alle zusammen,
im meinen Informatikkurs lernen wir grad mit php umzugehen. Wir sollen eine information von einen html dokument zu einen php-dokument schicken, sodass dann die information im browser angezeigt wird. Unser Lehrer hat uns aufgeschrieben, wie das Html und das Php Dokument aussehen soll. Nun wird die information aber nciht Angezeigt. was tun? Eine information vorweg: In der Schule und ich zuhause benutzen XAMPP(die neuste version). Hier die Quelltexte:

Html:
<html>
<head>
<title>PHP-Script</title></head>
<body>
<form action="seite2.php" method="post">
Ihr Vorname<br>
<input type="Text" name="Vorname">
</input>
<input type="Submit" value="Absenden">
</input></form>
</body></html>

PHP:
<html>
<head>
<title>PHP-Script</title></head>
<body>
<?php
$Vorname= $_POST["Vorname"];
echo $Vorname;
?>
</body></html>

  1. <?php
    $Vorname= $_POST["Vorname"];
    echo $Vorname;
    ?>

    Das ist keine Variable,das ist ein Array und das musst du mit dem Befehl "foreach" in eine Variable umwandeln,nachdem du $_POST benutzt hast. Such mal in der PHP-Referenz nach diesem Befehl,dann funktioniert das auch.

    gruß

    1. Servus,

      Das ist keine Variable,das ist ein Array und das musst du mit dem Befehl "foreach" in eine Variable umwandeln,nachdem du $_POST benutzt hast. Such mal in der PHP-Referenz nach diesem Befehl,dann funktioniert das auch.

      Ehm nein. Garnichts davon. $_POST ist ein Array, aber er greift ja auf das Element mit dem Schlüssel 'Vorname' zu.

      Gruss
      Patrick

      --
      sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
    2. Hallo,

      Also der Quelltext ist ansich richtig (bei mir funktioniert er einwandfrei).

      Das ist keine Variable,das ist ein Array und das musst du mit dem Befehl "foreach" in eine Variable umwandeln,nachdem du $_POST benutzt hast. Such mal in der PHP-Referenz nach diesem Befehl,dann funktioniert das auch.

      Ich denke nicht, dass foreach da was bringen wird. So wie ich das verstanden habe, will er ya nur mit HTML einlesen und das dann mit php ausgeben.
      $_POST["Vorname"] ist kein Array, $_POST ist das Array.

      Es kann noch sein, dass du method="POST" (also groß) schreiben musst.
      So ein Problem hatte ich mal.
      Aber wie gesagt, der Quelltext funktioniert eigentlich.
      Ich weis nicht, wie weit du mit php schon bist, aber mal geschaut, ob alles richtig ist:
      php arbeitet nur, wenn...

      • die Adresse mit "http://localhost/" beginnt
      • Xampp auch aktiv ist
      • Die Datei die Endung .php o.ä. trägt
      • ...

      schau mal nach.

      Gruß,

      Jannis

      1. Servus,

        php arbeitet nur, wenn...

        Wenn PHP nicht aktiv waere, wuerde Renko immerhin seinen PHP-Code in der Ausgabe sehen und nicht nichts ;)

        Gruss
        Patrick

        --
        sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
        1. Hallo shn,

          php arbeitet nur, wenn...
          Wenn PHP nicht aktiv waere, wuerde Renko immerhin seinen PHP-Code in der Ausgabe sehen und nicht nichts ;)

          Nicht unbedingt. Zumindest vom Firefox weiß ich, dass er alles zwischen <?(php) und ?> ignoriert. Im Quelltext (oder durch Ausgabe von "Hallo ". $vorname o.ä.) könnte man es aber sehen.

          Viele Grüße aus Freiburg,
          Marian

          --
          Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
          <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
          1. Ich grüsse den Cosmos,

            Nicht unbedingt. Zumindest vom Firefox weiß ich, dass er alles zwischen <?(php) und ?> ignoriert. Im Quelltext (oder durch Ausgabe von "Hallo ". $vorname o.ä.) könnte man es aber sehen.

            Welchen Firefox hast du denn? Seit 1.0 bis zur aktuellen Version wird der Code angezeigt, wenn er nicht geparst wird (alternativ kann es auch zur Downloadaufforderung kommen) Aber ignoriert mit Sicherheit nicht.

            Möge das "Self" mit euch sein

            --
            Neulich dachte ich mir, einmal S/M ausprobieren wäre eine tolle Erfahrung. Also hab ich Windows gebootet ...
            ie:{ br:> fl:| va:| ls:& fo:{ rl:( n4:{ de:] ss:) ch:? js:| mo:) sh:( zu:)
            1. Hallo Manuel,

              Nicht unbedingt. Zumindest vom Firefox weiß ich, dass er alles zwischen <?(php) und ?> ignoriert. Im Quelltext (oder durch Ausgabe von "Hallo ". $vorname o.ä.) könnte man es aber sehen.

              Welchen Firefox hast du denn? Seit 1.0 bis zur aktuellen Version wird der Code angezeigt, wenn er nicht geparst wird (alternativ kann es auch zur Downloadaufforderung kommen) Aber ignoriert mit Sicherheit nicht.

              Ich habs mal ausprobiert:
              Wenn ich file:///srv/www/index.php aufrufe, bekomme ich eine Downloadaufforderung (das war unter Windows aber nicht so, hier hab ich .php wohl in der /etc/mime.types)
              Wenn ich in eine .htm-Datei <?php bla ?> schreib, wird es nicht ausgegeben.

              Es könnte ja gut sein, das er in einfach auf die HTML-Datei doppelgeklickt hat und das Formular abgesendet hat - so geht es natürlich nicht.

              Viele Grüße aus Freiburg,
              Marian

              --
              Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
              <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
              1. hallo,

                Wenn ich file:///srv/www/index.php aufrufe

                ...betreibst du unlauteren Wettbewerb. Dann wird ja kein PHP geparst, weil du den eventuell vorhandenen Webserver umgehst und den Browser unmittelbar auf das Dateisystem zugreifen läßt.

                Wenn ich in eine .htm-Datei <?php bla ?> schreib, wird es nicht ausgegeben.

                Wie denn auch, ohne geparst zu werden?

                Grüße aus Berlin

                Christoph S.

                --
                Visitenkarte
                ss:| zu:) ls:& fo:) va:) sh:| rl:|
                1. Hallo Christoph,

                  Wenn ich file:///srv/www/index.php aufrufe
                  ...betreibst du unlauteren Wettbewerb. Dann wird ja kein PHP geparst, weil du den eventuell vorhandenen Webserver umgehst und den Browser unmittelbar auf das Dateisystem zugreifen läßt.

                  Wenn ich in eine .htm-Datei <?php bla ?> schreib, wird es nicht ausgegeben.
                  Wie denn auch, ohne geparst zu werden?

                  Ich glaube du hast nicht gelesen/verstanden, worum es geht: Was der Browser macht, wenn er Code mit <?php drin vorgesetzt bekommt.

                  Viele Grüße aus Freiburg,
                  Marian

                  --
                  Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
                  <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
                  1. Hallo,

                    Ich glaube du hast nicht gelesen/verstanden, worum es geht: Was der Browser macht, wenn er Code mit <?php drin vorgesetzt bekommt.

                    na was soll er schon machen?
                    Er trifft auf ein unbekanntes Tag, und die HTML-Spec legt ihm nahe, dass er das doch bitte ignorieren möge. Ob dieses unbekannte Tag nun <hollebobb> oder <wichtig ab hier> oder <?php echo "bla"; ?> heißt, macht keinen Unterschied.

                    Insofern ist es völlig normal und logisch, dass der PHP-Block in der Browseransicht "verschwindet", wenn PHP nicht geparst wird. Nur in der Quelltextansicht müsste der PHP-Abschnitt sichtbar sein.

                    So long,
                     Martin

                    --
                    Niemand lebt allein von seinen Träumen.
                    Aber wer träumt, lebt noch.
                    1. Ich bin's wieder! Hab den Nachmittag über geschlafen.
                      Ich glaub ich muss euch noch was erklären:
                      Bei Mir sind bei XAMPP folgene Optionen Aktiviert:
                      Apache
                      MySQL
                      Dann gibt es noch zwei weitere Optionen. die ich nicht aktiviert habe:
                      FileZilla
                      Mercury.
                      Mir ist auch bewusste das ich das alles über http://localhost/ starten muss. Ich starte die pages immer über folgene adresse:

                      http://localhost/php/seite1.html
                      http://localhost/php/seite2.php

                      Der Ordner php ist bei mir im XAMPP verzeichnis GROß geschrieben. Vielleicht hillft euch das weiter.

                      Gruß Renko

                      1. Hallo,

                        Ich bin's wieder! Hab den Nachmittag über geschlafen.

                        guten Morgäähn!

                        Bei Mir sind bei XAMPP folgene Optionen Aktiviert:
                        Apache
                        MySQL

                        Ach, PHP also nicht?
                        Und dann wunderst du dich, dass dein PHP-Script nicht ausgeführt wird? ;-)

                        Dann gibt es noch zwei weitere Optionen. die ich nicht aktiviert habe:
                        FileZilla

                        Das ist AFAIK ein FTP-Server, den brauchst du wahrscheinlich nicht. Zumindest im Moment nicht.

                        Mercury.

                        Ist ein schnuckliger Mailserver. Brauchst du aber erstmal auch nicht.
                        Nur PHP solltest du irgendwie noch aktivieren!

                        Mir ist auch bewusste das ich das alles über http://localhost/ starten muss.

                        Gut. Aber man weiß ja nie, manche übersehen selbst die "einfachsten" Dinge, die einem als Insider sonnenklar sind.

                        Der Ordner php ist bei mir im XAMPP verzeichnis GROß geschrieben. Vielleicht hillft euch das weiter.

                        Was ist das? Das Installationsverzeichnis von PHP? Dessen Schreibweise ist erstmal egal, wenn es nur korrekt ins restliche System eingebunden ist. Wenn dein XAMPP unter Windows läuft, ist die Groß/Kleinschreibung sowieso wurscht. Gewöhne dir aber trotzdem an, konsequent drauf zu achten.

                        Ciao,
                         Martin

                        --
                        Lieber blau machen, als sich schwarz ärgern.
                        1. wenn apache nicht ausgeführt wäre, dann würde im browser eine fehlermeldung kommen und das ist nicht der fall. es erscheint gar nichts! Mein Lehrer meinte, dass apache php ist und das es eingeschaltet werden soll.

                          Bei apache ist es so, das es in den installationsverzeichnis einen ordner namens htdocs gibt, in den die phpfiles reinkommen. dort hab ich einen ordner namens PHP angelegt mit den pages. ich mein ist es schlimm wenn ich bei der browseradresse den ordner PHP kleinschreibe?

                          Gruß

                          1. Hi,

                            wenn apache nicht ausgeführt wäre, dann würde im browser eine fehlermeldung kommen und das ist nicht der fall.

                            Richtig. Aber das hat mit PHP so direkt nichts zu tun.

                            Mein Lehrer meinte, dass apache php ist ...

                            Dann will er euch für dumm verkaufen (oder weiß es selbst nicht besser).
                            Apache ist nur der reine Webserver. PHP ist ein Script-Interpreter. PHP kann selbständig verwendet werden (ohne den Apachen), aber das ist eher ungewöhnlich. Üblich ist eher, dass PHP als eine Art Add-On zum Apache installiert und benutzt wird, so dass die beiden dann kooperieren. Mit Apache ohne PHP kannst du aber nur statische Web-Inhalte ausliefern.

                            und das es eingeschaltet werden soll.

                            Was? Apache? Ja, natürlich, das ist sozusagen die Grundlage. Ohne Webserver macht das ganze XAMPP-Paket nicht viel Sinn.

                            Bei apache ist es so, das es in den installationsverzeichnis einen ordner namens htdocs gibt, in den die phpfiles reinkommen. dort hab ich einen ordner namens PHP angelegt mit den pages. ich mein ist es schlimm wenn ich bei der browseradresse den ordner PHP kleinschreibe?

                            Wie gesagt: Unter Windows nicht, Windows kümmert sich nicht um Groß- oder Kleinschreibung bei Dateinamen. Andere Systeme aber sehr wohl, und deshalb tut man gut daran, sich auch unter Windows am Riemen zu reißen und die Schreibweise exakt zu beachten. Zwingend nötig ist es aber nicht.

                            Ciao,
                             Martin

                            --
                            "Life! Don't talk to me about life!"
                              (Marvin, the paranoid android in Douglas Adams' "The Hitchhiker's Guide To The Galaxy"
                            1. naja eigentlich meinte er nur das wir apache starten sollen und das es dann funktionieren soll. Wenn es ohne das addon nicht funktionieren kann, dann wundert es mich das er diesen quelltext richtig anzeigt(also nicht den quelltext, sondern "Hallo, ich bin ein PHP-Skript!"):
                              <html>
                                 <head>
                                     <title>Beispiel</title>
                                 </head>
                                 <body>

                              <?php
                                     echo "Hallo, ich bin ein PHP-Skript!";
                                     ?>

                              </body>
                              </html>

                              Naja ich werds meinen Lehrer weitersagen. Danke für eure Hilfe

                              Gruß Renko

                              Ps: kennt ihr vll bessere Programme zum anzeigen von PHP-Seiten als XAMPP

                              1. Hallo,

                                naja eigentlich meinte er nur das wir apache starten sollen und das es dann funktionieren soll.

                                es kann ja sein, dass PHP in dem XAMPP-Geschwür automatisch mit aktiviert ist, das weiß ich nicht. Mich wundert nur, dass man die restlichen Komponenten wie z.B. den SQL-Server separat aktivieren bzw. deaktivieren kann, PHP jedoch nicht.

                                Wenn es ohne das addon nicht funktionieren kann, dann wundert es mich das er diesen quelltext richtig anzeigt(also nicht den quelltext, sondern "Hallo, ich bin ein PHP-Skript!"):

                                <?php
                                       echo "Hallo, ich bin ein PHP-Skript!";
                                       ?>

                                Das ist ein klares Indiz, dass PHP eigentlich aktiv ist (ohne dass das an irgendeiner Einstellschraube erkennbar ist).

                                Ps: kennt ihr vll bessere Programme zum anzeigen von PHP-Seiten als XAMPP

                                Auf die Gefahr, dass es jetzt wieder Kritik hagelt: Ich persönlich bin eher dafür, die Komponenten (Apache, PHP, SQL, ...) separat zu installieren und zu konfigurieren; von dem Gesamtpaket XAMPP halte ich nicht viel (kenne es aber auch nur sehr oberflächlich).
                                Es kommt eben drauf an, was man sich selbst als Ziel setzt: Braucht man nur eine Testumgebung für seine Webseiten, die "irgendwie" funktioniert, ohne dass man sich großartig Gedanken machen muss? Dann ist XAMPP wahrscheinlich genau richtig. Mir passt das aber nicht; ich will verstehen, was da alles abläuft und wie die einzelnen Räder ineinandergreifen. Erstens weil es mich einfach interessiert; zweitens, weil ich mit diesem Verständnis auch untypische Konfigurationen hinkriegen kann; und drittens, weil ich dann eventuelle Fehler leichter eingrenzen und beheben kann.

                                Schönen Abend noch,
                                 Martin

                                --
                                Wichtig ist, was hinten rauskommt.
                                  (Helmut Kohl, 16 Jahre deutsche Bundesbirne)
                                1. Ich bins Wieder

                                  Ich hab das Problem gefunden. Es scheint wohl Windows Groß und Kleinschreibung egal sein, aber Apache nicht! wenn man über http://localhost auf die php-datei zugreift, muss man die groß und kleinschreibung der ordner und der files beachten. Es ist erstaunlich: Die Lösung lag so nah und wir haben sie übersehen.

                                  Gruß Renko

            2. Hallo Manuel,

              Welchen Firefox hast du denn? Seit 1.0 bis zur aktuellen Version wird der Code angezeigt, wenn er nicht geparst wird (alternativ kann es auch zur Downloadaufforderung kommen) Aber ignoriert mit Sicherheit nicht.

              Wenn der Browser beim Parsen eines HTML-Dokuments auf die Zeichenfolge <? trifft, interpretiert er dies als den Start einer SGML Verarbeitungsanweisung. Da der Browser mit dem Inhalt dieser Anweisung normalerweise nichts anzufangen weiß, ignoriert er sie. Zu interessanten Ergebnissen führt das, wenn innerhalb des PHP-Abschnittes das Zeichen > vorkommt. Da eine SGML-Verarbeitungsanweisung nämlich durch > beendet wird, wird der Rest der PHP-Anweisung wie normales HTML-interpretiert.

              Anders sieht es bei XHTML aus (sofern es auch als solches ausgeliefert wird). In XML gibt es nämlich auch Verarbeitungsanweisungen, nur haben diese die Form <?...?>, somit wird der komplette PHP-Code vom Parser ignoriert.

              Ich hab mal ein Beispiel dazu gemacht:

              HTML
              XHTML (als text/html)
              XHTML (als application/xhtml+xml)

              Schöne Grüße,

              Johannes

    3. hallo,

      $Vorname= $_POST["Vorname"];
      Das ist keine Variable,das ist ein Array

      Und das ist ein Irrtum. Woraus besteht denn ein Array? Doch aus einer Reihe von Werten. Und selbstverständlich kannst du dir aus diesen Werten den einen heraussuchen, den du gerne einer Variablen zuordnen möchtest.

      Wenn du dir zum Vergleich das angegebene Formular anschaust, so findest du dort auch nur ein einziges Element, das den Wert "Vorname" als POST-Variable mitschickt. Also kann das schon so übergeben werden, wie hier dargestellt.

      und das musst du mit dem Befehl "foreach" in eine Variable umwandeln,nachdem du $_POST benutzt hast

      Es gibt hier nichts umzuwandeln, da ja nur ein solcher Wert existiert.

      Such mal in der PHP-Referenz nach diesem Befehl,dann funktioniert das auch.

      Das Handbuch sagt dir sehr präzise, daß einzelne POST-Variablen durchaus so dargestellt werden können wie angegeben.

      Grüße aus Berlin

      Christoph S.

      --
      Visitenkarte
      ss:| zu:) ls:& fo:) va:) sh:| rl:|
      1. hallo,

        $Vorname= $_POST["Vorname"];
        Das ist keine Variable,das ist ein Array

        Und das ist ein Irrtum. Woraus besteht denn ein Array? Doch aus einer Reihe von Werten. Und selbstverständlich kannst du dir aus diesen Werten den einen heraussuchen, den du gerne einer Variablen zuordnen möchtest.

        Dann kuck dir mal den Code an:
        rechner.php
        <html>
        <head>
        <title>Rechner für Grundrechenarten</title>
        <meta name="author" content="sbrockwitz">
        </head>
        <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
        <FORM ACTION="ERGEBNIS.PHP" method="post">

        Rechenoperation:<br>
        <select name="rech[]">
        <option>Addition</option>
        <option>Subtraktion</option>
        <option>Multiplikation</option>
        <option>Division</option>
        </select><br>
        Zahl 1:<br>
        <input type="text" name="eins"><br>
        Zahl 2:<br>
        <input type="text" name="zwei"><br>
        <p>
        <input type="submit" name="go" value="Berechnen">
        </form>
        </body>
        </html>

        ergebnis.php
        <html>
        <head>
        <title>Ergebnis </title>
        </head>
        <body>
        <?php

        $rech=$_POST['rech'];
        $eins=$_POST['eins'];
        $zwei=$_POST['zwei'];
        foreach ($rech as $anders)  {
        echo "Deine Rechenart ist <B>$anders</B>,<BR><P>";
        }
        echo "Deine erste Zahl ist <B>$eins</B>.<p>";
        echo "Deine zweite Zahl ist <B>$zwei</B>.<p>";

        if ($anders == 'Addition') {
           $summe = ($eins + $zwei);
        }   elseif ($anders == 'Subtraktion')  {
           $summe = ($eins - $zwei);
        }   elseif ($anders == 'Multiplikation')  {
           $summe = ($eins * $zwei);
        }   else {
           if ($zwei == '0')  {
               echo "Division durch 0 nicht definiert!";
           }  else {
           $summe = ($eins / $zwei);
           }
        }

        if ($summe != '') {
            echo "Das Ergebnis lautet: <B> $summe </B>";
        }
        ?>
        </body>
        </html>

        Der funktioniert auch nicht ohne foreach,deswegen bin bin ich davon ausgegangen,dass das immer so sein muss.

        gruß

        1. Hallo xpfreund,

          <select name="rech[]">
          Der funktioniert auch nicht ohne foreach,deswegen bin bin ich davon ausgegangen,dass das immer so sein muss.

          Ich habe dir mal alles Unwichtige weggemacht, vielleicht siehst du jetzt warum.

          $eins=$_POST['eins'];

          Hier wird es übrigens auch ohne foreach gemacht.

          Viele Grüße aus Freiburg,
          Marian

          --
          Microsoft broke Volkswagen's world record: Volkswagen made only 22 million bugs!
          <!--[if IE]><meta http-equiv="refresh" content="0; URL=http://www.getfirefox.com"><[endif]-->
        2. Hi,

          <select name="rech[]">

          $rech=$_POST['rech'];
          foreach ($rech as $anders)  {

          Der funktioniert auch nicht ohne foreach, ...

          na klar, wenn du an den Namen eines Formularelements Array-Klammern anhängst, bekommt dein verarbeitendes PHP-Script diese Daten auch als Array - notfalls als Array mit nur einem einzigen Wert. Warum machst du diesen Klimmzug?

          So long,
           Martin

          --
          Paradox ist, wenn jemand eingefleischter Vegetarier ist.
  2. Servus,

    <input type="Text" name="Vorname">
    </input>

    input-Felder haben kein schliessendes Tag. Entweder nur <input type="Text" name="Vorname"> oder in XHTML-Syntax <input type="Text" name="Vorname" />

    Lass dir zur Kontrolle mal var_dump($_POST); ausgeben.

    Gruss
    Patrick

    --
    sh:( fo:| ch:? rl:( br:> n4:( ie:% mo:) va:} de:> zu:) fl:| ss:| ls:[ js:|
  3. hallo,

    <input type="Text" name="Vorname">
    </input>

    <input> ist ein HTML-Element, das nicht geschlossen werden darf (ähnlich wie <br> und <img>).

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|