X-Git-Url: http://git.cyclocoop.org/?a=blobdiff_plain;f=www%2Fecrire%2Finc%2Ffiltres_mini.php;h=fff71429f6451f040edf641493ba31ba83b3d851;hb=9a3d4353e89ac94da6b21cff26e28fa704369cb2;hp=c935e564836345505d21154d4957b8d4d44b262d;hpb=9d7ff6aab72d820f145250ccc1f182716e1f6bff;p=lhc%2Fweb%2Fwww.git diff --git a/www/ecrire/inc/filtres_mini.php b/www/ecrire/inc/filtres_mini.php index c935e564..fff71429 100644 --- a/www/ecrire/inc/filtres_mini.php +++ b/www/ecrire/inc/filtres_mini.php @@ -3,7 +3,7 @@ /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * - * Copyright (c) 2001-2017 * + * Copyright (c) 2001-2019 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * @@ -71,7 +71,7 @@ function suivre_lien($url, $lien) { if (preg_match(',^(mailto|javascript|data|tel|callto|file|ftp):,iS', $lien)) { return $lien; } - if (preg_match(';^((?:[a-z]{3,7}:)?//.*?)(/.*)?$;iS', $lien, $r)) { + if (preg_match(';^((?:[a-z]{3,33}:)?//.*?)(/.*)?$;iS', $lien, $r)) { $r = array_pad($r, 3, null); return $r[1] . resolve_path($r[2]); @@ -144,6 +144,24 @@ function protocole_implicite($url_absolue) { return preg_replace(';^[a-z]{3,7}://;i', '//', $url_absolue); } +/** + * Verifier qu'une url est absolue et que son protocole est bien parmi une liste autorisee + * @param string $url_absolue + * @param array $protocoles_autorises + * @return bool + */ +function protocole_verifier($url_absolue, $protocoles_autorises = array('http','https')) { + + if (preg_match(';^([a-z]{3,7})://;i', $url_absolue, $m)) { + $protocole = $m[1]; + if (in_array($protocole, $protocoles_autorises) + or in_array(strtolower($protocole), array_map('strtolower', $protocoles_autorises))) { + return true; + } + } + return false; +} + /** * Transforme les URLs relatives en URLs absolues *