ZinC: Botton implementierung mit PHP Funktion

hi,
also ich weiß, dass das bestimmt oft kommt, aber ich kann darin einfach keinen Fehler finden.
Also kann mir von euch bitte jemand helfen, damit wenn ich den Butto drücke der Text ausgegeben wird?

<html>  
<head>  
    <title>PHP Button</title>  
</head>  
<body>  
   <form method="post" action="<? PHP_SELF ?>">  
      <input name="klick" type="submit" value="Drück mich" />  
   </form>  
[code lang=php]   <?php  
      if ($_POST['klick'])  
      {  
          echo "Button Gedrückt!";  
      }  
   ?>

</body>
</html>
[/code]

  1. was erwartest du dir hiervon?
    <? PHP_SELF ?>

    --
    for your security, this text has been encrypted by ROT13 twice.
  2. Hi!

    Also kann mir von euch bitte jemand helfen, damit wenn ich den Butto drücke der Text ausgegeben wird?

    Was passiert denn stattdessen?

    <form method="post" action="<? PHP_SELF ?>">

    Auch wenn man $_SERVER['PHP_SELF'] richtig schreibt, ist es keine gute Idee, das zu verwenden, schon gar nicht, wenn man (wie so oft) den Kontextwechsel nicht beachtet. Ein action="" verweist ebenfalls und völlig Injection-sicher auf die aktuelle Ressource.

    if ($_POST['klick'])

    Das ergibt eine boolsche Auswertung und eine Notice-Meldung (wenn das error_reporting auf E_ALL steht), wenn das Formular nicht gesendet wurde. Besser ist es, auf !empty($_POST['klick']) zu testen.

    Lo!

    1. Hallo...

      Also kann mir von euch bitte jemand helfen, damit wenn ich den Butto drücke der Text ausgegeben wird?
      Was passiert denn stattdessen?

      Du meinst was passiert wenn der Button nicht gedrückt wird? -> Dann sollte natürlich keine Ausgabe erfolgen, sozusagen gar nichts.

      Habe auch noch die Änderungen mit der "action" und dem Abfragen des Buttons gemacht, aber es wir dennoch kein Text ausgegeben...
      Das ganze sieht jetzt so aus:

      <form method="post" action="">  
          <input name="klick" type="submit" value="Drück mich" />  
      </form>  
      [code lang=php]<?php  
          if (!empty($_POST['klick']))  
          {  
              echo "Button Gedrückt!";  
          }  
      ?>
      ~~~[/code]
      
      1. Hi!

        Also kann mir von euch bitte jemand helfen, damit wenn ich den Butto drücke der Text ausgegeben wird?
        Was passiert denn stattdessen?
        Du meinst was passiert wenn der Button nicht gedrückt wird? -> Dann sollte natürlich keine Ausgabe erfolgen, sozusagen gar nichts.

        Mit der Rückfrage wollte ich, dass du genauer beobachtest und schilderst, was wann passiert oder auch nicht. Das ist wichtig, um Wirkungsweisen nachzuvollziehen und Ursachen zu finden.

        Habe auch noch die Änderungen mit der "action" und dem Abfragen des Buttons gemacht, aber es wir dennoch kein Text ausgegeben...

        Mit dem gegebenen Code ist kein Problem nachvollziehbar. Mach eine Kontrollausgabe. Stell vor das if ein var_dump($_POST) (davor ein <pre> erhöht die Übersichtilichkeit der Ausgabe, ein Blick in den Quelltext des Browsers tut's auch).

        Lo!

        1. Hi nochmal...hab nun endlich das Problem gefunden, jodoch nicht verstanden.

          Also der Fehler war, das der ganze Code in einem *.html-File war. Ich habe dann das ganze nochmals mit einem *.php-File getestet und da gehts...
          Nun meine Frage: Warum muss ich diesen Code unbedingt als *.php abspeichern?

          lg ZinC

          1. Mahlzeit ZinC,

            Nun meine Frage: Warum muss ich diesen Code unbedingt als *.php abspeichern?

            Musst Du nicht. Du musst lediglich sicherstellen, dass der Webserver, der diese Dateien ausliefern soll, weiß, dass er bestimmte Dateien vorher an den PHP-Interpreter weiterreichen soll und dann erst das Ergebnis, das dieser zurückliefert, an den Browser ausgibt. Normalerweise passiert das in der Standardkonfiguration mit Dateien, die die Endung .php haben - das kann man aber individuell konfigurieren (wenn man entsprechenden Zugriff auf den Webserver hat).

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Danke für die Antwort...

              ...und da kommt auch schon die nächste. =)
              Habe ich Nachteile wenn ich die Datein als .php speichere, denn sonst würde mich das nicht stören.
              Ausserdem: Warum sollte ich dann eigentlich noch .html Files machen, wenn ich in den .php Files auch html-Code schreiben kann?

              lg ZinC

              1. Danke für die Antwort...

                ...und da kommt auch schon die nächste. =)
                Habe ich Nachteile wenn ich die Datein als .php speichere, denn sonst würde mich das nicht stören.

                Ja, sie wird interprettiert ^^

                Ausserdem: Warum sollte ich dann eigentlich noch .html Files machen, wenn ich in den .php Files auch html-Code schreiben kann?

                Wenn du in einer Datei keinen PHP-Code hast ist es nicht nützlich und ein bisschen schädlich sie dennoch durch den Interpreter zu jagen.
                Allerdings hätte ich auch keine Lust jedes Mal darauf zu achten ob jetzt eben solcher Code drin steht oder nicht und wenn sich das mal ändert müsste ich alle Verweise auch ändern und so fort.
                Das wäre's mir nicht wert. Also imho kannst du durchaus jede Ressource durch den Parser jagen, solange der kein <? sieht wird er nichts machen.

                Appropos <? es empfiehlt sich <?php (...) ?> zu verwenden, damit der Webserver weiß welche Sprache da kommt.

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