Voordat er ingelogd kan worden moet een gebruiker zich natuurlijk kunnen registreren. Hieronder de code voor een complete registratie van een gebruiker. De gegevens worden opgeslagen in een SQL-tabel.
<?php
//====================================== SESSIE CONTROLE
//Als een gebruiker al in een sessie zit dan is hij al geregistreerd.
session_start();
if(isset($_SESSION['id'])) {
header("location: manage.php");
exit;
}
//====================================== VARIABELEN
//Deze variabele wordt gebruikt om meldingen op het scherm te tonen
//! kan worden veranderd door register_user.php
if (!isset($_SESSION['register_message']))
{
$_SESSION['register_message'] = "";
}
?>
<!DOCTYPE html>
<html lang="nl">
<head>
<meta charset="UTF-8">
<title>Registreren</title>
<link rel="stylesheet" type="text/css" href="css/w3.css" />
</head>
<body class="w3-content" style="max-width:600px">
<div class="w3-container w3-center">
<h2 class="w3-blue w3-center w3-margin-top">Registeren</h2>
<?php echo $_SESSION['register_message'] ?>
<form class="w3-panel w3-card" method="post" action="register_user.php">
<input class="w3-input" type="text" class="form-control" name="name" placeholder="Naam">
<input class="w3-input" type="email" class="form-control" name="email" placeholder="Email">
<input class="w3-input" type="password" class="form-control" name="password" placeholder="Wachtwoord">
<input class="w3-input" type="password" class="form-control" name="password_again" placeholder="Wachtwoord nogmaals">
<br>
<button type="submit" class="w3-button w3-black w3-round-medium">Registreer</button>
</form>
</div>
</body>
</html>
<?php
//======================================SESSIE START
session_start();
//======================================DB CONNECTIE
include("db_connection.php");
//======================================VARIABELEN
$name = trim(mysqli_real_escape_string($con, $_POST['name']));
$email = trim(mysqli_real_escape_string($con, $_POST['email']));
$password = trim(mysqli_real_escape_string($con, $_POST['password']));
$password_again = trim(mysqli_real_escape_string($con, $_POST['password_again']));
$password_hashed = "";
//var_dump($name);var_dump($email);var_dump($$password);var_dump($password_again);
//====================================== CONTROLE INVULVELDEN
//Als er ook maar een veld leeg is, foutmelding
if (empty($email) or empty($name) or empty($password) or empty($password_again))
{
$_SESSION['register_message'] = "<div class='w3-panel w3-red'>Voer aub alle velden in.</div>";
header("location: register.php");
exit;
}
//Komen de wachtwoorden overeen?
if (!($password === $password_again))
{
$_SESSION['register_message'] = "<div class='w3-panel w3-red'>Wachtwoorden komen niet overeen.</div>";
header("location: register.php");
exit;
}
//====================================== CONTROLE OF EMAIL NIET AL IN GEBRUIK IS
$query = "SELECT * FROM users WHERE users_email = '$email'";
if (!$result = mysqli_query($con, $query))
{
exit(mysqli_error($con));
}
if (!mysqli_num_rows($result) == 0)
{
$_SESSION['register_message'] = "<div class='w3-panel w3-red'>Email is al in gebruik.</div>";
header("location: register.php");
exit;
}
//====================================== REGISTREER GEBRUIKER
$password_hashed = password_hash($password, PASSWORD_DEFAULT);
$query = "
INSERT INTO users
(
users_name,
users_email,
users_password
)
VALUES
(
'$name',
'$email',
'$password_hashed'
)
";
if(!mysqli_query($con, $query))
{
exit(mysqli_error($con));
}
else
mysqli_close();
{
$_SESSION['register_message'] =
"
<div class='w3-panel w3-red'>Registreren gelukt, u kunt nu inloggen.<br>
<a href='index.php' class='w3-button w3-black w3-round-medium'>Login</a>
</div>
";
header("location: register.php");
exit;
}
?>