summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2025-01-14 23:53:17 +0100
committerpolo <ordipolo@gmx.fr>2025-01-14 23:53:17 +0100
commitbbf50ae1ffa5b1b3b71f0e57d658d9beaaa50de0 (patch)
treebb4f695368c2895e58ee710582b6ff4a09653474 /src
parente9a5da044f63851aa37d401ef37c8102b08ae274 (diff)
downloadckeditor5-bbf50ae1ffa5b1b3b71f0e57d658d9beaaa50de0.zip
meilleur filtrage upload AJAX
Diffstat (limited to 'src')
-rw-r--r--src/integration/ckeditor5/image_upload.php60
-rw-r--r--src/integration/ckeditor5/view.php7
2 files changed, 36 insertions, 31 deletions
diff --git a/src/integration/ckeditor5/image_upload.php b/src/integration/ckeditor5/image_upload.php
index 9090ddf..6cbc911 100644
--- a/src/integration/ckeditor5/image_upload.php
+++ b/src/integration/ckeditor5/image_upload.php
@@ -15,33 +15,50 @@
15 15
16 16
17$erreur = ''; 17$erreur = '';
18if(isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok 18if($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['upload'])
19 && strpos($_SERVER['CONTENT_TYPE'], 'multipart/form-data') !== false // simple upload adapter envoie "des form-data"
20 && isset($_GET['action']) && $_GET['action'] === 'upload_image') // image insérée dans l'éditeur => requête AJAX
19{ 21{
20 if($_FILES['upload']['size'] <= $php_ini_max_size ) 22 if($_FILES['upload']['error'] == 0) // 0 signifie ok
21 { 23 {
22 $infos = pathinfo ($_FILES['upload']['name']); 24 if($_FILES['upload']['size'] <= $php_ini_max_size )
23 $extension = $infos['extension'];
24 $extautorisées = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff'];
25 // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur)
26 if(in_array($extension, $extautorisées))
27 { 25 {
28 move_uploaded_file ($_FILES['upload']['tmp_name'], 'data/' . $page . '/images/' . $_FILES['upload']['name']); 26 $infos = pathinfo ($_FILES['upload']['name']);
29 chmod('data/' . $page . '/images/' . $_FILES['upload']['name'], 0666); 27 $extension = $infos['extension'];
28 $extautorisées = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'tiff'];
29 // on prend la même liste que celle côté javascript, le SVG est bloqué pour raison de sécurité (javascript à l'intérieur)
30 if(in_array($extension, $extautorisées))
31 {
32 move_uploaded_file ($_FILES['upload']['tmp_name'], 'data/' . $page . '/images/' . $_FILES['upload']['name']);
33 chmod('data/' . $page . '/images/' . $_FILES['upload']['name'], 0666);
34 }
35 else
36 {
37 $erreur = 'mauvais format, veuillez utiliser une image comportant un de ces formats: jpg ou jpeg, png, gif, bmp, webp, tiff<br />le format svg n\'est pas supporté';
38 }
30 } 39 }
31 else 40 else
32 { 41 {
33 $erreur = 'mauvais format, veuillez utiliser une image comportant un de ces formats: jpg ou jpeg, png, gif, bmp, webp, tiff<br />le format svg n\'est pas supporté'; 42 $erreur = 'fichier trop lourd';
34 } 43 }
35 } 44 }
36 else 45 else
37 { 46 {
38 $erreur = 'fichier trop lourd'; 47 $erreur = $_FILES['upload']['error'];
39 } 48 }
49
50 if(empty($erreur))
51 {
52 $chemin = '{"url": "data/' . $page . '/images/' . $_FILES['upload']['name'] . '"}';
53 echo $chemin;
54 }
55 else
56 {
57 echo $erreur;
58 }
59 die;
40} 60}
41else 61
42{
43 $erreur = $_FILES['upload']['error'];
44}
45/* les erreurs retournées avec $_FILES['upload']['error']: 62/* les erreurs retournées avec $_FILES['upload']['error']:
460 pas d'erreur 630 pas d'erreur
471 taille du fichier supérieure à la valeur de upload_max_filesize dans le fichier php.ini (par défaut = 2 MO) 641 taille du fichier supérieure à la valeur de upload_max_filesize dans le fichier php.ini (par défaut = 2 MO)
@@ -50,15 +67,4 @@ else
504 pas de fichier du tout 674 pas de fichier du tout
516 pas de dossier temporaire pour mettre le fichier 686 pas de dossier temporaire pour mettre le fichier
527 echec de l'écriture sur le DD 697 echec de l'écriture sur le DD
538 envoi arrêté par une extension de PHP mais on ne nous dit pas pourquoi => diagnostic avec la fonction phpinfo() */ 708 envoi arrêté par une extension de PHP mais on ne nous dit pas pourquoi => diagnostic avec la fonction phpinfo() */ \ No newline at end of file
54
55if(empty($erreur))
56{
57 $chemin = '{"url": "data/' . $page . '/images/' . $_FILES['upload']['name'] . '"}';
58 echo $chemin;
59}
60else
61{
62 echo $erreur;
63}
64die;
diff --git a/src/integration/ckeditor5/view.php b/src/integration/ckeditor5/view.php
index 794e55f..b5cf5cc 100644
--- a/src/integration/ckeditor5/view.php
+++ b/src/integration/ckeditor5/view.php
@@ -138,11 +138,10 @@ ob_start();
138 simpleUpload: { 138 simpleUpload: {
139 uploadUrl: upload_url, 139 uploadUrl: upload_url,
140 140
141 // Headers supplémentaires envoyés avec la requête 141 // authentifier l'envoyeur + protection au CSRF
142 // c'est ici qu'on installe les mécanismes de sécurités comme l'authentification et la protection au CSRF
143 headers: { 142 headers: {
144 //'X-CSRF-TOKEN': 'CSRF-Token', 143 'X-CSRF-TOKEN': 'CSRF-Token',
145 //Authorization: 'Bearer <JSON Web Token>' 144 Authorization: 'Bearer <JSON Web Token>'
146 } 145 }
147 }, 146 },
148 // formats acceptés par défaut: jpeg, png, gif, bmp, webp, tiff 147 // formats acceptés par défaut: jpeg, png, gif, bmp, webp, tiff