Vérifier une URL en javascript

Fermé
misterclic66 - 5 mai 2009 à 09:29
hugs-giver Messages postés 88 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 10 juin 2014 - 23 déc. 2009 à 00:31
Bonjour,

Je suis actuellement en train de concevoir un gros formulaire avec un blocage du submit par javascript si un champ obligatoire est vide ou si un champ "à contraintes" est rempli de façon illogique.

Parmi ces derniers, il y en a un qui doit être renseigné avec une url.

Je n'ai pas trouvé comment vérifier en javascript l'existance de l'url indiquée par l'utilisateur, alors je me replie sur une fonction vérifiant la syntaxe de l'url saisie (afin que ce soit une page web)

/* vérifie la syntaxe d'une url */

function is_url(str)
{
var exp = new RegExp("^(http://|https://)[a-zA-Z0-9.-]*[a-zA-Z0-9/_-]*\??","g");
return exp.test(str);
}

^(http://|https://) vérifie qu'on commence bien par un protocole http ou https
[a-zA-Z0-9.-]* vérifie la zone sous-domaine/domaine/extension
[a-zA-Z0-9/_-]* vérifie le chemin à l'intérieur de l'arborescence
\?? autorise la présence d'une query string

ça a l'air de fonctionner, mais je trouve que c'est pas assez exigeant (ça autorise l'url d'une image ou d'un mp3 par exemple, or ce que je veux c'est une page web et rien d'autre : ça doit ensuite être inséré dans une BDD via PHP pour être utilisé ensuite par un lien dynamique).

Si quelqu'un a des idées pour améliorer ça, je suis à l'écoute
A voir également:

3 réponses

hugs-giver Messages postés 88 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 10 juin 2014 30
23 déc. 2009 à 00:31
Salut, vue que je n'est trouvé la réponse nulle part, g creusé ma tête, et g trouver un truc, c ptetre un peut plus lourd que du javascript pure, mais moi j'en ai besoin car mon formulaire est long à remplire, et jveut pas que le mec soit obligé de tout recommencer en cas d'erreur!

Bon pour ceux que sa intéresse (à modifier selon besoin) :

Le principe, c'est que quand tu clic sur valider, un premier script javascript ouvre la page "testeuri.php?url=tonurl" qui va tester l'url et renvoyer une réponse dans la page d'origine, ensuite, un autre script va analyser cette réponse et afficher si le site est ou non valide le tout sans recharger la page!!

Vue que le teste est en php on peut très bien tester d'autre chose comme par exemple les entête http pour savoir si la page exsiste, et si justement c'est une page web, ou non!

Tout deviens plus simple en php, surtout si on à pas besoin de recharger la page!!

Biensur, il faudra reverifier par la suite avec un vrai code php!!



Donc le code,
Dans la page ou il y a le formulaire on met ce code :

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Teste url</title>
<script type="text/javascript">
function tester()
{
if(document.getElementById("url").value != '')
{
var url = document.getElementById("url").value;
var frame = '<iframe src=\"testeuri.php?url='+url+'\" height=\"0\" width=\"0\" scrolling=\"no\" frameborder=\"0\"></iframe>';
document.getElementById("teste").innerHTML = frame;
}
else
{
alert('erreur, champ vide');
}
}

function testeurl(nb, url)
{
if(nb == 0)
{
alert('ok\nl\'url "'+url+'" est valide');
}

if(nb == 1)
{
alert('l\'url "'+url+'" est invalide');
}

if(nb == 2)
{
alert('le Champ est vide vide!!');
}
}
</script>
</head>
<body>
<input id="url" name="url" value="http://">
<a href="javascript:;" OnClick="tester()">Tester</a><br>
<span id="teste"></span>
</body>
</html>

Ensuite, il faut créer une page nomé testeuri.php :
<?php
if(isset($_GET['url']))
{
$url = htmlspecialchars($_GET['url']);
if(filter_var("$url", FILTER_VALIDATE_URL))
{
$nb = 0;//ok
}
else
{
$nb = 1;//pas ok
}

if($url == "http://")
{
$nb = 2;//vide
}
}
else
{
$nb = 2;//vide
}

//on appel la fonction :
echo <<<END
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>tr</title>
</head>
<body OnLoad="window.top.testeurl('$nb', '$url')">
<br>
</body>
</html>
END;
?>

2
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
5 mai 2009 à 11:10
Je pense que le mieux c'est de dégrossir avec les formats d'images connus parce qu'à part ça...
Je réfléchissais à une possibilité autre comme vérifier le contenu de la page à l'arrivée pour voir s'il 'y a qu'une image, mais ça me semble pire voire peut-être impossible (non c'est pas impossible en fait mais pénible certainement). Au moins vérifier s'il y a du texte, car si l'url a seulement une image ça ira.

Par contre je ne sais pas exactement comment faire.

EDIT : un exemple :
http://www.commentcamarche.net/forum/affich 2098793 javascript lire contenu page web
1
NookZ Messages postés 2138 Date d'inscription jeudi 29 janvier 2009 Statut Membre Dernière intervention 7 mars 2013 514
5 mai 2009 à 10:53
Bonjour,

Soit exclure les .jpg, png, gif etc... ça fait une sacrée liste
Soit inclure que les terminaisons de pages web mais ça fait une sacrée liste aussi :s
0
misterclic66
5 mai 2009 à 11:01
C'est aussi ce que je me suis dit.

Evidemment le mieux serait de n'utoriser que les formats de pages web, mais entre HTML et ses dérivés (dhtml, phtml, ...) PHP et ASP qui ont aussi leurs variantes, ça fait pléthore de formats de fichier
0