Kuidas luua oma veebisaidile PHP sisselogimissüsteemi
Kas soovite integreerida sisselogimissüsteemi PHP-sse? Selles artiklis näitan teile, kuidas teha PHP-sse sisselogimise põhivoog. Loome sisselogimisvormi, kinnitame mandaadid ja suuname kasutaja konto lehele. Kasutaja väljalogimiseks lisan ka koodi. Lisaks kuvame veateateid, kui sisestate valed mandaadid.
Juhendaja huvides eeldan, et kasutate parooli salvestamiseks räsi ‘md5’. Kirjutaksin koodi, arvestades stringi md5 räsi. Võib-olla kasutate mõnda muud algoritmi. Sellisel juhul peate päringut vastavalt oma algoritmile muutma.
Sisselogimisvoo integreerimiseks vajame andmebaasi tabelit, mis salvestab kasutaja üksikasjad. Selle tabeli alusel kontrollime, kas kasutaja sisestas õiged mandaadid või mitte. Kui kasutaja mandaadid on õiged, peaks ainult neil olema juurdepääs turvatud lehtedele.
Minu puhul olen loonud kasutajate tabeli ja lisanud mõned näiv kirjed. Lisasin ka veeru „status", mida kasutatakse selleks, et teada saada, kas konto on aktiivne või mitte. Selles veerus on andmetüüp ENUM väärtustega 0 ja 1.
- 1: konto on aktiivne
- 0: konto pole aktiivne
Looge sisselogimisvorm
Alustamiseks loome sisselogimisvormi, kus kasutajad saavad sisestada oma mandaadi. Kasutan sisselogimisvormi loomiseks Bootstrapi raamistikku. Minu index.php
fail sisaldab allolevat koodi.
<!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>
Ülaltoodud kood kuvab sisselogimisvormi, nagu on näidatud alloleval ekraanipildil.
Lisasin muutuja $error_message
koodi, mis prindib sisselogimisvead.
PHP-kood kasutajate mandaatide kinnitamiseks
Olete valmis sisselogimisvormi ja andmebaasitabeliga. Järgmisena peame vormi esitamisel kirjutama PHP-koodi, mis kontrollib kasutaja mandaate andmebaasi kirjetega. Kui üksikasjad on õiged, logige kasutaja süsteemi sisse ja suunake myaccount.php
lehele.
Looge config.php
fail ja lisage andmebaasiühenduse jaoks kood.
<?php
$conn = new mysqli('DB_HOST', 'DB_USER', 'DB_PASSWORD', 'DB_NAME');
if ($conn->connect_errno) {
echo "Error: ". $conn->connect_error;
}
?>
Asendage kohatäited tegelike väärtustega.
Nüüd index.php
lisage faili enne HTML-märgendi algust allpool olev kood.
<?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.';
}
}
?>
Siin koodis kasutasin parooli kontrollides PHP-meetodit md5, eeldades, et salvestasite parooli selle algoritmi abil.
Väljalogimiskood
Järgmine osa on kasutaja väljalogimiseks koodi lisamine. Selleks looge myaccount.php
fail. Sellele lehele pääsevad juurde veel üks asi, mis on vajalik ainult sisseloginud kasutajate käsitsemiseks.
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 seansi abil selgitame välja, kas anda sellele lehele juurdepääs või mitte. Kui seanssi pole määratud, suunake kasutaja sisselogimislehele.
Loodan, et mõistate PHP-s sisselogimissüsteemi loomise põhitõdesid. Palun jagage oma mõtteid ja ettepanekuid allpool olevas kommentaaride jaotises.