<?php
require_once 'config.php'; // On inclu la connexion à la bdd
// Si les variables existent et qu'elles ne sont pas vides
if(!empty($_POST['username']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['cpassword']))
{
// Patch XSS
$username = $_POST['username'];
$email = $_POST['email'];
$password = htmlspecialchars($_POST['password']);
$cpassword = htmlspecialchars($_POST['cpassword']);
// On vérifie si l'utilisateur existe
$check = $bdd->prepare('SELECT username, email, password FROM users WHERE email = ?');
$check->execute(array($email));
$data = $check->fetch();
$row = $check->rowCount();
// On vérifie si le pseudo existe
$check_psd = $bdd->prepare("SELECT username FROM users WHERE username= ?");
$check_psd->execute([$username]);
$check_username = $check_psd->fetch();
$email = strtolower($email); // on transforme toute les lettres majuscule en minuscule pour éviter que [email protected] et [email protected] soient deux compte différents ..
// Si la requete renvoie un 0 alors l'utilisateur n'existe pas
if($row == 0){
if($check_username == 0){
if(strlen($email) <= 100){ // On verifie que la longueur du mail <= 100
if(filter_var($email, FILTER_VALIDATE_EMAIL)){ // Si l'email est de la bonne forme
if($password === $cpassword){ // si les deux mdp saisis sont bon
// On hash le mot de passe avec Bcrypt, via un coût de 12
$cost = ['cost' => 12];
$password = password_hash($password, PASSWORD_BCRYPT, $cost);
// On stock l'adresse IP
$ip = $_SERVER['REMOTE_ADDR'];
// On insère dans la base de données
$insert = $bdd->prepare('INSERT INTO users(username, email, password, ip, token) VALUES(:username, :email, :password, :ip, :token)');
$insert->execute(array(
'username' => $username,
'email' => $email,
'password' => $password,
'ip' => $ip,
'token' => bin2hex(openssl_random_pseudo_bytes(64))
));
// On redirige avec le message de succès
header('Location:inscription.php?reg_err=success');
die();
}else{ header('Location: inscription.php?reg_err=password'); die();}
}else{ header('Location: inscription.php?reg_err=email'); die();}
}else{ header('Location: inscription.php?reg_err=email_length'); die();}
}else{ header('Location: inscription.php?reg_err=username_already'); die();}
}else{ header('Location: inscription.php?reg_err=already'); die();}
}