Fehlermeldung bei Login erstellen// HTML & PHP?
Hallo,
Ich verstehe nicht ganz, wie ivh ed hinbekommen kann. Ich möchte, dass wenn mein Login fehlschlägt also ein falscher Benutzername oder so eingegeben wird, dass dann dieses skript:
<div class="alert alert-danger">
<strong>Fehler!</strong> Ein Falscher Benutzername oder ein falsches passiert wurde eingeben.
</div>
Aber ivh verstehe nicht, wir ich es bei submit button einbauen soll.
MfG
LuGaming
3 Antworten
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>
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>
Okay danke! Kann ich die Fehlermeldung im header anzeigen?!
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.
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
Schön, dass es geklappt hat! Sorry, ich möchte hier keine Freundschaftsanfragen mehr annehmen - ist nichts persönliches.
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?
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>
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?
Kannst du dann nicht in PHP einfach deinen html-code reinschreiben bzw es in dieses Format konvertieren?
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?
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.
Kannst du mir bitte einen fertigen Code Schnipsel geben, wo meine Fehlermeldung von eben integriert wird?!!?