Un mauvais décompte de domaines, en PHP - PHP - Programmation
Marsh Posté le 15-01-2014 à 03:14:16
Hello,
Regarde du côté de la fonction parse_url http://www.php.net/manual/fr/function.parse-url.php . Dans les commentaires tu trouveras une personne qui extrait d'une URL le top level domain + domain. Je pense que ça sera plus facile d'emploi qu'une regex.
Marsh Posté le 10-01-2014 à 18:43:44
Bonjour !
Je pourrais vous demander de l'aide, s'il vous plaît ?
Pour prévenir une certaine forme d'abus, sur une page où des utilisateurs peuvent soumettre du texte (disons que c'est à mi-chemin entre forum et livre d'or), j'ai essayé de restreindre le nombre de liens externes postés par les membres.
L'idée, c'est qu'on peut poster des liens jusqu'à 3 sites web différents (et même des pages internes différentes dans ces sites), mais pas vers 4 sites différents, ou davantage.
Voici le code, où $entry est ce que soumet l'utilisateur :
[code]preg_match_all('#http://(?:www\.)?(.*?)/#', $entry, $domains);
$uniquedomains = array_unique($domains[1]);
$nrofdomains = count($uniquedomains);
if ($nrofdomains > 3)
{
die ("blocage" );
// ou n'importe-quoi d'autre, vous voyez l'idée, quoi
} [code]
Sauf que. Avec mon niveau en codage (très très faible ^^), je n'arrive pas à éviter un bug
Le bug : si une personne poste des liens avec sous-domaine, chacun des sous-domaines est compté comme un nouveau domaine.
Par exemple ? main.site.fr puis ensuite serveur2.site.fr et enfin serveur3.site.fr : ça serait compté comme trois sites.
Il doit bien y avoir moyen d'améliorer le preg_match_all, mais, rha, ça me dépasse
J'ai bien envisagé de whitelister les sites courants ayant des sous-domaines courants comme machin.blogspot.fr, mais c'est stérile, comme démarche, je ne vais pas whitelister la moitié de l'internet juste parce que je ne suis pas fichu de rédiger correctement un preg_match_all
(Et puis bon, je ne me suis pas encore demandé comment coder une liste blanche, en plus )
Enfin voilà...
Auriez-vous une petite idée là-dessus, peut-être, s'il vous plaît, sur la façon de mieux rédiger ça ?
Merci si vous pouvez aider !