Problem mit login und registration? Php nicht meine stärke?

...komplette Frage anzeigen

2 Antworten

  1. Wie gesagt, kein sha1 nutzen, sondern password_hash()
  2. Statt diesem fetch_assoc-Kram einfach so die Anzahl der Zeilen herausfinden:
$stmt->execute();$control = $stmt->rowCount();

3. Vor H20 und Hydrogen ein Doppelpunkt einfügen und am besten auch klein schreiben sowie den Datentyp angeben, siehe auch: http://php.net/manual/de/pdostatement.bindparam.php

4. Du musst dafür sorgen, dass der nachfolgende PHP-Code nicht ausgeführt wird, wenn z.B. page nicht gesetzt ist (bei GET). Also mit if/else arbeiten.

Erstmal das korrigieren, dann können wir weitersehen. Treten eigentlich irgendwelche Fehler auf (siehe Errorlog)? Diese solltest du auch posten, damit man dir besser helfen kann.

Wie meinst du das bei 4.? Vllt brauch ich noch hilfe mit 1.

0
@Marko6633hi

Bei 1. muss ich da das mit verify password in registrieren oder in login (/beides) einfügen?

0
@tavkomann

Beim registrieren kommt immer fehler im system ... . Und beim login wird das im login gelöscht aber es passiert nichts es zeigt immer noch dasselbe an also denselben login code mit Username : und Passwort :

0
@tavkomann

Jz sieht es so aus das nach dem login die login felder weggehen aber dannach steht nicht ob es geklappt hat oder nicht :/

0
@Marko6633hi

Also wenn mann die seite nach dem login reloaded dann steht da Login fehlgeschlagen ....

0
@tavkomann

Oder andere Idee. Leg eine leere .ini-Datei an:

https://wiki.goneo.de/eigene_userini_cgi

Und schreibe folgenden Inhalt rein:

display_errors = on

Anschließend nutze folgende PHP-Datei. Schick mit dann einfach den Link wieder.

https://hastebin.com/iduseyuvoh.xml

Das sollte dafür sorgen, dass Fehler direkt auf dem Bildschirm angezeigt werden. Später musst du das wieder entfernen, sobald es funktioniert, aber für die Entwicklung ist das ganz praktisch.

0
@tavkomann

Nach dem login steht :

Fatal error: Call to undefined method PDOStatement::fetch_object() in /web/1/000/103/125/410636/htdocs/CloudNet-Website/login.php on line 23

Wenn du es dir nochmal anschauen willst auf www.testyours.de/CloudNet-Website

Richtige einfachmal so erstellte login daten :

Username:lollol

Passwort:lollol

0
@tavkomann

Fatal error: Class 'Passwort' not found in /web/1/000/103/125/410636/htdocs/CloudNet-Website/login.php on line 23

0
@Marko6633hi

Ja, hab ich auch gerade gesehen, aber warte noch kurz, ich muss noch etwas ausbessern.

0
@tavkomann

So. Das müsste erstmal fehlerfrei sein:

https://hastebin.com/petocehiru.xml

Jetzt musst du nur noch auf den anderen Seiten jeweils überprüfen, ob die Session gesetzt ist, und dann funktioniert dein Login schonmal.

Wirklich sicher ist es allerdings noch nicht, weil sich in den letzten Jahren einiges an neuen Angriffsmöglichkeiten entwickelt hat. Falls du also einen wirklich sicheren Login benötigst, solltest du dir mal das hier ansehen und dein Script erweitern:

http://de.wikihow.com/Ein-sicheres-Login-Skript-mit-PHP-und-MySQL-erstellen

Das soll aber nur als Erweiterung dienen. Denn dort wird z.B. Sha512 als Hashing-Algorithmus verwendet, was unsicher ist. Du musst also sozusagen einen Mix aus dem machen, was du jetzt hast, und dem, was dort steht.

Wenn da jetzt aber nicht so wichtige Daten geschützt werden sollen, kannst du es auch so lassen, wie es jetzt ist.

0
@tavkomann

Ok danke irgendwelche wichtigen daten werden da eigentlich nicht geschützt und ich kann ja den sichereren login nebenbei programmieren und den dann wenn er fertig ist einbinden

0

Achso, wenn du fertig mit der Entwicklung bist, solltest du auf jeden Fall das Error Reporting wieder ausschalten. Entferne also wieder diese eine Zeile in der .ini-Datei und in PHP die beiden Zeilen mit ini-set sowie die Zeile mit error-reporting.

0

Ach du je mine was ist denn mit dem code passiert???

Neben dem reichlich grossen optimierungsbedarf solltest du bei pdo im prepare statement schon die ":" setzen. Setzt du php 7 ein? Dann wird mysql_* nicht funktionieren. Schalte das error reporting in php vollständig ein auf ausschließlich E_ALL und du wirst evtl noch mehr erfahren. Habe es nur grob überflogen

Was möchtest Du wissen?