diff options
-rw-r--r-- | index.php | 9 | ||||
-rw-r--r-- | src/integration/ckeditor5/image_upload.php | 60 | ||||
-rw-r--r-- | src/integration/ckeditor5/view.php | 7 |
3 files changed, 39 insertions, 37 deletions
@@ -2,20 +2,17 @@ | |||
2 | // index.php | 2 | // index.php |
3 | 3 | ||
4 | require 'src/integration/ckeditor5/config.php'; | 4 | require 'src/integration/ckeditor5/config.php'; |
5 | require 'src/integration/ckeditor5/init.php'; | 5 | require $ckeditor_integration_path . 'init.php'; |
6 | makeTranslationSymLink(); | 6 | makeTranslationSymLink(); |
7 | 7 | ||
8 | 8 | ||
9 | // routage | 9 | // routage |
10 | 10 | ||
11 | // upload images AJAX | 11 | // upload images AJAX |
12 | if(isset($_GET['action']) && $_GET['action'] === 'upload_image') // image insérée dans l'éditeur => requête AJAX | 12 | require $ckeditor_integration_path . 'image_upload.php'; |
13 | { | ||
14 | require $ckeditor_integration_path . 'image_upload.php'; | ||
15 | } | ||
16 | 13 | ||
17 | // submit normal | 14 | // submit normal |
18 | elseif(isset($_GET['action']) && $_GET['action'] === 'submit') // HTML envoyé par l'éditeur | 15 | if(isset($_GET['action']) && $_GET['action'] === 'submit') // HTML envoyé par l'éditeur |
19 | { | 16 | { |
20 | require $ckeditor_integration_path . 'clean_html.php'; | 17 | require $ckeditor_integration_path . 'clean_html.php'; |
21 | $html_from_editor = getAndCleanEditorOutput(); // manipule $_POST['contenu']; | 18 | $html_from_editor = getAndCleanEditorOutput(); // manipule $_POST['contenu']; |
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 = ''; |
18 | if(isset($_FILES['upload']) AND $_FILES['upload']['error'] == 0) // 0 signifie ok | 18 | if($_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 | } |
41 | else | 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']: |
46 | 0 pas d'erreur | 63 | 0 pas d'erreur |
47 | 1 taille du fichier supérieure à la valeur de upload_max_filesize dans le fichier php.ini (par défaut = 2 MO) | 64 | 1 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 | |||
50 | 4 pas de fichier du tout | 67 | 4 pas de fichier du tout |
51 | 6 pas de dossier temporaire pour mettre le fichier | 68 | 6 pas de dossier temporaire pour mettre le fichier |
52 | 7 echec de l'écriture sur le DD | 69 | 7 echec de l'écriture sur le DD |
53 | 8 envoi arrêté par une extension de PHP mais on ne nous dit pas pourquoi => diagnostic avec la fonction phpinfo() */ | 70 | 8 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 | |||
55 | if(empty($erreur)) | ||
56 | { | ||
57 | $chemin = '{"url": "data/' . $page . '/images/' . $_FILES['upload']['name'] . '"}'; | ||
58 | echo $chemin; | ||
59 | } | ||
60 | else | ||
61 | { | ||
62 | echo $erreur; | ||
63 | } | ||
64 | die; | ||
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 |