<?php
/**
* Einige allgemeine Anmerkungen:
*
* - Die Datenbanktabelle sollte die Felder "id", "titel", "beitrag", "date"
* (oder so ähnlich) enthalten.
*
* - "id" sollte als Primärschlüssel (PRIMARY KEY) definiert sein und
* automatisch erhöht werden (AUTO_INCREMENT).
*
* - "date" sollte vom Typ DATETIME sein, eine Auftrennung in Datum und Zeit ist
* nicht sinnvoll. MySQL kann sehr gut mit einem kombinierten Feld umgehen.
*/
if (isset($_POST['set'])) {
// Speichert aufgetretene Fehler zur späteren Ausgabe zwischen
$errors = array();
// Sicherstellen, dass alle benötigten Felder tatsächlich in $_POST gesetzt
// sind
foreach (array('name', 'pass', 'titel', 'text') as $field) {
$_POST[$field] = (isset($_POST[$field])) ? trim($_POST[$field]) : '';
if ($_POST[$field] == '') {
// Falls Feldinhalt leer, Fehlermeldung hinzufügen
$errors[] = 'Feld "' . $field . '" nicht gesetzt.';
}
}
// Falls bisher noch kein Fehler, aber 'name' oder 'passwort' falsch gesetzt,
// entsprechenden Fehler hinzufügen
if (count($errors) == 0
&& ($_POST['name'] != 'admin'
|| md5($_POST['pass']) != 'e22a63fb76874c99488435f26b117e37')
) {
$errors[] = 'Kombination Benutzername/Passwort existiert nicht.';
}
// Falls bisher noch kein Fehler, Daten in Datenbank eintragen
if (count($errors) == 0) {
require 'config.php';
$connect = mysqli_connect($db_server, $db_user, $db_pass, $db_database)
or die('Verbindung zur DB fehlgeschlagen');
// Das Ersetzen der Zeilenumbrüche durch <br>-Tags, sollte meiner
// meiner Meinung nach erst bei Ausgabe geschehen. In die Datenbank
// sollten nach Möglichkeit die unveränderten Originaldaten geschrieben
// werden
// Escapen der Eingaben nicht vergessen (Stichwort: "SQL Injection")
$sql = "INSERT INTO `blogbeitraege`
(`date`,
`id`,
`titel`,
`beitrag`)
VALUES (NOW(),
null,
'" . mysqli_real_escape_string($connect, $_POST['titel']) . "',
'" . mysqli_real_escape_string($connect, $_POST['text']) . "')";
$query = mysqli_query($connect, $sql) or die(mysqli_error());
if (!$query) {
$errors[] = 'Eingaben konnten nicht in Datenbank geschrieben werden.';
}
mysqli_close($connect);
}
}
// Ende der Verarbeitungslogik. Ab hier beginnt die Ausgabe
?>
<?php if (isset($_POST['set'])): ?>
<?php if (count($errors) > 0): ?>
<?php foreach ($errors as $error): ?>
<p><?php echo htmlspecialchars($error); ?></p>
<?php endforeach; ?>
<?php else: ?>
<p>Eintrag hinzugefügt.</p>
<?php endif; ?>
<?php else: ?>
<p>Eingabeformular oder so</p>
<?php endif; ?>