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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220 | <?php
$valid_formats = array("jpg", "png", "jpeg", "gif");
$max_file_size = 2000000;
$max_file_uploads = 5;
$path = "photos/"; // Dossier de réception des fichiers
$count = 0;
//!empty vérifie que $_Files n'est pas vide
if(!empty($_FILES['photos'])){
// On fait une boucle de $_FILES pour executer et vérifier chaque fichier
foreach ($_FILES['photos']['name'] as $f => $name) {
if ($_FILES['photos']['error'][$f] == 4) {
continue; // Si les fichiers ne sont pas uploadés, on passe
}
//S'il n'y a pas d'erreur
if ($_FILES['photos']['error'][$f] == 0 AND $max_file_uploads <= 5) {
if ($_FILES['photos']['size'][$f] > $max_file_size) {
$message[] = "$name est trop gros!.";
continue; // Si le fichier est trop gros, on le passe aussi + le message
}
//on vérifie maintenant l'extention
elseif(! in_array(pathinfo(strtolower($name), PATHINFO_EXTENSION), $valid_formats)){
$message[] = "$name n'est pas un format valide";
continue; // Et si ce n'est pas bon, on passe le fichier avec la mauvaise extention + le message
}
else{ // S'il n'y a aucune erreur! On déplace les fichiers avec Move uploaded files
if(move_uploaded_file($_FILES['photos']['tmp_name'][$f], $path.$name)) {
$count++; // Compte le nombre de fichier correctement uploader
}
}
}
}
}
// Récupère l'IP du visiteur
function get_ip() {
// IP si internet partagé
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
return $_SERVER['HTTP_CLIENT_IP'];
}
// IP derrière un proxy
elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
return $_SERVER['HTTP_X_FORWARDED_FOR'];
}
// Sinon : IP normale
else {
return (isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '');
}
}
// Déclaration des variables avant insertion en bdd
$profil = $_FILES['profil']['name'];
$name = $_POST['name'];
$sejour = $_POST['sejour'];
$heberg = $_POST['heberg'];
$mois = $_POST['mois'];
$annee = $_POST['annee'];
$acceuil = $_POST['acceuil'];
$hebergement = $_POST['hebergement'];
$proprete = $_POST['proprete'];
$services = $_POST['services'];
$loisirs = $_POST['loisirs'];
$animations = $_POST['animations'];
$prix = $_POST['prix'];
$IP =
$avis = $_POST['avis'];
$dep_id = $_POST['dep_id'];
$campings_id = $_POST['campings_id'];
$album = $_FILES['photos']['name'];
$photos = serialize($album);
// round arrondit la moyenne et *2 / 2 permet d'aller au 0.5 le plus proche
$note = ($acceuil + $hebergement + $proprete + $services + $loisirs + $animations + $prix)/7;
$moyenne = round($note * 2) / 2;
// Insertion dans la base de donnée
$req = $bdd->prepare('INSERT INTO modale(profil, name, sejour, heberg, mois, annee, acceuil, hebergement, proprete, services, loisirs, animations, prix, moyenne, photos, avis, date_avis, IP, dep_id, campings_id)
VALUES(:profil, :name, :sejour, :heberg, :mois, :annee, :acceuil, :hebergement, :proprete, :services, :loisirs, :animations, :prix, :moyenne, :photos, :avis, NOW(), :IP, :dep_id, :campings_id)');
$req->execute(array(
'profil' => $profil,
'name' => $name,
'sejour' => $sejour,
'heberg' => $heberg,
'mois' => $mois,
'annee' => $annee,
'acceuil' => $acceuil,
'hebergement' => $hebergement,
'proprete' => $proprete,
'services' => $services,
'loisirs' => $loisirs,
'animations' => $animations,
'prix' => $prix,
'moyenne' => $moyenne,
'photos' => $photos,
'avis' => $avis,
'IP' => get_ip(),
'dep_id' => $dep_id,
'campings_id' => $campings_id
));
// Vérification de tous les champs du form (hors upload)
if(!in_array($_POST['sejour'], ['famille', 'couple', 'amis', 'solo'])
OR !in_array($_POST['heberg'], ['emplacement', 'mobile-home', 'tente amenagee', 'maison/appartement'])
OR !in_array($_POST['mois'], ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'])
){
echo 'Choisissez parmi les propositions de la liste.';
}
elseif(strlen($_POST['name']) <5){
echo 'Votre pseudo est trop court.';
}
else{
$options = array(
'name' => FILTER_SANITIZE_STRING, //Enlever les balises.
'avis' => FILTER_SANITIZE_STRING,
'acceuil' => array(
'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
'options' => array(
'min_range' => 1, //Minimum 1.
'max_range' => 10
)
),
'hebergement' => array(
'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
'options' => array(
'min_range' => 1, //Minimum 1.
'max_range' => 10
)
),
'proprete' => array(
'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
'options' => array(
'min_range' => 1, //Minimum 1.
'max_range' => 10
)
),
'services' => array(
'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
'options' => array(
'min_range' => 1, //Minimum 1.
'max_range' => 10
)
),
'loisirs' => array(
'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
'options' => array(
'min_range' => 1, //Minimum 1.
'max_range' => 10
)
),
'animations' => array(
'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
'options' => array(
'min_range' => 1, //Minimum 1.
'max_range' => 10
)
),
'prix' => array(
'filter' => FILTER_VALIDATE_INT, //Valider l'entier.
'options' => array(
'min_range' => 1, //Minimum 1.
'max_range' => 10
)
),
'annee' => array(
'filter' => FILTER_VALIDATE_INT,
'options' => array(
'min_range' => 2010,
'max_range' => 2025
)
)
);
$resultat = filter_input_array(INPUT_POST, $options);
if($resultat != null) { //Si le formulaire a bien été posté.
//Enregistrer des messages d'erreur perso.
$messageErreur = array(
'name' => 'Votre pseudo est trop court.',
'avis' => 'Veuillez écrire un commentaire.',
'acceuil' => 'Choississez une note comprise entre 1 et 10 pour l\'acceuil !',
'hebergement' => 'Choississez une note comprise entre 1 et 10 pour l\'hébergement !',
'proprete' => 'Choississez une note comprise entre 1 et 10 pour la propreté !',
'services' => 'Choississez une note comprise entre 1 et 10 pour les services !',
'loisirs' => 'Choississez une note comprise entre 1 et 10 pour les loisirs !',
'animations' => 'Choississez une note comprise entre 1 et 10 pour les animations !',
'prix' => 'Choississez une note comprise entre 1 et 10 pour le rapport qualité/prix !',
'annee' => 'Choisissez une date de la liste'
);
$nbrErreurs = 0;
foreach($options as $cle => $valeur) { //Parcourir tous les champs voulus.
if(empty($_POST[$cle])) { //Si le champ est vide.
echo 'Veuillez remplir le champ ' . $cle . '.<br/>';
$nbrErreurs++;
}
elseif($resultat[$cle] === false) { //S'il n'est pas valide.
echo $messageErreur[$cle] . '<br/>';
$nbrErreurs++;
}
}
if($nbrErreurs == 0) {
header('Location:http://localhost/TEST avec JS/campings/Modale/affichage.php?dep_id='.$dep_id.'&campings_id='.$campings_id.'');
}
}
else {
echo 'Vous devez remplir le formulaire complet si vous voulez poster.';
}
}
|