Mailinhalte fischen mit PHP und Javascript

Silke Schümann wrote this 20:55:

Ich programmiere noch für den kleinen Hausgebrauch und was da so zusammenkommt, das kann man teilweise hier zum gefälligen Gebrauch oder Nichtbeachtung wiederfinden. ES dient auch mir als Erinnerungstütze.

z.B. sollte ich nicht vergessen die Methode <form action="?" method="post"> anzugeben. Wenn ich auf $_SERVER[php_self] von wegen dem XSS-Exploit das heutzutage nicht mehr bei allen Servern geht und damit ist $_SERVER[php_self] nicht mehr generell böse … wie auch immer geht eben auch ohne.

  1. <?php $m = isset($_POST[m]) ? intval($_POST[m]) : 1 ; ?>
  2. <form action="?" method="post">
  3. <input type="text"
  4. value="<?php echo $m; ?>" name="m" id="m"
  5. style="width: 4em;"
  6. onfocus="this.value=''"
  7. onChange="this.value= isNaN(this.value)? 1 : parseInt(parseFloat(this.value))"
  8. onBlur="this.value= isNaN(this.value)? 1 : parseInt(parseFloat(this.value))"/>
  9. <input type="submit" value="go" class="button" />
  10. </form>

Es wird per Javascript schon dafür gesorgt, dass in das Formularfeld nur Ganzzahlen dürfen, nur Javascript kann leicht abgeschaltet werden oder im Browser überabeitet werden, ergo wird die Eingabe selbstredend auch in PHP noch einmal überprüft und überarbeitet bzw mit dem Defaultwert ersetzt. OK im PHP war ich noch etwas Faul. Schließlich müsste ich auch dort prüfen mit PHP is_float() prüfen statt mit PHP isset() seltsamer Weise aber scheint hier das Ergebnis immer false zu sein und der Default wird gewählt.

Dass die Werte in Javascript neben parseInt (= runde auf Ganzzahl ab) zunächst noch mit parseFloat (= behandle Wert als Zahl) bearbeitet wird liegt daran, dass bei der Suche nach der Javascript-Syntax für PHP intval() und Co mir die folgenden beiden Links begegneten:

  1. javascript parseInt is broken
  2. JavaScript parseInt() bug

(more…)