Denna guide är en fortsättning från föregående och bygger vidare på vårt login-system. I detta fall kommer vi att göra en loginruta som använder sig av de registrerade användare som skapats i föregående moment. Du kan inte göra detta moment och få det att fungera utan föregående.
Med det sagt, låt oss börja. Login-systemet här bygger på vår config.php som vi skapade i föregående moment, samt funktionen session_start(); som antingen startar eller återupptar ett sessions-ID fångat via GET eller POST.
Skapa ett nytt dokument som du kallar för login.php
<?php
// Starta eller återuppta sessionen
session_start();
// Är användaren redan inloggad? I så fall, rikta om till welcome.php
if(isset($_SESSION["loggedin"]) && $_SESSION["loggedin"] === true){
header("location: welcome.php");
exit;
}
// Kräv vår databaskoppling vi skapade i föregående moment
require_once "config.php";
// Definiera variabler och ge dem tomma värden
$Anvandarnamn = $losenord = "";
$Anvandarnamn_fel = $losenord_fel = "";
// Metoden vi hanterar formuläret med (POST)
if($_SERVER["REQUEST_METHOD"] == "POST"){
// Undersök om Användarnamn är tomt...
if(empty(trim($_POST["Anvandarnamn"]))){
$Anvandarnamn_fel = "Vänligen fyll i användarnamn.";
} else{
$Anvandarnamn = trim($_POST["Anvandarnamn"]);
}
// Undersök om lösenordet är tomt
if(empty(trim($_POST["losenord"]))){
$losenord_fel = "Vänligen fyll i lösenordet.";
} else{
$losenord = trim($_POST["losenord"]);
}
// Kontrollera uppgifterna
if(empty($anvandarnamn_fel) && empty($losenord_fel)){
// Förbered att välja rätt användare från vår databas
$sql = "SELECT id, Anvandarnamn, losenord FROM anvandare WHERE anvandare = ?";
if($stmt = mysqli_prepare($link, $sql)){
// Koppla variabler i mysqli-påståendet som parametrar
mysqli_stmt_bind_param($stmt, "s", $param_Anvandarnamn);
// Ställ in parametrarna
$param_Anvandarnamn = $Anvandarnamn;
// Försök att köra påståendet
if(mysqli_stmt_execute($stmt)){
// Lagra resultatet
mysqli_stmt_store_result($stmt);
// Undersök om användaren finns i databasen
if(mysqli_stmt_num_rows($stmt) == 1){
// Koppla resultatet i variablerna
mysqli_stmt_bind_result($stmt, $id, $Anvandarnamn, $hashed_password);
if(mysqli_stmt_fetch($stmt)){
if(password_verify($losenord, $hashed_password)){
// Lösenordet är korrekt, starta session
session_start();
// Lagra data i sessionens variabler
$_SESSION["loggedin"] = true;
$_SESSION["id"] = $id;
$_SESSION["Anvandarnamn"] = $Anvandarnamn;
// Vidarebefordra till välkomstsidan
header("location: welcome.php");
} else{
// Annars, Visa fel vid fel lösenord
$losenord_fel= "Lösenordet du skrev in var felaktigt.";
}
}
} else{
// Visa felmeddelande om användaren ej existerar.
$Anvandarnamn_fel = "Inget konto med det namnet finns.";
}
} else{
echo "Ojsan! Något gick fel. Försök igen!";
}
}
// Avsluta påståendet
mysqli_stmt_close($stmt);
}
// Stäng kopplingen till databasen
mysqli_close($link);
}
?>
Precis som i föregående dokument vi skapade så behöver vi ett formulär för att ovanstående ska fungera. Vi skapar formuläret i samma fil (login.php) under koden ovanför.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Inloggning</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">
<style type="text/css">
body{ font: 14px sans-serif; }
.wrapper{ width: 350px; padding: 20px; }
</style>
</head>
<body>
<div class="wrapper">
<h2>Logga in</h2>
<p>Vänligen fyll i dina användaruppgifter.</p>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="form-group <?php echo (!empty($Anvandarnamn_fel)) ? 'has-error' : ''; ?>">
<label>Användarnamn</label>
<input type="text" name="Anvandarnamn" class="form-control" value="<?php echo $Anvandarnamn; ?>">
<span class="help-block"><?php echo $Anvandarnamn_fel; ?></span>
</div>
<div class="form-group <?php echo (!empty($losenord_fel)) ? 'has-error' : ''; ?>">
<label>Lösenord</label>
<input type="password" name="losenord" class="form-control">
<span class="help-block"><?php echo $losenord_fel; ?></span>
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" value="Logga in">
</div>
<p>Har du inte ett konto? <a href="register.php">Registrera dig nu</a>.</p>
</form>
</div>
</body>
</html>
Senaste kommentarer