hans: POST VARS

hi,

folgendes script funzt bei mir einfach nicht! kann das an $POST_VARS oder ähnlichem liegen? wie ist den die syntax richtig in der if bedingung??

thx!

<?
if (testclick)
{
echo "click auf testclick";
}
?>

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

<table width="200" border="1" align="CENTER">
<tr bgcolor="Gray">
<td align="middle">

<input type="submit" name="testclick" value="testclick">

</tr>
</table>

</form>

  1. hallöchen»» hi,

    folgendes script funzt bei mir einfach nicht! kann das an $POST_VARS oder ähnlichem liegen? wie ist den die syntax richtig in der if bedingung??

    thx!

    <?
    if ($testclick == "testclick")

    ^^^^^^^^^^^^^ //vergiss die variablenbezeichnung nicht

    {
    echo "click auf testclick";
    }
    ?>

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

    <table width="200" border="1" align="CENTER">
    <tr bgcolor="Gray">
    <td align="middle">

    <input type="submit" name="testclick" value="testclick">

    </tr>
    </table>

    romy

    </form>

    1. es handelt sich bei der variablen um einen string, der nicht einfach mit == verglichen werden kann, sondern hier muss der befehl strcmp herhalten. strcmp gibt den wert 0 und nicht 1 zurück, wenn die strings übereinstimmen. ausserdem sollte man vorher die existenz prüfen, ob diese variable überhaupt übermittelt wurde, um scriptfehler zu vermeiden. das kannst du mit:

      if (isset($_POST["testclick"] AND !strcmp($_POST["testclick"], "testclick"))

      if ($testclick == "testclick")
      ^^^^^^^^^^^^^ //vergiss die variablenbezeichnung nicht
      {
      echo "click auf testclick";
      }
      ?>

      Ilja

      1. hallöchen

        es handelt sich bei der variablen um einen string, der nicht einfach mit == verglichen werden kann, sondern hier muss der befehl strcmp

        das stimmt nicht, natürlich kann man strings mit dem == Operator vergleichen

        herhalten. strcmp gibt den wert 0 und nicht 1 zurück, wenn die strings

        ach ne

        übereinstimmen. ausserdem sollte man vorher die existenz prüfen, ob diese variable überhaupt übermittelt wurde, um scriptfehler zu vermeiden. das kannst du mit:

        willst du mich schicken, ich weiss wie man das auswertet
        sicherlich ist es besser vorher auf Vorhandensein zu überprüfen, aber so hatte ich die Frage nicht verstanden, ausserdem muss es aber gar nicht sein, denn wenn sie nicht gesetzt ist, gibt er halt false zurück und das soll er doch...
        ausserdem kann ich sehr wohl auch ohne _POST auf die Variablen zugreifen je nach register globals on/off.

        if (isset($_POST["testclick"] AND !strcmp($_POST["testclick"], "testclick"))

        if ($testclick == "testclick")
        ^^^^^^^^^^^^^ //vergiss die variablenbezeichnung nicht
        {
        echo "click auf testclick";
        }
        ?>

        ist echt nicht böse gemeint, ich muss mich aber trotzdem nicht belehren lassen
        was hattest DU mit der Nummer bezweckt?
        romy

        Ilja

        1. ich wollte niemanden verbessern, sondern bei dem problem helfen. ich habe halt gelernt, strings mit der funktion strcmp zu vergleichen und nicht mit dem vergleichs-operator. bei mir bekomme ich auch jedesmal eine warnung, wenn ich eine variable abfragen will, die noch nicht existent ist. deswegen prüfe ich variablen immer auf existens, die aus formularen kommen. was die einstellung betrifft, so werden die meisten srcipte auf fremden server ausgeführt, wo man oftmals aus sicherheitsgründen die variablen aus formularen nicht mehr direkt über den variablennamen ansprechen kann. wenn man einen eigenen server hat, so kann man den natürlich entsprechend einstellen, was aber zu problemen fürhren kann, wenn man die scripte auf andere server überträgt.

          wie auch immer, wenn es mehrere lösungen gibt, kann er sich ja eine aussuchen.

          Ilja

          hallöchen

          es handelt sich bei der variablen um einen string, der nicht einfach mit == verglichen werden kann, sondern hier muss der befehl strcmp

          das stimmt nicht, natürlich kann man strings mit dem == Operator vergleichen

          herhalten. strcmp gibt den wert 0 und nicht 1 zurück, wenn die strings

          ach ne

          übereinstimmen. ausserdem sollte man vorher die existenz prüfen, ob diese variable überhaupt übermittelt wurde, um scriptfehler zu vermeiden. das kannst du mit:

          willst du mich schicken, ich weiss wie man das auswertet
          sicherlich ist es besser vorher auf Vorhandensein zu überprüfen, aber so hatte ich die Frage nicht verstanden, ausserdem muss es aber gar nicht sein, denn wenn sie nicht gesetzt ist, gibt er halt false zurück und das soll er doch...
          ausserdem kann ich sehr wohl auch ohne _POST auf die Variablen zugreifen je nach register globals on/off.

          if (isset($_POST["testclick"] AND !strcmp($_POST["testclick"], "testclick"))

          if ($testclick == "testclick")
          ^^^^^^^^^^^^^ //vergiss die variablenbezeichnung nicht
          {
          echo "click auf testclick";
          }
          ?>

          ist echt nicht böse gemeint, ich muss mich aber trotzdem nicht belehren lassen
          was hattest DU mit der Nummer bezweckt?
          romy

  2. Hallo,

    folgendes script funzt bei mir einfach nicht! kann das an $POST_VARS oder ähnlichem liegen? wie ist den die syntax richtig in der if bedingung??

    1. Syntax if ist i.O.!
    2. Im if-Statement benutz mal $HTTP_POST_VARS["testclick"] anstatt testlick
    3. in der <form action Zeile schreib
    <form action="<? echo $PHP_SELF; ?>" method="post">
    4. Zum Testen würde ich einfach mal ein

    <?

    echo $HTTP_POST_VARS["testclick"];

    if ($HTTP_POST_VARS["testclick"])
    {
    echo "click auf testclick";
    }
    ?>

    <form action="<? echo $PHP_SELF; ?>" method="post">

    <table width="200" border="1" align="CENTER">
    <tr bgcolor="Gray">
    <td align="middle">

    <input type="submit" name="testclick" value="testclick">

    </tr>
    </table>

    </form>

    Das sollte eigentlich laufen.

    Liebe Grüße

    Martin

  3. Hallo,

    hast Du Dir schon mal Kontrollausgaben anzeigen lassen?
    Es wurde Dir empfohlen, mit $HTTP_POST_VARS[] zu arbeiten.

    define("DEBUG","TRUE");   // jeweils auf TRUE setzen zum Testen...

    <?

    if (DEBUG) {echo $testclick}

    if (testclick)

    if $testclick  // oder eben die $HTTP_...

    {
    echo "click auf testclick";
    }
    ?>

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

    dann musst Du aber hier auch mit $HTTP_SERVER_VARS[PHP_SELF] arbeiten.

    <table width="200" border="1" align="CENTER">
    <tr bgcolor="Gray">
    <td align="middle">

    <input type="submit" name="testclick" value="testclick">

    </tr>
    </table>

    </form>

    Liebe Grüße aus <http//www.braunschweig.de>

    Tom