From e4a74650a36bbb72285d38d96ee2a0689031521e Mon Sep 17 00:00:00 2001 From: polo Date: Wed, 3 Aug 2022 02:15:04 +0200 Subject: =?UTF-8?q?captcha=20+=20am=C3=A9liorations=20regex=20+=20erreur?= =?UTF-8?q?=20404?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/Security.php | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'controller/Security.php') diff --git a/controller/Security.php b/controller/Security.php index c4724de..39205c1 100644 --- a/controller/Security.php +++ b/controller/Security.php @@ -32,22 +32,27 @@ function removeSpacesTabsCRLF(string $chaine): string // lien sans http:// function fixLinks($data) { + // 1/ // 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:// // tomber ainsi sur une page d'erreur est parfaitement déroutant - // une erreur 404 est détectée et le visiteur redirigé, mais ça ne règle pas le problème // regex pour détecter les balises et ajouter http:// au début des liens si nécessaire - $pattern = '#()#'; - $remplacement = '$1http://$2$3'; - // le "while" est ici parce que preg_replace s'arrête après avec matché une fois - // plus exactement, le .* à la fin fait que la chaine détectée va jusqu'à la fin des données (à corriger peut-être avec ) - while(preg_match($pattern, $data)) - { - $data = preg_replace($pattern, $remplacement, $data); - } - - // 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 - // solution: fermer ce nouvel onglet avec echo ''; + $pattern = '#(]+href=")((?!https?://)[^>]+>)#'; + //$data = preg_replace($pattern, '$1http://$2', $data); + + // 2/ + // cas où la regex fait mal son boulot: + // l'erreur 404 est gérée par le .htaccess + // et le visiteur est redirigé à la page "menu" + // (ça ne règle pas le problème mais c'est mieux) + + // 3/ + // quand l'éditeur est ouvert (avant de valider l'article), + // le lien qu'on vient de créer apparaît dans l'infobulle, + // cliquer dessus ouvre un onglet sur une erreur 404 + // solution partielle avec le .htaccess + // + // solution? fermer ce nouvel onglet avec echo ''; // comment déclencher le JS? en faisant qu'une erreur 404 causée pour cette raison soit particulière? return($data); -- cgit v1.2.3