Ist der Code so gut? (Verbesserungsvorschläge)

Cyperfriend

Der ohne Avatar
Registriert
14 Juli 2013
Beiträge
1.123
Ich habe folgenden Code um aus einem Formular Daten in eine Datenbank einzutragen. Der Code funktioniert schonmal, aber ist er auch gut und wie könnte er besser aussehen?
[src=php]$con = db_connect();

try
{
$insert = $con->prepare("INSERT INTO db_benutzer(benutzername, password, email) VALUES (:benutzername, :password, :email)");
$insert->execute(array('benutzername' => $_POST['benutzername'], 'password' => $_POST['password'], 'email' => $_POST['email']));
}
catch(PDOException $e)
{
echo "Fehler";
}
[/src]

Bei der Exception hätte ich gerne noch eine saubere Fehlermeldung. Irgendwie klappt das noch nicht. Ich muss aber auch gestehen, dass ich mit PDO noch ziemlich am Kämpfen bin, da ich es noch nicht wirklich kapiert habe. Nehme mir halt Tutorials zur Hilfe und versuche das dann irgendwie zusammen zu frickeln.
 
Würde die Infos wie mail, pw etc verschlüsseln und verstecken.
 
Man sollte keine Klartextpasswörter speichern. Du könntest die Passwörter hashen.
Außerdem prüfst du nicht auf duplicates, oder?
 
Und MySQLi "Escaping" verwenden?


Damit der Inhalt, was in dem Post steht nicht ein Befehl oder ähnliches sein kann bzw. sicher gemacht wird.

Ich glaube nämlich nicht das "prepare" da irgendwas an den Daten macht, damit diese sicher sind in irgendeiner Form, damit wird ja nur das Statement vorbereitet...
 
  • Thread Starter Thread Starter
  • #5
Naja, angeblich braucht man bei PDO den real_escape_string nicht mehr.
Ich mache atm. keine Prüfung, da es mir nur um die eigentliche Insert-Funktion und deren Sicherheit geht. Gerne lasse ich mir erklären, wie ich Dinge wie Passwörter und / oder E-Mailadressen verstecken kann. Wie ich einen Hash und einen Salt mache weis ich. Ich würde dann am Ende des Threads, wenn alles gelöst scheint das komplette Script posten. Ich schreibe halt gerade eines um, dass noch auf mysql(ohne i) basiert und wills halt gleich richtig machen. Daher auch der Umstieg auf PDO.
 
Zuletzt bearbeitet:
Ah okay... das wusste ich nicht. Bin gerade darüber gestolpert:


Calling PDO::prepare() and PDOStatement::execute() for statements that will be issued multiple times with different parameter values optimizes the performance of your application by allowing the driver to negotiate client and/or server side caching of the query plan and meta information, and helps to prevent SQL injection attacks by eliminating the need to manually quote the parameters.

Wobei aber auch:
 
Auch wenn es Dir bei Deinem Code nicht hilft, möchte ich doch mal folgenden mysqli wrapper ins Spiel bringen:
(laut file GPL3)

Seit ich das Ding gefunden hab, hab ich keine Sehnsucht mehr nach PDO :)
 
Zurück
Oben