Titel: Login/Registrierung PHP PDO
Ja, der Titel sagt es schon ziemlich gut: wir machen ein Login- und Registrierungsskript, für Software und das mit dem PDO (PHP Database Object).
Was genau das ist? Weiß ich ehrlich gesagt nicht. Aber hier eine Erklärung was das ist:
Das PHP Projekt verfolgt seit kürzerer Zeit die Entwicklung nach OOP (Object Oriented Programing, Objekt Orientierte Programmierung).
So was ich machen will ist also eigentlich ganz einfach: wir schreiben uns ein Loginskript mit OOP. Klingt schon ungünstig weil PHP - ignorieren wir jetzt einfach mal.
Natürlich hat dieses Tutorial/whatever auch einige Voraussetzungen die der Server haben MUSS.
Sind zwa nicht allzuviele aber tragen dennoch viel:
Das wars.
Ich werde nicht erklären wie man das PDO für MySQL aktivieren kann, ich sage nur: man findet es in der php.ini!
Gut für den Clienten nutze ich zwei Methoden:
Letzteres findet man hier im Forum.
Den Code werde ich soweit es geht nicht in Expander packen. Das Tutorial ist aber zwei Seitig aufgebaut: PHP Skript mit MySQL oder SQLite und der Client Part in VB für WebClient und HTTPPostRequest-Lib.Somit muss ich schon zwei Expander nutzen, ich hoffe das stört jetzt nicht so extrem.
Also beginnen wir erstmal mit dem PHP Part
Es sieht am Anfang erstmal schwerer aus, als es ist, dafür funktioniert es später aber deutlich schöner und ist auch in der Wartung deutlich einfacher als die herkömmliche Methode mit dem Login. Wie dem auch sei, gibt es erstmal eine saftige Einleitung zu PHP und PDO:
Dem PDO ist es ansich egal, welches Datenbanksystem man nutzt - Ist von Vorteil, wenn man viele Datenbanksysteme nutzen will.
Es geht also nichts über OOP in der PHP Programmierung. Dazu bedienen wir uns auch wirklich nur diesem da der Rest zu komplex würde.
Ein kleiner Aufbau für eine Abfrage des PDO:
Hier sieht man schon, dass es eindeutig anders wird - man kann meinen komplizierter, aber ich finde es ist deutlich einfacher damit zu arbeiten, also mit anderen Methoden.
Arbeiten wir den Beispiel-Aufruf mal etwas ab:
Erster unbekannter Teil: $database.
Dem PDO ist es vollkommen egal, welche Datenbank es nutzt - der Aufruf ist immer derselbe und verändert sich auch nie.
Da wir uns nun in der OOP Welt bewegen, müssen wir ein neues Objekt deklarieren und wovon? Richtig, PDO.
Dat wars, hier gehts nicht mehr weiter.
Wobei..doch hier gehts weiter. Nämlich mit einem kleinen Splitter, zwischen SQLite und MySQL:
Dem PDO muss man jetzt einen Connection-String übergeben, dieser Unterscheidet sich zwischen MySQL und SQLite erheblich, somit zwei Expander
MySQL
Der Connectionstring für eine MySQL Sitzung ist bekanntermaßen so:Und das ist beim PDO nicht anders - wir brauchen nur einen Command, der sagt, welches Datenbanksystem genutzt werden soll.
Somit sieht unser Connectionstring am Ende so aus:
Fangen wir nun an, die Tabellen zu erstellen. Hierbei werde ich zwischen MySQL und SQLite unterscheiden, nicht aber trennen.
Der Standardsql-Satz für eine Tabelle ist bekanntlich so:
Nutzen wir auch gleich aus:
MySQL:
SQLite:
So und wie nutzen wir das in userem Skript?
Ganz einfach:
Damit ist unsere Datenbank erstellt und wir können diese nutzen.
Weiter mit der Registrierung.
Hierbei werde ich zwischen MySQL und SQLite nicht unterscheiden, da der SQL String für beide Identisch sein wird.
Machen wir uns also ans Werk den SQL String zusammenzubasteln: Basis:
Wir nehmen als Tabelle "user" mit den Spalten: username, password
Also sieht unser SQL String so aus:
jezt würd man meinen: okay, nehmen wir doch einfach die Werte die uns geschickt wurden. Ist nicht so gut, könnten SQL Injection mit bei sein.
Also machen wir was anderes: wir ändern den String nochmal ab:
Die zwei Parameter mit den Doppelpunkten sind jetzt im Statement drin und werden auch dadrin bleiben.
Wir müssen diese nurnoch beschreiben. Ist auch wieder, aufgrund der OOP, super einfach.
Der User ist eingetragen.
Wir haben nun aber das Problem, dass wir keine Überprüfung haben, ob Einträge bereits existieren.
Das ist aber auch ganz einfach eingerichtet
Gut das hätten wir.
Das Login Skript kommt in den nächsten Posts.
Genauso wie der VB Code.
Außerdem werde ich noch ein Skript zusammenbasteln, womit sich das ganz einfach per URL Parameter steuern lässt.
(db.php?command=login|register|setup).
Ja, der Titel sagt es schon ziemlich gut: wir machen ein Login- und Registrierungsskript, für Software und das mit dem PDO (PHP Database Object).
Was genau das ist? Weiß ich ehrlich gesagt nicht. Aber hier eine Erklärung was das ist:
Das PHP Projekt verfolgt seit kürzerer Zeit die Entwicklung nach OOP (Object Oriented Programing, Objekt Orientierte Programmierung).
So was ich machen will ist also eigentlich ganz einfach: wir schreiben uns ein Loginskript mit OOP. Klingt schon ungünstig weil PHP - ignorieren wir jetzt einfach mal.
Natürlich hat dieses Tutorial/whatever auch einige Voraussetzungen die der Server haben MUSS.
Sind zwa nicht allzuviele aber tragen dennoch viel:
- PHP 5 und neuer mit aktiviertem PDO für MySQL oder SQLite
- MySQL Server
- SQLite
Das wars.
Ich werde nicht erklären wie man das PDO für MySQL aktivieren kann, ich sage nur: man findet es in der php.ini!
Gut für den Clienten nutze ich zwei Methoden:
WebClient- HTTPPostRequest-Lib
Letzteres findet man hier im Forum.
Den Code werde ich soweit es geht nicht in Expander packen. Das Tutorial ist aber zwei Seitig aufgebaut: PHP Skript mit MySQL oder SQLite und der Client Part in VB für WebClient und HTTPPostRequest-Lib.
Also beginnen wir erstmal mit dem PHP Part
Es sieht am Anfang erstmal schwerer aus, als es ist, dafür funktioniert es später aber deutlich schöner und ist auch in der Wartung deutlich einfacher als die herkömmliche Methode mit dem Login. Wie dem auch sei, gibt es erstmal eine saftige Einleitung zu PHP und PDO:
Dem PDO ist es ansich egal, welches Datenbanksystem man nutzt - Ist von Vorteil, wenn man viele Datenbanksysteme nutzen will.
Es geht also nichts über OOP in der PHP Programmierung. Dazu bedienen wir uns auch wirklich nur diesem da der Rest zu komplex würde.
Ein kleiner Aufbau für eine Abfrage des PDO:
Hier sieht man schon, dass es eindeutig anders wird - man kann meinen komplizierter, aber ich finde es ist deutlich einfacher damit zu arbeiten, also mit anderen Methoden.
Arbeiten wir den Beispiel-Aufruf mal etwas ab:
Erster unbekannter Teil: $database.
Dem PDO ist es vollkommen egal, welche Datenbank es nutzt - der Aufruf ist immer derselbe und verändert sich auch nie.
Da wir uns nun in der OOP Welt bewegen, müssen wir ein neues Objekt deklarieren und wovon? Richtig, PDO.
Dat wars, hier gehts nicht mehr weiter.
Wobei..doch hier gehts weiter. Nämlich mit einem kleinen Splitter, zwischen SQLite und MySQL:
Dem PDO muss man jetzt einen Connection-String übergeben, dieser Unterscheidet sich zwischen MySQL und SQLite erheblich, somit zwei Expander
Der Connectionstring für eine MySQL Sitzung ist bekanntermaßen so:Und das ist beim PDO nicht anders - wir brauchen nur einen Command, der sagt, welches Datenbanksystem genutzt werden soll.
Somit sieht unser Connectionstring am Ende so aus:
Fangen wir nun an, die Tabellen zu erstellen. Hierbei werde ich zwischen MySQL und SQLite unterscheiden, nicht aber trennen.
Der Standardsql-Satz für eine Tabelle ist bekanntlich so:
Nutzen wir auch gleich aus:
MySQL:
SQLite:
So und wie nutzen wir das in userem Skript?
Ganz einfach:
Damit ist unsere Datenbank erstellt und wir können diese nutzen.
Weiter mit der Registrierung.
Hierbei werde ich zwischen MySQL und SQLite nicht unterscheiden, da der SQL String für beide Identisch sein wird.
Machen wir uns also ans Werk den SQL String zusammenzubasteln: Basis:
Wir nehmen als Tabelle "user" mit den Spalten: username, password
Also sieht unser SQL String so aus:
jezt würd man meinen: okay, nehmen wir doch einfach die Werte die uns geschickt wurden. Ist nicht so gut, könnten SQL Injection mit bei sein.
Also machen wir was anderes: wir ändern den String nochmal ab:
Die zwei Parameter mit den Doppelpunkten sind jetzt im Statement drin und werden auch dadrin bleiben.
Wir müssen diese nurnoch beschreiben. Ist auch wieder, aufgrund der OOP, super einfach.
PHP-Quellcode
- $sql = "INSERT INTO user (username, password) VALUES (:username, :password)";
- $statement = $database->prepare($sql);
- $statement->bindValue(":username", $_GET['username']); // ich nutze GET, damit ich das im Browser testen kann. Darf gerne für POST umgeschrieben werden.
- $statement->bindValue(":password", $_GET['password']); // siehe oben
- $statement->execute(); // fertig
Der User ist eingetragen.
Wir haben nun aber das Problem, dass wir keine Überprüfung haben, ob Einträge bereits existieren.
Das ist aber auch ganz einfach eingerichtet
PHP-Quellcode
Gut das hätten wir.
Das Login Skript kommt in den nächsten Posts.
Genauso wie der VB Code.
Außerdem werde ich noch ein Skript zusammenbasteln, womit sich das ganz einfach per URL Parameter steuern lässt.
(db.php?command=login|register|setup).
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „AliveDevil“ ()