Kuinka luoda PHP-kirjautumisjärjestelmä verkkosivustollesi
Etsitkö sisäänkirjautumisjärjestelmän integrointia PHP: hen? Tässä artikkelissa näytän sinulle, kuinka tehdä perus kirjautumisvirta PHP: hen. Luomme kirjautumislomakkeen, vahvistamme kirjautumistiedot ja ohjaamme käyttäjän tilisivulle. Lisään myös koodin kirjautua ulos käyttäjältä. Lisäksi näytämme virheilmoitukset, jos syötät väärät kirjautumistiedot.
Opetusohjelman vuoksi oletan, että käytät salasanan tallentamiseen md5-hashia. Kirjoitan koodin, kun otetaan huomioon merkkijonon md5-hash. Saatat käyttää toista algoritmia. Siinä tapauksessa sinun on vaihdettava kysely algoritmin mukaan.
Kirjautumisvirran integroimiseksi tarvitsemme tietokantataulukon, joka tallentaa käyttäjän tiedot. Tätä taulukkoa vastaan tarkistamme, onko käyttäjä syöttänyt oikeat tunnistetiedot vai ei. Jos käyttäjän tunnistetiedot ovat oikein, vain heillä on oltava pääsy suojatuille sivuille.
Minun tapauksessani olen luonut käyttäjien taulukon ja lisännyt joitain nuken merkintöjä. Lisäsin myös "status" -sarakkeen, jota käytetään selvittämään onko tili aktiivinen vai ei. Tässä sarakkeessa on ENUM-tietotyyppi arvoilla 0 ja 1.
- 1: Tili on aktiivinen
- 0: Tili ei ole aktiivinen
Luo kirjautumislomake
Aloitetaan luomalla kirjautumislomake, jossa käyttäjät voivat syöttää kirjautumistietonsa. Rakennan kirjautumislomaketta Bootstrap-kehyksen avulla. Minun index.php
tiedosto sisältää alla koodin.
<!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>
Yllä oleva koodi näyttää kirjautumislomakkeen alla olevan kuvakaappauksen mukaisesti.
Olen lisännyt muuttujan $error_message
koodiksi, joka tulostaa kirjautumisvirheet.
PHP-koodi käyttäjien tunnistetietojen tarkistamiseksi
Olet valmis kirjautumislomakkeen ja tietokantataulukon kanssa. Seuraavaksi, kun lähetämme lomakkeen, meidän on kirjoitettava PHP-koodi, joka tarkistaa käyttäjän kirjautumistiedot tietokantatietueisiin. Jos tiedot ovat oikein, kirjaudu käyttäjä järjestelmään ja ohjaa myaccount.php
sivulle.
Luo config.php
tiedosto ja lisää koodi tietokantayhteyttä varten.
<?php
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
if ($conn->connect_errno) {
echo "Error: ". $conn->connect_error;
}
?>
Korvaa paikkamerkit todellisilla arvoilla.
Lisää nyt index.php
tiedostoon ennen html-tunnisteen alkua alla oleva koodi.
<?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.';
}
}
?>
Tässä koodissa tarkistaessani salasanaa käytin PHP-menetelmää md5 olettaen, että olet tallentanut salasanan tällä algoritmilla.
Uloskirjautumiskoodi
Seuraava osa on koodin lisääminen käyttäjän kirjautumista varten. Tätä varten luo myaccount.php
tiedosto. Vielä yksi asia, jota tarvitaan vain kirjautuneiden käyttäjien käsittelyyn, tulisi käyttää tätä sivua.
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');
}
?>
PHP-istunnon avulla selvitämme, annetaanko pääsy tälle sivulle vai ei. Jos istuntoa ei ole asetettu, ohjaa käyttäjä kirjautumissivulle.
Toivon, että ymmärrät sisäänkirjautumisjärjestelmän rakentamisen perusteet PHP: ssä. Jaa ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.