summaryrefslogtreecommitdiff
path: root/controller/ckeditor.php
diff options
context:
space:
mode:
Diffstat (limited to 'controller/ckeditor.php')
-rw-r--r--controller/ckeditor.php40
1 files changed, 29 insertions, 11 deletions
diff --git a/controller/ckeditor.php b/controller/ckeditor.php
index 4b4297a..d6ea8ad 100644
--- a/controller/ckeditor.php
+++ b/controller/ckeditor.php
@@ -47,6 +47,9 @@ function submitCKeditor()
47 if(isset($_POST['contenu'])) // optionnel pour discographie 47 if(isset($_POST['contenu'])) // optionnel pour discographie
48 { 48 {
49 $contenu = Security::secureString($_POST['contenu']); 49 $contenu = Security::secureString($_POST['contenu']);
50
51 // liens sans http:// devant
52 $contenu = fixLinks($contenu);
50 53
51 // récupérer les liens multimedia 54 // récupérer les liens multimedia
52 //require("media.php"); 55 //require("media.php");
@@ -142,14 +145,29 @@ function submitCKeditor()
142 145
143 146
144// lien sans http:// 147// lien sans http://
145// un clic sur un lien dans l'éditeur affiche une infobulle montrant l'adresse cible du lien si celle-ci a déjà été précisée 148// si une adresse est de type "domaine.fr" sans le http:// devant, le comportement des navigateurs est de rechercher un fichier comme si mon adresse commençait par file://
146// il est possible de cliquer sur ce lien, ce qui ouvre un onglet avec le site demandé 149// tomber ainsi sur une page d'erreur est parfaitement déroutant
147// toutefois si cette adresse est de type "domaine.fr" (sans http:// devant), le navigateur ne va pas rechercher un site mais un fichier comme si mon adresse était de type file:///fichier 150// une erreur 404 est détectée et le visiteur redirigé, mais ça ne règle pas le problème
148// tomber ainsi sur une page d'erreur est déroutant: 151// 2ème problème, en train d'écrire un article, l'utilisateur clique sur ce lien qu'il vient de créer et qui apparaît dans l'infobulle, un nouvelle onglet apparaît
149// "ai-je perdu le texte que j'étais en train de taper?"" 152// solution: fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>';
150// solution 1 (mauvaise): activer la redirection en cas d'erreur 404 dans le .htaccess 153// le .htaccess doit pour ça détecter que l'erreur 404 est particulière
151// solution 2 (façon pop-up): fermer ce nouvel onglet avec echo '<SCRIPT>javascript:window.close()</SCRIPT>'; 154
152// pour faire passer par le .htaccess l'info comme quoi la page précédente comportait un éditeur ouvert... 155function fixLinks($data)
153 156{
154function cleanHTML($contenu) 157 // regex pour détecter les balises <a>, analyser les liens à l'interieur et les modifier si nécessaire
155{} 158 $pattern = '#<a href=".*">.*</a>#';
159
160 if(preg_match($pattern, $data))
161 {}
162
163 //$remplacement = 'http://$0';
164 //$data = preg_replace($pattern, $remplacement, $data);
165
166 // contrairement à ce qui dit la doc
167 // https://www.php.net/manual/fr/filter.filters.validate.php
168 // une adresse du type "domaine.fr" ne passe pas le filtre
169 // il renvoie false, ce qui nous arrange ici!
170 //var_dump(filter_var($link, FILTER_VALIDATE_URL));
171
172 return($data);
173}