PHP Fehler?

3 Antworten

Hi Increase721,

auch wenn schon eine Lösung schon gefunden wurde. Möchte gerne auch eine Antwort geben. Wie die Fehlermeldung wieder gibt, gibt es den Eintrag password nicht in der Datenbankabfrage. Hier solltest du nachprüfen wie das Feld in deiner Datenbanktabelle tatsächlich heißt oder vorhanden ist.

Was kann man verbessern:

Zwar gehört das nicht zu deiner Frage, aber ich möchte gerne ein paar Tipps geben um ein besseres Login-Formular zu erstellen. Meine Empfehlung ist es die Aufgaben zu teilen und diese in deinem Beispiel zwei PHP-Dateien zu verwenden. Die Eine Datei kann dann das Loginformular enthalten und vorab überprüfen ob man schon angemeldet ist. Und die zweite PHP-Datei die dazu dient die Daten zu prüfen, gegenfalls Anmeldeprozess durchführen und einen Request an den User zu senden.

Damit die Seite nicht neu geladen werden muss, solltest du z.B. Ajax verwenden. Damit kannst du mithilfe von JavaScript die Zugangsdaten an deine zweite PHP senden, ohne das die Seite neu geladen werden muss. Dort werden die Daten geprüft und senden dann wiederum ein Ergebnis an dein JavaScript. Diese kann dann unterschiedlich reagieren und Fehler ausgeben oder die Seite weiterleiten.

Natürlich kann man das im fortgeschritten Modus dann alles mit Router und Controller und Modulen machen. Abe das was da oben steht, wäre ein sehr guter Anfang.

Woher ich das weiß:Berufserfahrung – Ich bin gelernter Mediengestalter Digital und Print(IHK)

Ich bin nicht sicher (weil ich einen anderen Programmierstil verfolge).

Zuerst hätte ich die Variable Passwort definiert und einen Wert zugewiesen.

ZB. so:

var $password = "";

In einem zweiten Schritt hätte ich die Übergabe geprüft und den Inhalt der Variablen zugewiesen, mit der ich arbeite.

if (isset($_POST['password']))
{
$password = $_POST['password'];
}

Suiram1  11.02.2025, 20:50

Der fehler spricht von einem array key und nicht einer Variable. Im Komentar der Antwort von @Sifadias hat der Ersteller, außerdem schon geschrieben, dass das Problem gelösst ist.

stealthuser  11.02.2025, 21:02
@Suiram1

Ist ja auch logisch, $_POST() ist ja auch ein Array und 'password' ist ein Schlüssel auf das er versucht zuzugreifen ob wohl er noch garnicht generiert wurde.

Der Schlüssel 'password' existiert erst nach dem die Formulardaten per POST an das PHP-Script gesendet wurden.

Deshalb sollte man immer erst prüfen ob ein Schlüssel existiert bevor man ihn verwendet.

Das Script weist auch noch eine Sicherheitslücke auf : Die Kennwörter werden im Klartext verarbeitet und nicht als HASH - sowas gehört sich nicht.

Suiram1  11.02.2025, 21:04
@stealthuser

1. Es wird überprüft ob der Schlüssel vorhanden ist.

2. Das Sicherheitsproblem kannst du gerne den Ersteller mitteilen

Vermutlich gibt es die Spalte "password" nicht in deiner "accounts" Table.


Increase721 
Beitragsersteller
 11.02.2025, 20:39

War alles klein geschrieben aber in der datenbank all Groß... Danke für deine Hilfe. Nächste mal achte ich besser drauf :O