1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| <?php
require_once 'inc/functions.php';
session_start();
if (!empty($_POST)) {
$_SESSION['flash']['danger'] = '';
require_once 'inc/db.php';
if (empty($_POST['username']) || !preg_match('/^[a-zA-Z0-9_]+$/', $_POST['username'])) {
$_SESSION['flash']['danger'] .= "Votre pseudo n'est pas valide (alphanumérique)";
} else {
$req = $pdo->prepare('SELECT idmbr FROM users WHERE username = ?');
$req->execute([$_POST['username']]);
$user = $req->fetch();
if ($user) {
$_SESSION['flash']['danger'] .= 'Ce pseudo est déjà pris';
}
}
if (empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$_SESSION['flash']['danger'] .= "Votre email n'est pas valide";
} else {
$req = $pdo->prepare('SELECT idmbr FROM users WHERE email = ?');
$req->execute([$_POST['email']]);
$user = $req->fetch();
if ($user) {
$_SESSION['flash']['danger'] .= 'Cet email est déjà utilisé pour un autre compte';
}
}
if (empty($_POST['password']) || $_POST['password'] != $_POST['password_confirm']) {
$_SESSION['flash']['danger'] .= "Vous devez rentrer un mot de passe valide";
}
if (empty($_SESSION['flash'])) {
/* Création du compte */
$req = $pdo->prepare("INSERT INTO users SET username = ?, password = ?, email = ?, creation_account = NOW(), status = 0");
$password = password_hash($_POST['password'], PASSWORD_BCRYPT);
$req->execute([$_POST['username'], $password, $_POST['email']]);
$user_id = $pdo->lastInsertId();
/* Création du token et envoi du mail de validation */
$req = $pdo->prepare("INSERT INTO confirm_account SET idmbr = ?, confirm_token = ?");
$token = str_random(60);
$req->execute([$user_id, $token]);
mail($_POST['email'], 'Confirmation de votre compte', "Afin de valider votre compte merci de cliquer sur ce lien\n\nhttp://site5/confirm.php?idmbr=$user_id&token=$token");
$_SESSION['flash']['success'] = 'Un email de confirmation vous a été envoyé pour valider votre compte';
header('Location: login.php');
exit();
}
}
require 'inc/header.php';
require 'view/register.php';
require 'inc/footer.php'; |
Partager