Tobias Unger: spam und nonsense mail

Beitrag lesen

Hi!

Mein Versuch klappt leider nicht: Weisst du den Grund?
if($_POST['plz']!="" && !is_integer($_POST['plz'])){
$fehler=true;
$fehlertext.="Überprüfen Sie bitte Ihre Postleitzahl!<br>\n";
}

Afaik liegt es daran, dass die POST-Variable als Variable von Typ String übertragen wird.

<?php
$plz = "123";
if($plz !="" && !is_integer($plz)){
print("FEHLER!");
}
else print("KEIN Fehler!");
?>

Ergebnis: FEHLER!

Wenn du allerdings in der zweiten Zeile
$plz = 123;
schreibst dann erhällst du "KEIN Fehler!" .

Grund: "123" ist kein Integer sondern ein String, PHP behandelt das zwar meist recht unsauber ("123" == 123), aber wenn du das so explizit abfrägst nimmt es es halt doch mal genau.

Lösung:
if($plz != "" && ! ($plz >= 10000 && $plz <= 99999)) {
statt if($plz !="" && !is_integer($plz)){

Damit wird auch gleich überprüft - das prüft sogar noch genauer, ob es sich um eine PLZ handelt - und ignoriert die Unterschiede zwischen String und Integer.

D.h. nun ist auch "123" und 123 "falsch", "12345" und "12345" aber nicht mehr.

Ich hoffe, dir stehen nicht die Haare zu Berge aufgrund so viel Unvermögens.

Um 5:29 Uhr in der Nacht ist das verzeilich - außerdem habe ich mich im ersten Moment auch gewundert, wieso dein Bespiel nicht funktioniert :-) .

Grüße aus Nürnberg,
Tobias