Johannes Zeller: Warum wird Code in Funktionen wird anders behandelt?

Beitrag lesen

Hallo Bekiro,

<input type="text" name="firma"
<?php if ((isset($firma)) and (!$firma == 0)) {
echo 'value="'.$firma.'"'; } ?>
/>

Dein Notation funktioniert nur, wenn register_globals aktiviert ist, wovon aus Sicherheitsgründen schon seit längerer Zeit abgeraten wird. Ab PHP 6 wird dieses "Feature" sogar komplett entfallen. Du solltest also lieber die superglobalen Arrays $_GET bzw. $_POST verwenden, in deinem Beispiel also statt $firma $_GET['firma'] bzw. $_POST['firma'].

function value($a) {
if ((isset($a)) and (!$a == 0)) {
  echo 'value="'.$a.'"';
}
}

und im formularfeld rufe ich dann die funktion auf:

<input type="text" name="firma"
<?php function (value($firma); ?>
/>

jetzt bekomme ich aber die fehlermeldung:
Notice: Undefined variable: firma in C:\index.php on line 7 />

Mich wundert ehrlich gesagt nicht, dass da keine weitere Fehlermeldung kommt. Die Anweisung<?php function (value($firma); ?> ist nämlich schon syntaktisch komplett falsch.

Deshalb gehe ich davon aus, dass du stattdessen <?php value($firma); ?> dort stehen hast. D.h. du übergibst der Funktion value die Variable $firma, welche nicht definiert ist. Da die Überprüfung mit isset() aber erst innerhalb der Funktion stattfindet, kommt hier deswegen eine fehlermeldung.

Schöne Grüße,

Johannes