Warum kann dieser php code keine Verbindung zur Datenbank herstellen?

2 Antworten

Es scheint, dass das Formular-Element mit dem Namen 'Name' als "name" in PHP genutzt wird, aber im HTML als "Name" angegeben wurde. Ebenso ist es mit den anderen Formularelementen.

Überprüf mal, ob die Namen in PHP und HTML übereinstimmen. Außerdem stelle sicher, dass die Datenbank "paradies" mit einem richtigen Benutzernamen und Passwort auf "localhost" erreichbar ist.

Woher ich das weiß:Studium / Ausbildung

Also - das Formular wird richtig angezeigt, aber wenn du es abschickst, wird der Quellcode des PHP-Files angezeigt?

Falls das so ist, lässt du das entweder nicht über einen Webserver laufen (sondern einfach übers Filesystem, file://...), oder der Webserver weiß nichts mit .php-Dateien anzufangen, d.h. ist nicht für PHP konfiguriert oder erwartet eine andere Endung.

Du verwendest abgesehen davon im PHP-File die Label-Namen in Kleinbuchstaben, hast die im Formular aber mit großem ersten Buchstaben definiert.

Ich würde Sachen aus einem Formular niemals direkt in ein SQL-Statement schreiben, das ist ein sehr gutes Einfallstor für SQL Injection.

Vor dem Redirect solltest du die Datenbank-Verbindung zumachen; ist nicht unbedingt nötig, da PHP das auch automatisch machst, wäre aber sauberer.


regex9  19.12.2022, 06:32

Noch zwei weitere Fehler lassen sich im head-Element des Dokuments finden.

  1. Es fehlt ein title-Tag, welcher den Seitentitel beinhaltet.
  2. Ein h1-Element kennzeichnet eine Überschrift und gehört daher in den body.

Zur Datenspeicherung lässt sich noch ergänzen, dass ein Passwort keinesfalls im Klartext abgespeichert werden sollte. Ein Hash des Passworts, wie ihn die password_hash-Funktion generiert, wäre zu bevorzugen.

Um Kodierungsprobleme u.a. Injectionmöglichkeiten zu vermeiden, wäre ebenfalls zu empfehlen, an den jeweiligen Schnittstellen eine einheitlich solide Zeichenkodierung vorzugeben. Für die Datenbank könnte man utf8mb4 einstellen, nach Verbindungsaufbau die Kodierung für die Kommunikation setzen (mysqli_set_charset) und im head des HTML-Dokuments einen meta-Tag hinzufügen.

<meta charset="utf-8">
4
ShimaG  19.12.2022, 06:50
@regex9

Ich würde die Zugangsdaten zum SQL-Server in eine Include-Datei packen, die vom PHP-Skript eingelesen wird. Damit verhindert man, dass die Zugangsdaten nach außen gegeben werden, wenn - wie hier - mal der Web-Server nicht so ganz funktioniert und den Source des PHP-Skripts ausgibt.

1
ShimaG  19.12.2022, 06:55
@ShimaG

... und es gibt im HTML keinen opening Tag für <body>.

Empfehle bei HTML immer, den Validator des W3C zu bemühen.

1
Babelfish  19.12.2022, 09:07
@regex9

Ein weiterer Fehler sind die Namen der Input-Felder. Name, Mail und Passwort sind mit großem Anfangsbuchstaben geschrieben, im Code wird jedoch name, mail und passwort abgefragt. Arrays sind jedoch Case-Sensitive und somit würde wäre $_POST['name'] nicht gesetzt.

0
GeneralKewin 
Fragesteller
 19.12.2022, 10:09

Danke für die Hilfe, hab echt zu wenig geschlafen <3

0
GeneralKewin 
Fragesteller
 19.12.2022, 10:09

Danke auch dir für deine Tipps, werde ich umsetzten

0