James: Variablentyp aus Formulareingabe ermitteln

Guten Morgen,

Werden Formulareingaben eigentlich immer als Strings übergeben? Ich dachte, PHP interpretiert sich die Datentypen selbst. Konkret: Im unteren Beispiel bekomme ich bei Typ 1 ein "integer" und bei den Typen 2 und drei immer "string", egal was im Formularfeld stand. Was mache ich falsch? Es soll eine Postleitzahl überprüft werden, die ja ein Integer-Wert ist. "register_globals" steht auf on.

<?php
$test = 123;

print "TYP1: ".gettype($test)."<br />";
print "TYP2: ".gettype($eingabe)."<br />";
print "TYP3: ".gettype($_POST['eingabe']);
?>

<form action="<?php print($php_self); ?>" method="POST">
<input type="text" name="eingabe" size="25">
<input  type="submit" value="send" name="send" >
</form>

Danke und Grüesslie,

James.

  1. Hallo James,

    wenn eine Postleitzahl als Integer gälte, würde eine Dresdener Postleitzahl (z. B. 01326) falsch interpretiert.

    Gruß

    Eidgenosse

    1. Hallo Eidgenosse,

      wie kommst du als Eidgenosse ausgerechnet auf Dresden?

      Ist denn 0123 keine Interger?

      Grüesslie,

      James

      Hallo James,

      wenn eine Postleitzahl als Integer gälte, würde eine Dresdener Postleitzahl (z. B. 01326) falsch interpretiert.

      Gruß

      Eidgenosse

      1. Hallo James,

        die führende Null fällt bei der Umwandlung in einen Integerwert weg.

        Gruß

        Eidgenosse, der sich auch in Deutschland auskennt

        1. Kommst du aus der Schweiz? Ich frage nur interessehalber, weil ich gerade für ein halbes Jahr in Bern war, schönes Städtchen.

          Grüesslie,

          James.

          Hallo James,

          die führende Null fällt bei der Umwandlung in einen Integerwert weg.

          Gruß

          Eidgenosse, der sich auch in Deutschland auskennt

          1. Hallo James,

            nur meinen Papieren nach. Ich lebe sozusagen als Ausländer unter Euch Deutschen. Bern ist in der Tat eine schöne Stadt, aber irgendwo auch recht provinziell.

            Gruß

            Eidgenosse

            1. Hilfe, ein Ausländer!

              Du meintest bestimmt, die ganze Schweiz ist irgendwo provinziell ;-)

  2. Hallo James,

    Werden Formulareingaben eigentlich immer als Strings
    übergeben?

    Ja.

    Es soll eine Postleitzahl überprüft werden, die ja ein
    Integer-Wert ist. "register_globals" steht auf on.

    Dann mache die Pruefung so:

    if((int)$var == $var) {
      echo "int-Zahl";
    }
    else {
      echo "Keine int-Zahl";
    }

    Sinnvoller waere allerdings ein RegEx:

    if(preg_match('/^\d{5}$/',$var)) {
      echo "scheint valide PLZ zu sein";
    }
    else {
      echo "ups";
    }

    Gruesse,
     CK

    1. Hi Christian,

      danke für die Antwort und den regulären Ausdruck.

      gettype() macht dann allerdings insgesamt nur wenig Sinn. Denn was sollte ich sonst mit gettype() überprüfen als Formulareingaben? Selbst definierte Variablen werde ich ja nicht mit dem falschen Typen definieren, es sei denn am Montag Morgen.

      Grüesslie,

      James.