php code lösung fehler?

... komplette Frage anzeigen

5 Antworten

Der Code ist so sehr unübersichtlich, besser bei einem "nopaste" Anbieter (z.B. hastebin.com) posten, dann lässt der sich viel besser lesen.

Was mir aber auffällt:

Nach dem ersten "mysql_query()" fehlt ein ";".

Dafür ist hier eins, das da nicht hin gehört:

if ($dbbenutzer==benutzer AND $dbpasswort==passwort);

Später fehlt noch mehrfach wieder ein Semikolon am Ende einer Zeile.

Außerdem fehlen diverse geschwungene Klammern (bei den "else").

while ($row = mysql_fetch_assoc($query)) {...

Du fragst nur einen Datensatz ab, also ist die while Schleife unnötig (wird funktionieren, aber eben unnötiger Code, einfach $num nicht auf !=0 sondern ==1 prüfen, denn das soll ja ein Login darstellen wie es aussieht und da sollte es ja sowieso jede Benutzername / Passwort Kombination nur genau 1 mal geben.


Sonstiges:

- Allgemein sollte man mysql_* nicht mehr benutzen, ist aktuell schon veraltet und wird in PHP ab Version 7 gar nicht mehr unterstützt.

- Die DB Verbindung würde ich außerhalb der "if" Bedingung aufbauen, meist braucht man die ja nicht nur genau da (bzw ggf direkt in einer includeten config oder so, dann muss man das nicht in jeder Datei separat machen).

- "SELECT * " sollte man nicht benutzen, immer genau die Felder abfragen, die man benötigt (http://php-de.github.io/jumpto/code-smells/#select-all).

Antwort bewerten Vielen Dank für Deine Bewertung

Vor $num fehlt ein Semikolon ;

Antwort bewerten Vielen Dank für Deine Bewertung

Her, bitte schreib den code in ein Code-Feld. Diese Eckigen HTML-Tags oben machn dann sowas draus:

ich bin gut zu lesen
Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von dannyotti
02.06.2016, 09:31

Was ich noch rauslesen kann:

Überprüfung ob eine postübergabe statt finde:
if(isset($_POST["user"])){
code
}

dann kommt noch, dass du keine Prepared Statements
verwendest. Dadurch ist dein Skript nicht Injetktionssicher.
wenn ich auf der Seite wäre mit ein bissel erfahrung könnte
ich böse Sachen mit deiner DB machen.
0

Es fehlt ein Semikolon!

... FROM Accounts WHERE Username=$benutzer") 
$num = mysql_num_rows($query);

Hinter der Klammer bzw eben vor deinem $num.

Antwort bewerten Vielen Dank für Deine Bewertung

mysql_query("SELECT * FROM Accounts WHERE Username=$benutzer");

Symikolon vergessen.... ;)

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?