SQLite Formular
Ein Formular zur Eingabe von Inhalten in die SQLite Datenbank unterscheidet sich nicht von einem anderen Formular, auch das Empfangen der Daten durch PHP unterscheidet sich nicht. SQLite bietet auch mit seiner Funktion sqlite_escape_string() eine einfache Sicherheitsroutine.
SQLite Beispiel Formular
Hier stünde die Erfolgsmeldung (Benutzereingabe erfasst) wenn ich den Code ausführen würde.
Das Formular kommt so zustande:
<?php
// Formular mit Heredoc erstellen
$fosqli = <<< _FORMULAR_
<form action="sqlite_form.php" method="post">
Kolonne 1<br />
<input type="text" style="width:350px" name="col_1" value="Neuer Datensatz Teil 1" /><br /><br />
Kolonne 2<br />
<textarea style="width:350px" name="col_2" rows="3" cols="150">Neuer Datensatz Teil 2</textarea>
<br />
<br />
<input type="submit" name="Send" value="Eintragen" />
</form>
_FORMULAR_;
echo $fosqli;
?>
SQLite Datenbank Eintrag
sqlite_query($db, $sql)
Das Einlesen kommt so zustande:
<?php
// Einlesen
if (isset($_POST['Send'])){
$col_1 = htmlspecialchars($_POST['col_1']);
$col_2 = htmlspecialchars($_POST['col_2']);
$db = sqlite_open("SQLite/db_test.db", 0666, $error) or die("Fehler $error");
$sql = "INSERT INTO tb_test VALUES (NULL, '$col_1', '$col_2')";
$doit = sqlite_query($db, $sql);
if ($doit){
echo "<br /><strong>Benutzereingabe erfasst</strong><br />";
}
}
?>
SQLite Benutzereingabe entschärfen
sqlite_escape_string($userinput)
Das Unschädlichmachen könnte auch durch diese Funktion geschehen:
$sql = "INSERT INTO tb_test VALUES ('".sqlite_escape_string($col_1)."','".sqlite_escape_string($col_2)."')");
Im PHP Manual steht dazu:
Bereitet den String so auf, dass er korrekt innerhalb eines SQL-Befehls
als Parameter genutzt werden kann. Diese Wandlung enhält die Verdopplung von
einfachen Anführungszeichen (') und die Überprüfung von nicht binärkompatiblen Zeichen.