PHP/MySQL Login / Adminpanel

05/24/2018 17:44 sexualising#1
Hallo!

Ich habe folgendes vor.
Ich will eine Seite erstellen bei der man sich einloggen kann und ich über ein Adminpanel neue Accounts hinzufügen kann. Außerdem soll man nach dem Login einige Daten aus der Datenbank auslesen können.

Ich habe eine Datenbank 'test' mit der Tabelle 'users'.
In der Tabelle hab ich folgende Elemente.
id | username | password | kontostand

Von hier habe ich das Loginscript.
[Only registered and activated users can see links. Click Here To Register...]

Ich kann mich damit einloggen mit dem 'username' und dem 'password', aber ich schaffe es irgendwie nicht den Kontostand auszugeben.

Hoffe ihr könnt mir da etwas helfen. :)
05/24/2018 17:49 Syc#2
Wie sieht dein Ansatz aus?
05/24/2018 18:17 sexualising#3
Quote:
Originally Posted by Syc View Post
Wie sieht dein Ansatz aus?
Naja eben das von der Seite.
Kann mich per "login.php" einloggen mit den Daten aus der Datenbank und auf der "welcome.php" kann ich dann den Namen der in der Session gespeichert wird, ausgeben. Ich weiß aber nicht genau wie ich den Kontostand von dem Konto auslese.
05/24/2018 20:16 False#4
Quote:
Originally Posted by sexualising View Post
Naja eben das von der Seite.
Kann mich per "login.php" einloggen mit den Daten aus der Datenbank und auf der "welcome.php" kann ich dann den Namen der in der Session gespeichert wird, ausgeben. Ich weiß aber nicht genau wie ich den Kontostand von dem Konto auslese.
Wie ist dein Ansatz ?
Für dich gerne etwas genauer: Wie ist dein Ansatz den Kontostand vom Konto auszulesen ?
05/24/2018 23:20 sexualising#5
Quote:
Originally Posted by .ƒaℓsє. View Post
Wie ist dein Ansatz ?
Für dich gerne etwas genauer: Wie ist dein Ansatz den Kontostand vom Konto auszulesen ?

Also will auf der "welcome.php" den Usernamen ausgeben und den Kontostand als ganz normalen Text.
Den Namen der in der Session gespeichert ist kann ich ausgeben, aber wie mach ich das mit dem Kontostand?
05/25/2018 00:35 False#6
Quote:
Originally Posted by sexualising View Post
Also will auf der "welcome.php" den Usernamen ausgeben und den Kontostand als ganz normalen Text.
Den Namen der in der Session gespeichert ist kann ich ausgeben, aber wie mach ich das mit dem Kontostand?
Versuch Nummer 3: Was hast du den bisher schon probiert ?
Oder hast du noch gar nichts probiert und willst nur eine Lösung !?
05/25/2018 00:47 iMostLiked#7
Quote:
Originally Posted by sexualising View Post
Also will auf der "welcome.php" den Usernamen ausgeben und den Kontostand als ganz normalen Text.
Den Namen der in der Session gespeichert ist kann ich ausgeben, aber wie mach ich das mit dem Kontostand?
Als SQL Statement machst du folgendes:
Code:
SELECT `kontostand` FROM `users` WHERE `username` = $_SESSION['username']
Und dann ganz normal echo() nutzen, um den Wert auszugeben.
05/25/2018 13:41 sexualising#8
Quote:
Originally Posted by iMostLiked View Post
Als SQL Statement machst du folgendes:
Code:
SELECT `kontostand` FROM `users` WHERE `username` = $_SESSION['username']
Und dann ganz normal echo() nutzen, um den Wert auszugeben.
Hab ich mir gestern auch schon überlegt, leider nicht mehr dazu gekommen.
Probier ich mal, danke.
05/25/2018 18:48 False#9
Quote:
Originally Posted by iMostLiked View Post
Als SQL Statement machst du folgendes:
Code:
SELECT `kontostand` FROM `users` WHERE `username` = $_SESSION['username']
Und dann ganz normal echo() nutzen, um den Wert auszugeben.
Quote:
Originally Posted by sexualising View Post
Hab ich mir gestern auch schon überlegt, leider nicht mehr dazu gekommen.
Probier ich mal, danke.
Ob das so eine gute Idee ist user input direkt in eine Query zu schreiben ?
Stichwort escaping oder noch besser PDO -> Prepared statement.
05/25/2018 19:15 iMostLiked#10
Quote:
Originally Posted by .ƒaℓsє. View Post
Ob das so eine gute Idee ist user input direkt in eine Query zu schreiben ?
Stichwort escaping oder noch besser PDO -> Prepared statement.
User Input?
Der Wert kommt aus der Session. Das wird keine Probleme verursachen, da dort kein Wert reinkommt, der vorher nicht überprüft wurde. Aber ja, im Grunde genommen hast du wohl recht. War auch eher als Denkansatz gedacht.
05/25/2018 19:47 False#11
Quote:
Originally Posted by iMostLiked View Post
User Input?
Der Wert kommt aus der Session. Das wird keine Probleme verursachen, da dort kein Wert reinkommt, der vorher nicht überprüft wurde. Aber ja, im Grunde genommen hast du wohl recht. War auch eher als Denkansatz gedacht.
Nur weil er aus der Session kommt heißt es ja nicht gleich das es nie von einem User eingegeben wurde :D
05/25/2018 22:36 iMostLiked#12
Quote:
Originally Posted by .ƒaℓsє. View Post
Nur weil er aus der Session kommt heißt es ja nicht gleich das es nie von einem User eingegeben wurde :D
Der Wert wird beim Login mit der Datenbank validiert, also wird da nichts drin sein, was Sicherheitsprobleme verursachen könnte, da sonst der Login fehlschlägt. Also ja, kommt zwar vom User, ist aber definitiv ungefährlich.
05/26/2018 09:47 Serraniel#13
Kein Problem, nehme ich einfach SQL Injections im username :kappa:

Man sollte eigentlich immer mit prepared Statements arbeiten finde ich, wenn es um produktive Tools geht.
05/26/2018 09:58 Mad0ck#14
Ich kann dir später wenn ich zuhause bin evt nen bisschen weiterhelfen @TE , mehr als bei anderne wird aber auch von mir nicht kommen denke ich :D

Aber was anderers. Kommt später mehr dazu als nur der "Kontostand", denke da grad an DB-Normalisierung.
05/28/2018 07:10 majorkratze#15
Auf keinen Fall solltest du so deinen Query schreiben.

Zunächst einmal solltest du deinen Username mit mysqli_real_escape_string speichern.
Also so:

PHP Code:
$username mysqli_real_escape_string($conn$_SESSION['username']); 
Danach solltest du einen parametrierten SQL Befehl absetzen. Alles andere ist anfällig für Injections und stellt ein erhöhtes Sicherheitsrisiko dar.

PHP Code:
$query sprintf("SELECT `kontostand` FROM `users` WHERE `username` = '%s' "$username);

if (!
mysqli_query($conn$query)) {
  die(
'Error: ' mysqli_error($conn));