Felix Riesterer: Problem mit Loginscript (wahrscheinlich MySQL Fehler)

Beitrag lesen

Lieber Rolf,

?>
    <html>
    <head>
<?php if ($verhalten == 1): ?> 
  [html]
<?php elseif ($verhalten == 2 || $verhalten == 3): ?> 
  [html]
<?php endif; ?> 
    </head>
    <body>
<?php if ($verhalten == 1): ?> 
  [html]
<?php else: ?> 
  [html]
<?php endif; ?>
</body>
</html>

Dann lieber mit dreierlei HTML-Dateien, die bei Bedarf geladen werden:

$templates = array(
  0 => 'login-form.html',
  1 => 'login-ok.html',
  2 => 'login-form-failed-login.html'
);

$html = file_get_contents(
  './templates/'.$templates[$verhalten]
);

// mehr PHP-Logik

echo $html; // Ende

Das vermeidet die Code-Duplikation, und die Verwendung der alternativen Syntax für Kontrollstrukturen lässt deutlicher erkennen, wo die Abfrageblöcke enden. endif; ist hier besser als ein einsames }.

Die HTML-Dokumente lassen sich getrennt voneinander pflegen (inklusive Layoutfragen) und sind im PHP-Code nur verlinkt, anstatt mit HTML-Code die PHP-Scriptdatei zuzumüllen. Das rechtfertigt meine Code-Duplikation allemal!

Noch besser wäre der Einsatz von Funktionen, um Logik und Ausgabe zu trennen.

Das kommt auf die Komplexität des Projektes und dem Wissensstand des Programmierers an. Meine obige Lösung trennt Logik von Ausgabe ohne Funktionen.

Abgesehen davon ist besteht das Eingabeformular aus kaputtem HTML. Wenn schon als Tabelle, dann in ein <table> Tag eingeschlossen, und die Rolle von <tr> und <td> wurde verwechselt.

Dafür gibt es SELFHTML: Formulare erstellen und gestalten

Liebe Grüße,

Felix Riesterer.