Sven: PHP Zugriff auf Formulardaten

Hi,
ich taste mich gerade an PHP heran und schon gibts Fragen:
warum funkioniert die folgende Anweisung nicht?
die Texteingabe sollte nach Mausklick eigentlich unten angezeigt werden!
Grüße Sven

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="<? echo $PHP_SELF ?>" method="POST">
Name:<br><input type="text" name="name" size="20">
  <input type="submit" name="submit" value="set">
  </form>
<?
echo "<br>Name: ", $name;
?>
</body>
</html>

  1. Hallo Sven,

    ich taste mich gerade an PHP heran und schon gibts Fragen:
    warum funkioniert die folgende Anweisung nicht?

    weil register_globals auf off steht (in dem was phpinfo(); ausgibt, steht das auch drin)

    <title>Untitled Document</title>

    mit was ist die Datei erstellt?

    <form action="<? echo $PHP_SELF ?>" method="POST">

    $_SERVER['PHP_SELF'] - auf welche Seite kommst du, wenn du das Formular absendest?

    echo "<br>Name: ", $name;

    $_POST['name'] sollte helfen (such mal nach register_globals o.ä. im Archiv, da wirst du einiges finden, u.a. auch warum das besser so ist)

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    1. Hallo Sven,

      gut register_globals  habe ich jetzt mal auf On gestellt.
      aber keine Änderungen in der Ausgabe.
      Die Datei habe ich mit Dreamweaver "basic html"  erstellt, falls das relevant sein sollte.
      und nachdem ich den set button gedrückt habe, gelange ich auf eine leere Seite!!!
      Auch die Umstellung auf $_POST['name'] ändert leider nichts

      (das sollte eigenlich nur eine kleine Übung sein, da ich eine Oberfläche mit vielen Textfields erstellen muss, deren Eingaben in einer Datenbank abgelegt werden müssen und auch wieder herausgelesen werden sollen. Leider ist es doch nicht so einfach wie ich dachte

      grüße Sven

      1. Hallo Sven,

        gut register_globals  habe ich jetzt mal auf On gestellt.

        stell das ganz schnell wieder auf off.

        aber keine Änderungen in der Ausgabe.

        mhh... das was du gepostet hast, funktioniert bei mir (wenn ich $PHP_SELF durch $_SERVER['PHP_SELF'], $name durch $_POST['name'] und <? durch <?php ersetzte)

        Die Datei habe ich mit Dreamweaver "basic html"  erstellt, falls das relevant sein sollte.

        ist es eigentlich nicht, ich hatte nur den Verdacht, dass Dreamweaver o.ä. so einen Murks produziert...

        und nachdem ich den set button gedrückt habe, gelange ich auf eine leere Seite!!!

        wie sieht denn die Seite aus, _bevor_ du auf "set" (also den submit-Button) drückst? und was steht im Quellcode _nachdem_ du auf set gedrückt hast?

        Auch die Umstellung auf $_POST['name'] ändert leider nichts

        sollte aber eigentlich...

        setzte mal phpinfo(); ein, und schau, was das ausgibt (der Inhalt von $_POST steht im vorletzten Abschnitt (es steht "PHP Variables" drüber) ganz oben). Ansonsten könntest du evtl. mal eine url mit der Seite und eine mit dem Code angeben...

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
        1. erstmal vielen Dank für Deine Unterstützung.
          also register_globals steht wieder auf Off.
          Alles andere habe ich unter www.scharf-s.de mal hochgeladen.

          Leider gibt er mir den textinput immer noch nicht aus.
          grüße sven

          1. Hallo Sven,

            also register_globals steht wieder auf Off.

            brav :-)

            Alles andere habe ich unter www.scharf-s.de mal hochgeladen.

            ich glaube ich weiß, an was es liegt - schau mal in die php.ini, was bei short_open_tag steht - ich tippe mal darauf, dass da off steht. Wenn das auf off steht kann man php-Bereiche nicht mehr mit <? öffnen, sondern muss <?php verwenden (wenn du mein vorheriges Posting aufmerksam gelesen hast, wirst du feststellen, dass ich <? gegen <?php ausgetauscht habe, bevor es bei mir funktioniert hat :-)). Bei dir erkennt php die php-Bereiche also nicht als php. Lass die Einstellung aber so und verwende konsequent <?php - sonst bekommst du u.U. Probleme, wenn du dich mit xml beschäftigst :-)

            btw: wie man aus einer url einen Link macht steht in </faq/#Q-19>.

            Grüße aus Nürnberg
            Tobias

            --
            Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
            1. nein, bei short_open_tag ist on angegeben

              und selbst mit <?php funktioniert es leider nicht.

              Gibt es noch eine Möglichkeit zur Fehlerfindung?

              Grüße Sven

              1. hi,

                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                <html>
                <head>
                <title>Untitled Document</title>
                <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
                </head>

                <body>
                <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST">
                Name:<br><input type="text" name="name" size="20">
                  <input type="submit" name="submit" value="set">
                  </form>
                Name: <?php
                echo $_POST['name'];?>

                </body>
                </html>

                das kam raus, nachdem ich die seite aufgerufen hab ;-)

                ähm... ja...

          2. Moin!

            Alles andere habe ich unter www.scharf-s.de mal hochgeladen.

            Leider gibt er mir den textinput immer noch nicht aus.

            Scherzkeks! Deine Datei muß natürlich dem PHP-Parser auch vorgesetzt werden. Und ja, es hat einen Grund, warum PHP-Dateien auf ".php" enden, und nicht auf ".htm", wie bei dir jetzt.

            - Sven Rautenberg

            --
            Signatur oder nicht Signatur - das ist hier die Frage!
            1. Hallo Sven,

              Und ja, es hat einen Grund, warum PHP-Dateien auf ".php" enden, und nicht auf ".htm", wie bei dir jetzt.

              *schäm* davon bin ich eigentlich ausgegangen - auf _sowas_ bin ich nicht gekommen... :-)

              Grüße aus Nürnberg
              Tobias

              --
              Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
            2. was heisst das:
              Deine Datei muß natürlich dem PHP-Parser auch vorgesetzt werden.?

              (neulich habe ich mathematische Funktionen in PHP geschrieben und in einem HTML Dokument gespeichert. Der Browser hat mir alles fehlerfrei ausgegeben.
              Deshalb bin ich davon ausgegangen, dass er PHP aus HTML heraus umsetzen kann. Schließlich ist es ja mit den tags <? ---?> deklariert!

              Grüße Sven

              1. Moin!

                (neulich habe ich mathematische Funktionen in PHP geschrieben und in einem HTML Dokument gespeichert. Der Browser hat mir alles fehlerfrei ausgegeben.
                Deshalb bin ich davon ausgegangen, dass er PHP aus HTML heraus umsetzen kann. Schließlich ist es ja mit den tags <? ---?> deklariert!

                Aus Performancgründen schickt der Webserver Seiten mit ".htm" oder ".html" direkt zum Browser (jedenfalls in 99% aller Fälle - es hängt von der Konfiguration ab), und nur Dateien mit der Endung ".php" werden durch den PHP-Parser geschleust, und PHP-Code kann ausgeführt werden.

                Wenn es bei dir schon mal ohne ".php" geklappt hat, war das wohl Glück. Derzeit interpretiert dein Server aber definitiv kein PHP. Und das liegt an einem von zwei Dingen: 1. Die Dateiendung ist falsch oder 2. Der Server kann überhaupt kein PHP.

                - Sven Rautenberg

                --
                Signatur oder nicht Signatur - das ist hier die Frage!
                1. ich merke schon geht hier ins Unendliche und ihr verliert die Lust.
                  Aber trotz aller möglichen Dateiendungen .htm .html .php führt der Browser mir den Befehl nicht aus.
                  Über phpmyadmin wird php als richtig installiert angegeben.
                  Füge ich die Zeile <?php phpinfo(); ?> allerdings in ein Dokument (als .html oder .php abgespeichert ->es erscheint ein leeres Browser Fenster.-
                  na ja vielleicht läuft ja morgen alles.
                  vielen Dank
                  Sven

                  1. Moin,

                    Aber trotz aller möglichen Dateiendungen .htm .html .php führt der Browser mir den Befehl nicht aus.

                    Der Browser soll ja auch gar nichts ausführen. PHP läuft schließlich auf dem Server. Naja, bei dir wohl nicht ;-)

                    Über phpmyadmin wird php als richtig installiert angegeben.
                    Füge ich die Zeile <?php phpinfo(); ?> allerdings in ein Dokument (als .html oder .php abgespeichert ->es erscheint ein leeres Browser Fenster.-

                    Schau nach, ob PHP auf dem Server richtig installiert ist und wirf einen Blick in das Errorlog. Wende dich gegebenenfalls an deinen Provider.

                    --
                    Henryk Plötz
                    Grüße aus Berlin
                    ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
                    ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
                    1. Hi!

                      Schau nach, ob PHP auf dem Server richtig installiert ist und wirf einen Blick in das Errorlog. Wende dich gegebenenfalls an deinen Provider.

                      Wenn ich nicht irre stand da doch irgendwo was von T-Online, da habe ich mich schon gewundert, aber jetzt ist es ziemlich klar dass das bei  "normalem" T-Online Webspace nicht funktionieren wird.
                      Ich frage mich nur gerade was das für ein Buch sein muss wenn man bis zu "Dateiuploads" kommt und bis dahin nicht verstanden hat was PHP ist!

                      btw.:
                      http://www.php3.de/manual/de/introduction.php#intro-whatis
                      http://www.php3.de/manual/de/tutorial.php
                      http://php-faq.de/q/q-php-was.html

                      Grüße
                      Andreas

                      1. Hi!

                        Wenn ich nicht irre stand da doch irgendwo was von T-Online, da habe ich mich schon gewundert, aber jetzt ist es ziemlich klar dass das bei  "normalem" T-Online Webspace nicht funktionieren wird.

                        stimmt gar nicht, war woanders, wie es aussieht liegt der Kram auf freenet, und da gibt es sogar Pakete mit PHP, was Sven aber wohl nicht gebucht hat: http://www.freenet.de/dienste/homepage/index.html

                        @Sven: wenn es funktionieren soll brauchst Du z.B. bei Freenet das "Profi-Paket", oder entsprechendes bei einem anderem Provider.

                        Grüße
                        Andreas

                        1. danke für dein Engagement.
                          das Problem wird wohl irgendwo in meinen Servereinstellungen liegen.
                          auf freenet habe ich das Script nur hochgeladen, weil irgendjemand in der Runde mich dazu aufgefordert hat. Aber gut zu Wissen, dass ich für PHP-Ausführungen das Profi Paket brauche.
                          Übrigens zu meinem PHP-Wissen: In der Runde der letzten Stunden habe ich nichts Neues zu PHP beigebracht bekommen. Ich habe mich wohl zwischendurch undeutlich ausgedrückt (Browser und PHP ausführen (sollte ne Abkürzung sein))

                          Irgendwie führt er halt das PHP_SELF oder POST nicht richtig aus und landet auf einer leeren Seite

                          Gute Nacht
                          Sven

                          1. Hi!

                            Irgendwie führt er halt das PHP_SELF oder POST nicht richtig aus und landet auf einer leeren Seite

                            Hast Du mal ein paar der Beispiele auf den verlinkten Seiten ausprobiert?
                            Hast Du Dir mal mit echo $PHP_SELF ausgeben lassen um zu sehen ob da auch das drin steht was Du erwartest? In den Links steht auch mehrmals warum das bei register-globals=off nicht funktionieren wird, und wie es funktioniert wurde inzwischen oft genug gepostet!

                            Grüße
                            Andreas

                    2. Hi!

                      Aber trotz aller möglichen Dateiendungen .htm .html .php führt der Browser mir den Befehl nicht aus.

                      Der Browser soll ja auch gar nichts ausführen. PHP läuft schließlich auf dem Server. Naja, bei dir wohl nicht ;-)

                      Und hierzu auch direkt ein netter Artikel: http://www.dclp-faq.de/q/q-web-server-client.html

                      Grüße
                      Andreas

  2. echo "<br>Name: ", $name;

    Da liegt der Fehler: ausgegeben wird nur was in Anführungszeichen steht!
     print(" <br> Name: $_POST['name']")
    Besorge Dir zuerst mal ein Buch! Oder lese wegen mir auch Online.
    Sonst stolperst Du über jede noch so kleine Syntax.
    Viele Grüße Tom

    1. Hallo

      Besorge Dir zuerst mal ein Buch! Oder lese wegen mir auch Online.

      Genau das solltest du auch machen *SCNR*
      Natürlich kannst du das so ausgeben lassen wie er es dort stehen hat. Probiere es aus und staune!

      Grüße

      David

      --
      "Nobody will ever need more than 640k RAM!"
      1981 Bill Gates
      1. Ja nun steinigt mich schon. :-)
        Viel Grüße aus Berlin!
        TomIRL

    2. Hallo Tom,

      echo "<br>Name: ", $name;
      Da liegt der Fehler: ausgegeben wird nur was in Anführungszeichen steht!

      nein. Variablen können auch außerhalb der Anführungszeichen stehen (das Komma ist in dem Fall zum verknüpfen der Zeichenketten).

      print(" <br> Name: $_POST['name']")

      der Code von Sven funktioniert mal abgesehen von dem fehlenden $_POST... durchaus.

      Sonst stolperst Du über jede noch so kleine Syntax.

      mh...

      Grüße aus Nürnberg
      Tobias

      --
      Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
    3. ich habe dieses Script aus php4+MySQL -Internet intern von DATA BECKER
      Das Buch ist anscheinend mit Fehlern im Code behaftet
      Grüße Sven

      1. Hallo!

        ich habe dieses Script aus php4+MySQL -Internet intern von DATA BECKER
        Das Buch ist anscheinend mit Fehlern im Code behaftet

        Aber Hallo! Von wann ist das bitte? Also wenn in aktuellen Büchern so ein Quatsch verbreitet wird ist es IMHO eine Unverschämtheit dafür Geld zu verlangen.

        Wie man es richtig macht steht schon ganz am Anfang vom Manual, sogar in deutsch: http://www.php3.de/manual/de/tutorial.forms.php

        Grüße
        Andreas