> Parcourir les entrées

> Proposer une entrée

[Administration] Liens pour les URL dans les commentaires : détecter ou éviter les liens incorrects

Soumis par Benoît Sibaud (Jabber id, page perso, ) le 08 juillet 2007. Non affecté.
0
Les liens dans les contenus du site sont automatiquement convertis en hyperliens HTML (...). Lorsque l'URL se termine par une parenthèse, une virgule, un point, etc. (caractères valides dans une URL), le lien produit est incorrect.

http://fr.wikipedia.org/wiki/Variance_(statistiques)
le même entre parenthèses (http://fr.wikipedia.org/wiki/Variance_(statistiques))
le même entre parenthèses avec un espace (http://fr.wikipedia.org/wiki/Variance_(statistiques) )
le même avec détection retrait de la parenthèse à la fin http://fr.wikipedia.org/wiki/Variance_(statistiques )
Autres cas problématiques
(blabla voici l'url http://127.0.0.1).
Ceci est une URL http://127.0.0.1, et là une autre http://127.0.0.1.

Ces caractères étant valides dans l'URL, le remplacement ne peut être exact dans tous les cas.

Code proposé pour une vérification du lien en PHP
(cf https://linuxfr.org/comments/849162.html#849162 ). Faire ces vérifications côté serveur pourrait poser des problèmes de sécurité ou de spam (ie permettre de faire envoyer une requête HTTP au serveur LinuxFr.org).

> Lire l'entrée (8 commentaires, moyenne: 2,3).  

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

accents

Posté par Farvardin (page perso, ) le 08/07/2007 à 12:54. (lien). Évalué à 3.

même si on laisse les parenthèses, cela ne résoudra pas (évidemment) les problèmes d'espace dans les url.

et comment gérer les accents ? (à mon avis il ne vaut mieux pas..), comme expliqué ici :

http://linuxfr.org/comments/849174.html#849174

cette url ne fonctionne pas :

http://fr.wikipedia.org/wiki/Théorie_des_probabilités

--
You can't grep dead trees...

[ Répondre ]

Côté client

Posté par André Rodier (page perso, ) le 08/07/2007 à 13:10. (lien). Évalué à 2.

Bonjour Benoît,
Je n'avais pas pensé a cela.
Cela devrait être possible côté client, sans trop de difficulté, en utilisant Ajax.

Une fonction Javascript qui ferait la même chose doit être possible.

Si la partie côté serveur peut génerer des constants ID sur les liens, et un morceau de code javascript dynamique, cela devrait faire l'affaire. Un code par exemple :

Code HTML généré côté serveur :
----

<a href="..." id="userLink01" >
<a href="..." id="userLink02" >
<a href="..." id="userLink03" >
...
<a href="..." id="userLink12" >
<script>CheckLinks();</script>

----

Et le code Javascript :
----

function CheckLinks()
{
____var linkNumber = 0 ;

____while ( true )
____{
________linkNumber++ ;
________var linkID = linkNumber < 10 ? 'userLink0'+linkNumber : 'userLink'+linkNumber ;

________var link = document.getElementByID(linkID) ;
________if ( !link ) break ;

________checkThisLink(link) ;
____}
}

function checkThisLink(link)
{
____/* ... */

________switch ( retour )
________{
________case 200 :
____________lien.style.color = 'green' ;
____________break ;
________case 404 :
____________lien.style.textColor = 'red' ;
____________lien.style.fontWeight = 'bold' ;
____________break ;
________}

----

Il me semble être sur la bonne piste ?

[ Répondre ]

  • [^]Re: Côté client

    Posté par André Rodier (page perso, ) le 09/07/2007 à 18:10. (lien). Évalué à 2.

    Dois-je approfondir ?

    [ Répondre ]

sécurité & requête HEAD

Posté par André Rodier (page perso, ) le 08/07/2007 à 16:16. (lien). Évalué à 2.

permettre de faire envoyer une requête HTTP

Je ne suis pas un expert, mais il me semble qu'une requête HEAD est faite pour cela : vérifier qu'une page existe :

fputs($sock, "HEAD $path HTTP/1.0\r\n\r\n") ;

Quelqu'un peut confirmer ou infirmer ?

[ Répondre ]

Proposition

Posté par Aldoo (Jabber id, ) le 09/07/2007 à 14:04. (lien). Évalué à 2.

J'ai fait une proposition naïve ici : http://linuxfr.org/comments/849481.html#849481
(pour résumer, la parenthèse fermante y est considérée par défaut, sauf mention contraire comme ne faisant pas partie de l'URL)

J'imagine ne pas être le premier à proposer quelque chose dans ce sens, mais il me semble que cela simplifie grandement les choses pour l'utilisation courante. Il y a sans doute encore des améliorations possibles (la parenthèse fermante pourrait à nouveau être considérée comme faisant partie de l'URL si l'URL contient une parenthèse ouvrante, comme c'est souvent le cas sur Wikipédia).

Maintenant, avoir en plus un système de vérification automatique des liens c'est complémentaire, donc pourquoi pas.

[ Répondre ]

  • [^]Re: Proposition

    Posté par baud123 (Jabber id, page perso, ) le 17/07/2007 à 13:12. (lien). Évalué à 2.

    Les crochets ouvrants et fermants remplacent avantageusement les parenthèses [ ]

    Par ailleurs, pour les accents, espaces et autres caractères il y a par exemple la possibilité d'écrire [http://fr.wikipedia.org/wiki/Th%C3%A9orie_des_probabilit%C3%(...)] (et, en cliquant sur le bouton vérifier, la possibilité de s'assurer que le lien s'affiche correctement).

    [ Répondre ]

    • [^]Re: Proposition

      Posté par Aldoo (Jabber id, ) le 20/07/2007 à 20:16. (lien). Évalué à 2.

      Les crochets sont une solution facile, mais il faut la connaître auparavant, et donc ne peut pas remplacer la reconnaissance automatique (ça ne remplit pas le même rôle, pour résumer !).

      En revanche le remplacement des caractères accentués par des %trucmuche n'est pas acceptable du tout ! Quid des copier/coller depuis un endroit où l'URL est écrite dans sa bonne forme ? Quid des URL qu'on écrit à la main ? (par exemple, j'écris souvent de mémoire le préfixe http://fr.wikipedia.org/wiki/ auquel j'ajoute le terme que je veux définir qu'il contienne des accents ou non).
      Quid de l'esthétique et de la lisibilité ? C'est moche et illisible un lien rempli de %trucmuches !

      [ Répondre ]

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Revenir en haut de page