inscription.php 6.04 KB
Newer Older
1
2
3
4
<!DOCTYPE html>
<html>
	<head>
			<meta charset="utf-8" />
5
			<title>Inscription</title>
6
			
7
8
9
10
11
			<!-- Bootstrap core CSS -->
			<link href="./style/css/bootstrap.css" rel="stylesheet">

			<!-- Custom styles for this template -->
			<link href="./style/css/sticky-footer-navbar.css" rel="stylesheet">
12
13
14
15
16
	</head>

	<body>
		<?php
			// Afficher les erreurs à l'écran
Romain Benit's avatar
Romain Benit committed
17
18
19
20
21
22
23
			// ini_set('display_errors', 1);

			/*##################################################
			#	    inscription.php                            #
			#       Ver 2.0 - Date 14-12-2018                  #
			#       Page de gestion de l'inscription           #
			##################################################*/
24
25
26
27
28
29

			//Appel au header du site
			include('header.php');

			//Appel au header du site
			include('footer.php');
Romain Benit's avatar
Romain Benit committed
30
			
31
			// Elements de connexion à la BDD
32
			require_once ("paramcon.php");
33

34
			// Déclaration du compteur pour déterminer la réussite de nos requêtes SQL
35
			$compt=0;
36
37
38
39
40

			// Phase de tests des champs entré par l'utilisateur
			if( empty($_POST['login']) ) {
			   // on vérifie que le champ "Login" n'est pas vide
			   // empty vérifie à la fois si le champ est vide et si le champ existe belle et bien (is set)
41
42
43
				?>
				<form class='error'>
					<p>Le champ login est vide.</p>
44
					<button class="btn bnt-outline-secondary"><a href="formulaire.php">Retour</a></button>
45
46
47
48
				</form>
				<?php
				exit;
			}
49
50
			// On vérifie maintenant si le champ "prenom" n'est pas vide et existe bien
			elseif(empty($_POST['prenom'])) {
51
52
				?>
				<form class='error'>
53
					<p>Le champ prenom est vide.</p>
54
					<button class="btn bnt-outline-secondary"><a href="formulaire.php">Retour</a></button>
55
56
57
				</form>
				<?php
				exit;
58
			}
59
60
			// On vérifie maintenant si le champ "nom" n'est pas vide et existe bien
			elseif(empty($_POST['nom'])) {
61
62
				?>
				<form class='error'>
63
					<p>Le champ nom est vide.</p>
64
					<button class="btn bnt-outline-secondary"><a href="formulaire.php">Retour</a></button>
65
66
67
				</form>
				<?php
				exit;
68
			}
69
70
			// on vérifie maintenant si le champ "Password" n'est pas vide et existe bien
			elseif(empty($_POST['password'])) {
71
72
				?>
				<form class='error'>
73
					<p>Le champ mot de passe est vide.</p>
74
					<button class="btn bnt-outline-secondary"><a href="formulaire.php">Retour</a></button>
75
76
77
				</form>
				<?php
				exit;
78
79
			}
			// On vérifie la longueur du mot de passe et sa compléxité
80
			elseif ( preg_match('#^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).{8,}$#', $_POST['password']) == 0 ) {
81
				// La fonctionpreg_match() permet de rechercher une ou plusieurs occurrences d'un caractère.
82
83
84
85
86
87
88
89
90
				// On l'utilise ici pour tester la présence de nos différentes familles dans la chaîne entrée pour le mot de passe.
				// Le symbole# délimite le regex.
				// Le symbole^ placé au début indique tout simplement le début de la chaine.
				// (?=.*[a-z]) permet de tester la présence de minuscules.
				// (?=.*[A-Z]) permet de tester la présence de majuscules.
				// (?=.*[0-9]) permet de tester la présence de chiffres.
				// (?=.*\W) permet de tester la présence de caractères spéciaux (\W indique ce qui ne correspond pas à un mot).
  		 		 ?>
				<form class='error'>
91
					<p>Le champ mot de passe ne correspond pas à notre politique de sécurité, veuillez entrer au moins 8 carractères, des minuscules, des majuscules, des chiffres et des caractères spéciaux.</p>
92
					<button class="btn bnt-outline-secondary"><a href="formulaire.php">Retour</a></button>
93
94
95
96
97
				</form>
				<?php
				exit;
			}
			// On vérifie maintenant si le champ "email" n'est pas vide et existe bien
98
99
100
101
			elseif(empty($_POST['email'])) {
				?>
				<form class='error'>
					<p>Le champ email est vide.</p>
102
					<button class="btn bnt-outline-secondary"><a href="formulaire.php">Retour</a></button>
103
104
105
				</form>
				<?php
				exit;
106
			}
107
108
			// Tout les champs existes et ne sont pas vide, on continu
			else {
109
110
				// Les champs sont bien posté et pas vide, on sécurise les données entrées par le membre:
				// Le htmlentities() passera les guillemets en entités HTML, ce qui empêchera les injections SQL
111
112
113
				$login = htmlentities(strtolower ( $_POST['login'] ), ENT_QUOTES, "ISO-8859-1");
				$nom = htmlentities($_POST['nom'], ENT_QUOTES, "ISO-8859-1");
				$prenom = htmlentities($_POST['prenom'], ENT_QUOTES, "ISO-8859-1");
114
				$password = htmlentities($_POST['password'], ENT_QUOTES, "ISO-8859-1");
115
				$email = htmlentities($_POST['email'], ENT_QUOTES, "ISO-8859-1");
116

117
118
				// On se connecte à la base de données
				$connexion = new PDO('mysql:host='.$lehost.';port='.$leport.';dbname='.$dbname, $user, $pass);
119

120
121
122
123
124
125
				// On envoie la requête pour vérifier si le login existe déjà ou non
				$resultats=$connexion->query("SELECT login FROM utilisateurs WHERE login='".$login."'");
				$resultats->setFetchMode(PDO::FETCH_OBJ);
				while( $resultat = $resultats->fetch() ){
					$compt++;
				}
126

127
128
				// Fermeture de la connexion à la base de données
				$resultats->closeCursor();
129

130
131
132
133
				// Test sur la réussite de la reqête
				if ($compt == 0) {
					// On se connecte à la base de données
					$connexion = new PDO('mysql:host='.$lehost.';port='.$leport.';dbname='.$dbname, $user, $pass);
134

135
136
137
138
139
140
141
142
143
					// On envoie la requête pour remplir la base
					$req = $connexion->prepare('INSERT INTO utilisateurs(nom, prenom, email, login, password) VALUES(:nom, :prenom, :email, :login, :password)');
					$req->execute(array(
						'nom' => $nom,
						'prenom' => $prenom,
						'email' => $email,
						'login' => $login,
						'password' => password_hash($password, PASSWORD_DEFAULT)
						));
144

145
146
147
					?>
					<form class='success'>
						<p>L'utilisateur a bien été ajouté !</p>
148
						<button class="btn bnt-outline-secondary"><a href="index.php">Retour</a></button>
149
					</form>
150
151
					<?php
				}
152
153
154
155
156
				// Si le compteur n'est pas égale à 0 alors il y a déja le même login
				else {
					?>
					<form class='error'>
						<p>L'identifiant entré est déjà utilisé.</p>
157
						<button class="btn bnt-outline-secondary"><a href="formulaire.php">Retour</a></button>
158
159
160
161
162
					</form>
					<?php
					exit;
				}
			}
163
		?>
164

165
166
	</body>
</html>