Fehlermeldung bei Login erstellen// HTML & PHP?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

In deinem Code hast du doch bereits Container für Fehlermeldungen (<span class="help-block">). Die kannst du doch stylen wie du willst?

<div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
  <label>Benutzername</label>
  <input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
  <span class="help-block"><?php echo $username_err; ?></span>
</div>
<div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
  <label>Passwort</label>
  <input type="password" name="password" class="form-control">
  <span class="help-block"><?php echo $password_err; ?></span>
</div>
verreisterNutzer  09.01.2020, 21:16

Kannst du mir sen fertigen code Schnipsel schreiben

0
verreisterNutzer  09.01.2020, 21:32

Kannst du mir bitte einen fertigen Code Schnipsel geben, wo meine Fehlermeldung von eben integriert wird?!!?

0
Dory1  09.01.2020, 21:49
@verreisterNutzer

Habs nicht getestet, aber irgendwie so müsste es gehen. Du musst also das komplette <FORM> Element hiermit überschreiben:

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
    <div class="form-group">
      <label>Benutzername</label>
      <input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
     </div>
    <div class="form-group">
      <label>Passwort</label>
      <input type="password" name="password" class="form-control">
    </div>
    <?php if (!empty($username_err) || !empty($password_err)): ?>
    <div class="alert alert-danger">
      <strong>Fehler!</strong> Ein Falscher Benutzername oder ein falsches Passwort wurde eingeben.
    </div>
    <?php endif; ?>
    <div class="form-group">
        <input type="submit" class="btn btn-primary" value="Login">
    </div>
    <p>Du hast keinen Account? <a href="register.php">Dann registriere dich jetzt</a>!</p>
</form>
1
Dory1  09.01.2020, 21:58
@verreisterNutzer

Du kannst diesen Block hinschieben wo du willst:

<?php if (!empty($username_err) || !empty($password_err)): ?>
<div class="alert alert-danger">
  <strong>Fehler!</strong> Ein Falscher Benutzername oder ein falsches Passwort wurde eingeben.
</div>
<?php endif; ?>

Ich weiß nicht wo dein "Header" ist.

1
verreisterNutzer  09.01.2020, 22:37
@Dory1

Vielen Dank, ich werde dich, wenn es bald geht, als Hilfsreichte Antwort markieren. Falls du das End Ergebnis sehen möchtest schaue hier vorbei: http://Lugaming.bplaced.net/UCP/Login.php

Bei dem Register.php habe ivh das auch gemacht.

MfG LuGaming

PS: Nimm mal Freundschaftsanfrage an

1
Dory1  09.01.2020, 22:47
@verreisterNutzer

Schön, dass es geklappt hat! Sorry, ich möchte hier keine Freundschaftsanfragen mehr annehmen - ist nichts persönliches.

1
Hier ist das Login Skript (login.php)
<?php
// Initialize the session
session_start();


// Check if the user is already logged in, if yes then redirect him to welcome page
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    header("location: home.php");
    exit;
}


// Include config file
require_once "config.php";


// Define variables and initialize with empty values
$username = $password = "";
$username_err = $password_err = "";


// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){


    // Check if username is empty
    if(empty(trim($_POST["username"]))){
        $username_err = "Bitte gebe einen Benutzername ein!";
    } else{
        $username = trim($_POST["username"]);
    }


    // Check if password is empty
    if(empty(trim($_POST["password"]))){
        $password_err = "Bitte gebe ein Passwort ein!";
    } else{
        $password = trim($_POST["password"]);
    }


    // Validate credentials
    if(empty($username_err) && empty($password_err)){
        // Prepare a select statement
        $sql = "SELECT id, username, password FROM users WHERE username = ?";


        if($stmt = mysqli_prepare($link, $sql)){
            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "s", $param_username);


            // Set parameters
            $param_username = $username;


            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){
                // Store result
                mysqli_stmt_store_result($stmt);


                // Check if username exists, if yes then verify password
                if(mysqli_stmt_num_rows($stmt) == 1){
                    // Bind result variables
                    mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password);
                    if(mysqli_stmt_fetch($stmt)){
                        if(password_verify($password, $hashed_password)){
                            // Password is correct, so start a new session
                            session_start();


                            // Store data in session variables
                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["username"] = $username;


                            // Redirect user to welcome page
                            header("location: home.php");
                        } else{
                            // Display an error message if password is not valid
                            $password_err = "Das eingegebene Passwort ist falsch!";
                        }
                    }
                } else{
                    // Display an error message if username doesn't exist
                    $username_err = "Es gibt keinen Account mit diesem Benutzername!";
                }
            } else{
                echo "Etwas ist schiefgelaufen! Probiere es später erneut!";
            }
        }


        // Close statement
        mysqli_stmt_close($stmt);
    }


    // Close connection
    mysqli_close($link);
}
?>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Registration | UCP LuGaming</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
    <link rel="stylesheet" href="http://lugaming.bplaced.net/UCP/assets/css/error.css">
    <style type="text/css">
        body{ font: 14px sans-serif; }
        .wrapper{ width: 350px; padding: 20px; }
    </style>
</head>
<body>
  <center>
    <div class="wrapper">
        <h2>Login</h2>
        <p>Um dich einzuloggen musst du dieses Formular ausfüllen:</p>
        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
            <div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
                <label>Benutzername</label>
                <input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
                <span class="help-block"><?php echo $username_err; ?></span>
            </div>
            <div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
                <label>Passwort</label>
                <input type="password" name="password" class="form-control">
                <span class="help-block"><?php echo $password_err; ?></span>
            </div>
            <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Login">
            </div>
            <p>Du hast keinen Account? <a href="register.php">Dann registriere dich jetzt</a>!</p>
        </form>
    </div>
  </center>
</body>
</html>


Ich kenne mich nicht sonderlich mit PHP aus, aber wenn du einen Login machst, dann musst du doch auch irgendwo die Daten gespeichert haben oder? Wo hast du diese gespeichert und wie fragst du die ab?

verreisterNutzer  09.01.2020, 20:45

Hier ist das Login Skript:

<?php
// Initialize the session
session_start();


// Check if the user is already logged in, if yes then redirect him to welcome page
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
    header("location: home.php");
    exit;
}


// Include config file
require_once "config.php";


// Define variables and initialize with empty values
$username = $password = "";
$username_err = $password_err = "";


// Processing form data when form is submitted
if($_SERVER["REQUEST_METHOD"] == "POST"){


    // Check if username is empty
    if(empty(trim($_POST["username"]))){
        $username_err = "Bitte gebe einen Benutzername ein!";
    } else{
        $username = trim($_POST["username"]);
    }


    // Check if password is empty
    if(empty(trim($_POST["password"]))){
        $password_err = "Bitte gebe ein Passwort ein!";
    } else{
        $password = trim($_POST["password"]);
    }


    // Validate credentials
    if(empty($username_err) && empty($password_err)){
        // Prepare a select statement
        $sql = "SELECT id, username, password FROM users WHERE username = ?";


        if($stmt = mysqli_prepare($link, $sql)){
            // Bind variables to the prepared statement as parameters
            mysqli_stmt_bind_param($stmt, "s", $param_username);


            // Set parameters
            $param_username = $username;


            // Attempt to execute the prepared statement
            if(mysqli_stmt_execute($stmt)){
                // Store result
                mysqli_stmt_store_result($stmt);


                // Check if username exists, if yes then verify password
                if(mysqli_stmt_num_rows($stmt) == 1){
                    // Bind result variables
                    mysqli_stmt_bind_result($stmt, $id, $username, $hashed_password);
                    if(mysqli_stmt_fetch($stmt)){
                        if(password_verify($password, $hashed_password)){
                            // Password is correct, so start a new session
                            session_start();


                            // Store data in session variables
                            $_SESSION["loggedin"] = true;
                            $_SESSION["id"] = $id;
                            $_SESSION["username"] = $username;


                            // Redirect user to welcome page
                            header("location: home.php");
                        } else{
                            // Display an error message if password is not valid
                            $password_err = "Das eingegebene Passwort ist falsch!";
                        }
                    }
                } else{
                    // Display an error message if username doesn't exist
                    $username_err = "Es gibt keinen Account mit diesem Benutzername!";
                }
            } else{
                echo "Etwas ist schiefgelaufen! Probiere es später erneut!";
            }
        }


        // Close statement
        mysqli_stmt_close($stmt);
    }


    // Close connection
    mysqli_close($link);
}
?>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Registration | UCP LuGaming</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
    <link rel="stylesheet" href="http://lugaming.bplaced.net/UCP/assets/css/error.css">
    <style type="text/css">
        body{ font: 14px sans-serif; }
        .wrapper{ width: 350px; padding: 20px; }
    </style>
</head>
<body>
  <center>
    <div class="wrapper">
        <h2>Login</h2>
        <p>Um dich einzuloggen musst du dieses Formular ausfüllen:</p>
        <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
            <div class="form-group <?php echo (!empty($username_err)) ? 'has-error' : ''; ?>">
                <label>Benutzername</label>
                <input type="text" name="username" class="form-control" value="<?php echo $username; ?>">
                <span class="help-block"><?php echo $username_err; ?></span>
            </div>
            <div class="form-group <?php echo (!empty($password_err)) ? 'has-error' : ''; ?>">
                <label>Passwort</label>
                <input type="password" name="password" class="form-control">
                <span class="help-block"><?php echo $password_err; ?></span>
            </div>
            <div class="form-group">
                <input type="submit" class="btn btn-primary" value="Login">
            </div>
            <p>Du hast keinen Account? <a href="register.php">Dann registriere dich jetzt</a>!</p>
        </form>
    </div>
  </center>
</body>
</html>


0
skiddy  09.01.2020, 20:52
@verreisterNutzer

Solltest du aber nicht schon alleine mit diesem Code:

else{
                    // Display an error message if username doesn't exist
                    $username_err = "Es gibt keinen Account mit diesem Benutzername!";

eine ähnliche Meldung bekommen?

0
skiddy  09.01.2020, 20:55
@verreisterNutzer

Kannst du dann nicht in PHP einfach deinen html-code reinschreiben bzw es in dieses Format konvertieren?

0
skiddy  09.01.2020, 20:59
@verreisterNutzer

Schon mal versucht einfach deinen HTML-Code dort hin zu schreiben, wo deine eigentliche Fehlermeldung sein sollte? Also bei der else-Bedingung mit der Fehlerrückgabe?

0
skiddy  09.01.2020, 21:04
@verreisterNutzer

Hmm wie gesagt bin kein Experte. Es wäre natürlich sehr gut für dich wenn sich noch eine andere Person melden würde, die dir da besser helfen kann.

1