Hur man skapar ett PHP-inloggningssystem för din webbplats
Vill du integrera ett inloggningssystem i PHP? I den här artikeln visar jag dig hur du gör ett grundläggande inloggningsflöde till PHP. Vi skapar ett inloggningsformulär, validerar referenserna och omdirigerar användaren på kontosidan. Jag skulle också lägga till en kod för att logga ut användaren. Dessutom visar vi felmeddelandena om fel autentiseringsuppgifter anges.
För handledningens skull antar jag att du använder ‘md5’ hash för att lagra lösenordet. Jag skulle skriva koden med tanke på md5-hash för en sträng. Du kanske använder en annan algoritm. I så fall måste du ändra frågan enligt din algoritm.
För att integrera inloggningsflödet behöver vi en databastabell som lagrar användardetaljerna. Mot denna tabell validerar vi om användaren angav rätt referenser eller inte. Om användaruppgifterna är korrekta bör de bara ha åtkomst till de säkra sidorna.
I mitt fall har jag skapat en "användartabell" och lagt till några dummy-poster. Jag lade också till en statuskolumn som kommer att användas för att ta reda på om ett konto är aktivt eller inte. Den här kolumnen har ENUM-datatyp med värdena 0 och 1.
- 1: Kontot är aktivt
- 0: Kontot är inte aktivt
Skapa ett inloggningsformulär
För att komma igång, låt oss skapa ett inloggningsformulär där användare kan ange sina referenser. Jag använder ett Bootstrap-ramverk för att skapa ett inloggningsformulär. Min index.php
fil innehåller nedanstående kod.
<!DOCTYPE html>
<html>
<head>
<title>Login Form</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-6">
<h3>Login Form</h3>
<?php if(!empty($error_message)) { ?>
<div class="alert alert-danger"><?php echo $error_message; ?></div>
<?php } ?>
<form method="post">
<div class="form-group">
<label for="exampleInputEmail1">Email address</label>
<input type="email" class="form-control" id="exampleInputEmail1" name="email" placeholder="Email" required />
</div>
<div class="form-group">
<label for="exampleInputPassword1">Password</label>
<input type="password" class="form-control" id="exampleInputPassword1" name="password" placeholder="Password" required />
</div>
<button type="submit" name="submit" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</body>
</html>
Ovanstående kod visar inloggningsformuläret som visas på skärmbilden nedan.
Jag har lagt till variabeln $error_message
i koden som skriver ut inloggningsfelen.
PHP-kod för att validera användaruppgifter
Du är redo med inloggningsformuläret och databastabellen. Därefter måste vi skriva in en PHP-kod som kontrollerar användarens referenser mot databasposterna. Om informationen stämmer loggar du in användaren i systemet och omdirigerar till myaccount.php
sidan.
Skapa en config.php
fil och lägg till en kod för databasanslutningen.
<?php
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
if ($conn->connect_errno) {
echo "Error: ". $conn->connect_error;
}
?>
Ersätt platshållarna med de faktiska värdena.
index.php
Lägg till nedanstående kod i filen före början av html-taggen.
<?php
session_start();
require_once('config.php');
//if user is logged in redirect to myaccount page
if (isset($_SESSION['id'])) {
header('Location: myaccount.php');
}
$error_message = '';
if (isset($_POST['submit'])) {
extract($_POST);
if (!empty($email) && !empty($password)) {
$sql = "SELECT id, status FROM users WHERE email = '".$conn->real_escape_string($email)."' AND password = '".md5($conn->real_escape_string($password))."'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
if($row['status']) {
$_SESSION['id'] = $row['id'];
header('Location: myaccount.php');
} else {
$error_message = 'Your account is not active yet.';
}
} else {
$error_message = 'Incorrect email or password.';
}
} else {
$error_message = 'Please enter email and password.';
}
}
?>
Här i koden, medan jag kontrollerade lösenordet, använde jag PHP-metoden md5 förutsatt att du lagrade lösenordet med hjälp av denna algoritm.
Logout-kod
Nästa del är att lägga till kod för att logga ut användaren. Skapa myaccount.php
fil för detta. Ytterligare en sak som behövs för att hantera som bara är inloggade användare bör komma åt den här sidan.
myaccount.php
<?php
session_start();
if (isset($_GET['action']) && ('logout' == $_GET['action'])) {
unset($_SESSION['id']);
}
if (isset($_SESSION['id'])) {
?>
<h3>Welcome User! <a href="?action=logout">Logout</a></h3>
<?php
} else { //redirect to login page
header('Location: index.php');
}
?>
Med hjälp av PHP-sessionen räknar vi ut om vi vill ge åtkomst till den här sidan eller inte. Om sessionen inte är inställd, omdirigerar du användaren till inloggningssidan.
Jag hoppas att du förstår grunderna i att bygga ett inloggningssystem i PHP. Dela dina tankar och förslag i kommentarsektionen nedan.
relaterade artiklar
- Användarregistrering och inloggningssystem i Laravel
- Google-inloggning i Laravel med Laravel Socialite
- Hur man skapar PHP-registreringssystem