AirMax: Trennung von PHP und HTML

Beitrag lesen

Mahlzeit

Ich habe eine grundsätzliche Frage, die mich schon seit Tagen beschäftigt. Ich überlege hin und her und weiss nicht, was die bessere Lösung ist:
Es wird ja immer wieder dazu geraten die Struktur einer HTML-Seite von dessen Gestaltung (CSS) zu trennen. Das leuchtet mir auch ein. Dieses Prinzip möchte ich auch auf die Kombination PHP-HTML anwenden. In meinen Augen sind PHP-Skripte dafür da einen Prozess abzuwickeln, um anschliessend ein Ergebnis zu liefern, dass unabhängig vom Kontext ist und frei von jeglicher Formatierung. Ich finde, dass diese Einstellung PHP-Skripte universeller einzetzbar und pflegeleichter macht. Soweit - sogut. Aber jetzt kommt mein Problem: Ich weiss nicht, wie ich den PHP-Return dynamisch in mein HTML-Dokument einbinden soll?! Hier mal ein Beispiel. Am besten gleich das von diesem Thread: Ein Formmailer, der bei falscher oder ungültiger Eingabe eine Fehlermeldung ausgibt.

Das PHP-Skript 'uservalidation.php' gibt bei falscher oder ungültiger Eingabe eine Fehlermeldung aus:

  
if (empty($_POST['userid']) && $_POST['check'] == 'true') {  
    $errormessage = 'Bitte geben Sie Ihre Kundennummer und das dazugehörige Passwort ein.';  
}  

$errormessage soll nun ins HTML-Dokument eingebunden werden:

  
<?php include('uservalidation.php') ?>
  
<form id="infomaterial" action="[code lang=php]<?php echo $_SERVER['PHP_SELF']; ?>
~~~" method="post">  
.....  
<input type="submit" class="submit" value="anmelden" />  
<!-- An dieser Stelle könnte die Fehlermeldung kommen -->  
<p class="xy">`<?php echo $errormessage; ?>`{:.language-php}</p>  
</form>  
[/code]  
Das würde auch gut funktionieren:  
~~~html
  
<form id="infomaterial" action="/php/login.php" method="post">  
.....  
<input type="submit" class="submit" value="anmelden" />  
<p class="xy">Bitte geben Sie Ihre Kundennummer und das dazugehörige Passwort ein.</p>  
</form>  

Aber was, wenn kein Fehler auftrat?

  
<form id="infomaterial" action="/php/login.php" method="post">  
.....  
<input type="submit" class="submit" value="anmelden" />  
<p class="xy"></p>  
</form>  

Ist das akzeptabel? Wohl eher unvorteilhaft. Denn diese Ausgabe produziert mir einen Abzatz, den ich eigentlich garnicht haben will! Deshalb überlege ich, welche Möglichkeiten ich noch habe. Eine davon wäre, dass ich eine weitere PHP-Datei einbinde, sobald $errormessage gesetzt wurde:

PHP-Datei 'errormessage.php':

  
if (isset($errormessage){  
    echo "<p class=\"xy\">$errormessage</p>;"  
}  

HTML-Dokument:

  
<?php include('uservalidation.php') ?>
  
<form id="infomaterial" action="[code lang=php]<?php echo $_SERVER['PHP_SELF']; ?>
~~~" method="post">  
.....  
<input type="submit" class="submit" value="anmelden" />  
<!-- An dieser Stelle könnte die Fehlermeldung kommen -->  
<p class="xy">`<?php include('errormessage.php') ?>`{:.language-php}</p>  
</form>  
[/code]  
Wäre das eine vernünftige Alternative? Bei dieser Variante habe ich nur die Befürchtung, dass ich am Ende immer mehr includes bekomme, dass die ganze Angelegenheit unübersichtlich wird. Es fällt ja öfter das Stichwort "HTML-Template". Ich weiss nicht genau, wie das funktioniert. Aber wäre das eine Lösung dafür? Ich wäre froh, wenn ich auf das zunächst verzichten könnte. Muss erst mal in PHP richtig fit werden.  
Ich hoffe, Ihr habt mein Problem verstanden und könnt mit ein paar Tipps geben!  
  
Danke & Gruss  
AirMax