-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdevis_post_demande.php
112 lines (92 loc) · 3.58 KB
/
devis_post_demande.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
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
<?php
session_start();
require_once(__DIR__ . '/config/mysql.php');
require_once(__DIR__ . '/dbconnect.php');
// Vérifications
$postData = $_POST;
$errors = [];
if (empty($postData['lastname'])) {
$errors['lastname'] = 'Le nom est requis.';
}
if (empty($postData['firstname'])) {
$errors['firstname'] = 'Le prénom est requis.';
}
if (empty($postData['phone']) || !preg_match('/(0|\\+33)[1-9][0-9]{8}$/', $postData['phone'])) {
$errors['phone'] = 'Le téléphone est incorrect ou manquant.';
}
if (empty($postData['email']) || !filter_var($postData['email'], FILTER_VALIDATE_EMAIL)) {
$errors['email'] = 'L\'email est incorrect ou manquant.';
}
if (empty($postData['budget']) || !is_numeric($postData['budget'])) {
$errors['budget'] = 'Le budget doit être un chiffre valide.';
}
if (empty($postData['deadline'])) {
$errors['deadline'] = 'La date limite est requise.';
}
if (empty($postData['description'])) {
$errors['description'] = 'La description est requise.';
}
if (!empty($errors)) {
echo json_encode(['status' => 'error', 'errors' => $errors]);
exit;
}
if(empty($postData['company'])){
$postData['company'] = 'N/A';
}
// Gestion du fichier
$isFileLoaded = false;
// Testons si le fichier a bien été envoyé et s'il n'y a pas des erreurs
if (isset($_FILES['file']) && $_FILES['file']['error'] === 0) {
// Testons, si le fichier est trop volumineux
if ($_FILES['file']['size'] > 1000000) {
echo "L'envoi n'a pas pu être effectué, erreur ou fichier trop volumineux";
return;
}
// Testons, si l'extension n'est pas autorisée
$fileInfo = pathinfo($_FILES['file']['name']);
$extension = strtolower($fileInfo['extension']);
$allowedExtensions = ['pdf', 'jpg', 'jpeg', 'png'];
if (!in_array($extension, $allowedExtensions)) {
echo "L'envoi n'a pas pu être effectué, l'extension {$extension} n'est pas autorisée";
return;
}
// Testons, si le dossier uploads est manquant
$path = __DIR__ . '/uploads/';
if (!is_dir($path)) {
echo "L'envoi n'a pas pu être effectué, le dossier uploads est manquant";
return;
}
// On peut valider le fichier et le stocker définitivement
move_uploaded_file($_FILES['file']['tmp_name'], $path . basename(strtolower($postData['lastname'] . '-' . $postData['firstname'] . '.' . $extension)));
$isFileLoaded = true;
}
// Insertion en BDD
$lastname = trim(strip_tags($postData['lastname']));
$firstname = trim(strip_tags($postData['firstname']));
$company = trim(strip_tags($postData['company']));
$phone = trim(strip_tags($postData['phone']));
$email = trim(strip_tags($postData['email']));
$insertUser = $mysqlClient->prepare('INSERT INTO users (lastname, firstname, company, phone, email) VALUES (:lastname, :firstname, :company, :phone, :email)');
$insertUser->execute([
'lastname' => $lastname,
'firstname' => $firstname,
'company' => $company,
'phone' => $phone,
'email' => $email,
]);
$userId = $mysqlClient->lastInsertId();
$needs = trim(strip_tags($postData['needs']));
$budget = trim(strip_tags($postData['budget']));
$deadline = trim(strip_tags($postData['deadline']));
$description = trim(strip_tags($postData['description']));
$insertRequest = $mysqlClient->prepare('INSERT INTO requests (user_id, needs, budget, deadline, description) VALUES (:user_id, :needs, :budget, :deadline, :description)');
$insertRequest->execute([
'user_id' => $userId,
'needs' => $needs,
'budget' => $budget,
'deadline' => $deadline,
'description' => $description,
]);
echo json_encode(['status' => 'success']);
exit;
?>