Marlies: $_REQUEST['xy'] mit image-button

Hi,

ich bin´s nochmal.
Wenn ich ein <form> mit dem Submit-Button abschicke, kann ich im "empfangsformular" mit dem Befehl if ($_REQUEST['xy']) abfragen, welcher Submit-Button geklickt wurde.

Jetzt würde ich das aber gerne mit nem Image-Button abschicken. Leider kann ich aber mit dem if ($_REQUEST['xy']) jetzt nicht den namen des Buttons feststellen...

Habt Ihr da vielleicht eine Idee?

cu Marlies

  1. Hi,

    ich bin´s nochmal.
    Wenn ich ein <form> mit dem Submit-Button abschicke, kann ich im "empfangsformular" mit dem Befehl if ($_REQUEST['xy']) abfragen, welcher Submit-Button geklickt wurde.

    $_REQUEST ist eh nicht so gut, Du weisst Doch wie die Daten ankommen !?
    $_POST oder $_GET finde ich passender....

    Jetzt würde ich das aber gerne mit nem Image-Button abschicken. Leider kann ich aber mit dem if ($_REQUEST['xy']) jetzt nicht den namen des Buttons feststellen..

    Warum nicht? hast Du dem button ein name-Attribut verpasst

    gruß
    Dynamite

    1. Also so sieht´s jetzt aus:
      [..
      echo"<form name="button1" action="index.php" method="post">";
      echo"<input name="button1" type="image" src="gfx/button1.gif"";
      echo"</form>";

      echo"<form name="button2" action="index.php" method="post">";
      echo"<input name="button2" type="image" src="gfx/button2.gif"";
      echo"</form>";

      echo"<form name="test" action="index.php" method="post">";
      echo"<input name="test" type="submit" value="test">";
      echo"</form>";
      ..]

      in der index.php dann so:

      [..
      if ($_REQUEST['button1'])
         {
         echo"button1";
         }
      if ($_REQUEST['button2'])
         {
         echo"button2";
         }
      if ($_REQUEST['test'])
         {
         echo"test";
         }
      ..]
      Wenn ich auf Button1 oder Button 2 klickt, gibt index.php nichts aus.
      Wenn ich aber auf den originalen test-submit-button klicke gibt sie "test" aus.

      habe ich da was übersehen?

      Da der User halt nicht nur zwei, sondern sechs Buttons hat, will ich in der Index je nach button eine Funktion aufrufen. Von daher dachte ich, dass ich es so am besten löse..

      Vielen Dank für Deine Mühen und ie Geduld ;)

      cu

      1. Okay,
        jetzt weiss ich auch was Du meinst.

        Verstehe zwar nicht warum Du soviele verschieden Formulare hast, pro Button eins, aber ansonsten kannst Du doch abfragen on

          
        if(isset($_POST['button1_x'])){  
            //dann mach dass..  
        }elseif(isset($_POST['test'])){  
            //mach mal was anderes  
        }  
        //und wie schon gesagt, nicht $_REQUEST nutzen  
        
        

        Gruss
        Dynamite

        1. Hi Dynamite,

          //und wie schon gesagt, nicht $_REQUEST nutzen
          [/code]

          mhh...

          dann erzähl mir bitte nochmal kurz, warum ich $_REQUEST nicht nutzen sollte.
          Läuft gerade alles so gut bei mir ;)

          cu

          1. dann erzähl mir bitte nochmal kurz, warum ich $_REQUEST nicht nutzen sollte.
            Läuft gerade alles so gut bei mir ;)

            Relativ einfach(Wie auch in dem Link ersichtlich):
            Du weisst doch woher die Daten kommen, und mit welcher methode sie gesendet worden sind, oder? Wieso benutzt Du es dann nicht auch so?
            $_REQUEST übernimmt variablen aus COOKIE,POST und GET.
            1. kann es dazu kommen das Du variablen "überschreibst"
            2. Ist so die Chance einen "Angriff" auf dein Script zu machen einfacher.
            3. Wieso nicht auf $_POST(bzw. $_GET) umsteigen, wenn es doch genau dafür gedacht ist ?

            Überleg dochmal das Du dein Script irgendwann ausbaust, per GET versendest Du z.B. die id eines Eintrags, per POST die id eines Users. Beides mit dem Variablennamen ID.
            Kannst Dir ja dann vorstellen was passiert.

            und ich denke mal das es nicht allzuviel Aufwand ist, von $_REQUEST auf $_POST bzw $_GET umzustellen.

            Und laufen sollte es danach ja immer noch, es sei denn Du hast irgendwas falsch gemacht(wobei das dann ja wieder den Sinn des Trennens der beiden Variablen zeigt)

            gruß
            Dynamite

            1. Okay, das klingt alles nachvollziehbar.

              Vielen Dank für Deine Meinung - muss ich wohl nochmal optimieren das ganze.

              Lieben Gruß

              cu

  2. echo $begrüßung;

    Wenn ich ein <form> mit dem Submit-Button abschicke, kann ich im "empfangsformular" mit dem Befehl if ($_REQUEST['xy']) abfragen, welcher Submit-Button geklickt wurde.

    Ja, aber nur, wenn er geklickt wurde. Wenn das Formular mit der Enter-Taste abgesendet wurde kann man das nicht. Jedenfalls nicht mit allen Browsern. Firefox und Opera sind der Meinung dann irgendeinen der nicht betätigten Submit-Buttons als betätigt anzusehen, der IE hingegen nicht.

    Jetzt würde ich das aber gerne mit nem Image-Button abschicken. Leider kann ich aber mit dem if ($_REQUEST['xy']) jetzt nicht den namen des Buttons feststellen...

    Auch hier gibt es unterschiedliche Verhaltensweisen der Browser. Manche senden auch xy mit, andere nur xy.x und xy.y, also die Koordinaten auf denen der Mausklick erfolgte. Und PHP macht aus den Punkten Unterstriche.

    Wenn du dich informieren möchtest, was von einem Request bei PHP ankommt, lass dir den kompletten Inhalt von $_POST beziehungsweise $_GET mit print_r() oder var_dump() ausgeben. (Vorher ein <pre> erhöht die Übersichtlichkeit der Ausgabe.)

    echo "$verabschiedung $name";