lukas280
Goto Top

Wie verbinde ich mein PHP-Login mit SQL Datenbank von Strato

Moin zusammen,

ich habe mich neu registriert heute. Vielleicht kann mir jemand weiterhelfen..

Ich bin seit Tagen dabei ein Login Fenster für ein eigenes kleines Ticketcenter zu basteln.

Alles schön und gut...Klappt, und sieht auch gut aus. Jedoch habe ich Probleme beim Abruf des username und password aus der Datenbank (MySQL 8.0). Diese Datenbank läuft bei mir über den Anbieter "strato.de".

Entweder schlägt die Verbindung fehl oder ich bekomme den Fehler (HTTP ERROR 500 - interner Fehler)....Beziehungsweise leitet mich die login.php nach der Überprüfung auch gar nicht an die dashboard.php weiter, und bleibt stattdessen weiß.
Ich habe alles überprüft, die Daten zum Verbinden mit der DB stimmen auch. Habe auch gegoogelt, aber man findet nichts gescheites bzw. nichts, was ich nicht auch schon probiert habe.

Kann mir jemand mehr dazu sagen? Mir gehen die Ideen aus..

Vielen Dank im Voraus

Beste Grüße
Lukas

PS: Ich füge meine Codes mit an.

Login.html
<!DOCTYPE html>
<html lang="en">  
<head>
    <meta charset="UTF-8">  
    <meta name="viewport" content="width=device-width, initial-scale=1.0">  
    <title>Benutzeranmeldung</title>
    <link rel="stylesheet" href="css/login.css">  
</head>
<body>


        <form action="login.php" method="post">  

    <div class="login-container">  
        <div class="support-center">  
             <img src="***" alt="Support Center Logo" class="logo">  
        <h3>Support-Center</h3>
        </div>

            <label for="username">Benutzername:</label>  
            <input type="text" id="username" name="username" required>  

            <label for="password">Passwort:</label>  
            <input type="password" id="password" name="password" required>  

            <button type="submit">Anmelden</button>  
<p>Version ***</p>
<a href="passres.html">Passwort vergessen<a/> &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp &nbsp <a href="https://www.***.de">www.***.de</a>  
  
  </form>
    </div>
</body>
</html>

Login.php
<?php
session_start();

$servername = " ... ";  
$username = " ... ";  
$password = " ... ";  
$dbname = " ... ";  

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);  
}

if ($_SERVER["REQUEST_METHOD"] == "POST") {  
    $username = $_POST["username"];  
    $password = $_POST["password"];  

    // Überprüfe, ob der Benutzer existiert
    $stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = ?");  
    $stmt->bind_param("s", $username);  
    $stmt->execute();
    $stmt->bind_result($user_id, $user_username, $hashed_password);
    $stmt->fetch();
    $stmt->close();

    if ($user_id && password_verify($password, $hashed_password)) {
        // Anmeldung erfolgreich
        $_SESSION["user_id"] = $user_id;  
        header("LOCATION: dashboard.php");  
        exit(); // Stelle sicher, dass nach der Weiterleitung nichts mehr ausgeführt wird.
    } else {
        // Anmeldung fehlgeschlagen
        $_SESSION["login_error"] = "Invalid username or password";  
        header("LOCATION: login.php");  
        exit();
    }
}

$conn->close();
?>

Content-Key: 5205574697

Url: https://administrator.de/contentid/5205574697

Printed on: April 27, 2024 at 05:04 o'clock

Member: erikro
erikro Dec 18, 2023 at 17:51:33 (UTC)
Goto Top
Moin,

Zeile 20 lautet so:

$stmt = $conn->prepare("SELECT id, username, password FROM users WHERE username = ?");  

Sollte da nicht statt ? $username stehen?

Und das exit() in Zeile 31 bzw. 36 sorgt imho dafür, dass die Verbindung niemals geschlossen wird.

Liebe Grüße

Erik
Member: Avoton
Avoton Dec 18, 2023 at 18:38:15 (UTC)
Goto Top
Moin,

Da du explizit schreibst

Diese Datenbank läuft bei mir über den Anbieter "strato.de".

Läuft die Website denn auch da? Ich meine, die Strato Datenbankserver sind nur von deren Webservern aus erreichbar...

Gruß,
Avoton
Member: lukas280
lukas280 Dec 18, 2023 at 21:57:46 (UTC)
Goto Top
Moin,

dankeschön für die Antworten!

@erikro Ich habe das mal versucht, aber war leider erfolglos. :/

@Avoton Ja die Website läuft auch auf Strato Server.

Gruß Lukas
Member: StefanKittel
StefanKittel Dec 18, 2023 at 22:09:36 (UTC)
Goto Top
Hallo,

Fehler 500 und weiße Seiten sind ein Hinweis auf einen Syntax-Error.
Es sollte irgendwo ein Log-Verzeichnis egeben wo es eine error-Datei mit Fehlermeldung gibt.

Stefan
Member: lukas280
lukas280 Dec 18, 2023 at 22:39:02 (UTC)
Goto Top
Moin moin zusammen,

vielen Dank für eure Hilfe.

Ich habe nun die Lösung gefunde...Es war mein Verschulden..
Habe mir nun eine error.log ausgeben lassen, diese hat die ganze Zeit Invalid User and Password behauptet.

Naja nach einigem hin und her lag es nun am Passwort hashing, welches im Code hinterlegt war, aber die Passwörter in der Datenbank waren klartext...

Naja nun funktioniert. Mal sehen, wie es weitergeht!

Beste Grüße
Lukas
Member: michi1983
michi1983 Dec 19, 2023 at 06:38:39 (UTC)
Goto Top
Quote from @lukas280:
Naja nach einigem hin und her lag es nun am Passwort hashing, welches im Code hinterlegt war, aber die Passwörter in der Datenbank waren klartext...

Ouch