Quote:
Originally Posted by Amanecer
Howdy Community!
Ich hab vor einem Monat angefangen ein bisschen PHP zu lernen und habe für mein erstes Projekt  Tutorial verwendet. Ich war überglücklich weil es total meiner Vorstellung entsprach!
Klick  um das Register Script herunterzuladen, vollständig angepasst um mit den 2015 Files zu funktionieren. Die Extension  PDO ist notwendig.
Das Archiv beinhaltet insgesamt 5 Dateien für die Verwendung mit Win und SQL Authentifizierung + jeweils ein Bootstrap Beispiel + Account Datenbank mit einer zusätzlichen Tabelle für die Anzahl der Item Shop Coins.
Sollten Probleme auftauchen lass mich bitte darüber wissen! Ich werde versuchen es so gut wie möglich zu verbessern.
|
Ich habe gerade mal drüber geschaut auf die schnelle und was mir so direkt ins Auge fällt ist die Prüfung
der Benutzereingaben.
Code:
1 if (isset($_POST['uid']) === true && isset($_POST['upw']) === true && isset($_POST['cupw']) === true) {
2 if (Database() === 0) {
3 $error = 'Database connect error!';
4 } elseif ($_POST['upw'] !== $_POST['cupw']) {
5 $error = 'Confirm Password does not match Password!';
6 } elseif (preg_match('/^$/', $_POST['uid']) === 1) {
7 $error = 'Username field required!';
8 } elseif (preg_match('/^$/', $_POST['upw']) === 1) {
9 $error = 'Password field required!';
10 } elseif (preg_match('/^[\s\S]{61,}$/', $_POST['uid']) === 1) {
11 $error = 'Username exceeds the max of 60 characters!';
12 } elseif (preg_match('/^[\s\S]{17,}$/', $_POST['upw']) === 1) {
13 $error = 'Password exceeds the max of 16 characters!';
14 } elseif (preg_match('/^[\x{20}-\x{7E}]+$/', $_POST['uid']) === 0) {
15 $error = 'Username contains forbidden characters!';
16 } elseif (preg_match('/^\x{20}/', $_POST['uid']) === 1) {
17 $error = 'Username may not start with a space!';
18 } elseif (preg_match('/\x{20}$/', $_POST['uid']) === 1) {
19 $error = 'Username may not end with a space!';
20 } elseif (preg_match('/^[\x{20}-\x{7E}]+$/', $_POST['upw']) === 0) {
21 $error = 'Password contains forbidden characters!';
22 } elseif (UIDUnique() === 0) {
23 $error = 'Username already in use!';
24 } else {
25 SetCoins();
26 $success = 'User has been created!';
27 }
28 }
Ich würde an deiner Stelle die function Database() am ende jedoch vor der Function UIDUnique() anordnen,
wenn nicht gar ganz entfernen dort aus performancetechnischen Gründen,
da eine Datenbankabfrage ja ansich nicht stattfinden muss wenn schon eine der anderen Bedingungen zutrifft.
Wenn überhaupt dann mach den Check schon beim aufruf der Seite damit der User sich sparen kann
überhaupt Daten einzugeben.
Warum du im allgemeinen so viele Sonderzeichen im Username zulässt kann ich natürlich nur erahnen
und ist vermutlich auch nicht so verkehrt was andere Zeichensätze angeht, lässt aber vielleicht auch zu,
dass Zeichen/Zeichensätze benutzt werden die evtl. vom Server/Client nicht verarbeitet werden könnten.
Muss nicht sein aber könnte, ist nur son Gedanke.
ansonsten siehts eigentlich ganz gut aus und für die Comm ist ja in erster Linie wichtig das es funktioniert.