forked from valou423/TutoInscription
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinscription_traitement.php
52 lines (45 loc) · 2.97 KB
/
inscription_traitement.php
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
<?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['pseudo']) && !empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['password_retype']))
{
// Patch XSS
$pseudo = htmlspecialchars($_POST['pseudo']);
$email = htmlspecialchars($_POST['email']);
$password = htmlspecialchars($_POST['password']);
$password_retype = htmlspecialchars($_POST['password_retype']);
// On vérifie si l'utilisateur existe
$check = $bdd->prepare('SELECT pseudo, email, password FROM utilisateurs WHERE email = ?');
$check->execute(array($email));
$data = $check->fetch();
$row = $check->rowCount();
$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(strlen($pseudo) <= 100){ // On verifie que la longueur du pseudo <= 100
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 === $password_retype){ // 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 utilisateurs(pseudo, email, password, ip, token) VALUES(:pseudo, :email, :password, :ip, :token)');
$insert->execute(array(
'pseudo' => $pseudo,
'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=pseudo_length'); die();}
}else{ header('Location: inscription.php?reg_err=already'); die();}
}