11550 sujets

JavaScript, DOM et API Web HTML5

bonjour,

je me penche actuellement sur les solutions d'accès par mot de passe à certaines page de mon site, et j'ai trouvé ce petit script java qui me convient très bien (l'utilisateur entre un mot de passe qui correspond en fait au nom de la page à afficher) :

dans le module Smiley head

<script LANGUAGE="JavaScript">
<!-- debut du script
function checkPswd(ext) {
if ((document.pswdForm.pswd.value == null) || (document.pswdForm.pswd.value == ''))
    alert('Mot de passe invalide.');
  else this.location.href = document.pswdForm.pswd.value + ext;
}
// fin du script -->
</script>

puis dans le module Smiley body

<form NAME="pswdForm">
<input TYPE="password" NAME="pswd" SIZE="15">  
<input TYPE="button" VALUE="VALIDER" onClick="checkPswd('.htm')">
</form>

Je sais qu'il y a nettement mieux en matière de protection de pages (codes htaccess ou php) mais je répète que ce script me convient très bien, si ce n'est que lorsque le mot de passe est erroné, et donc que la page *.htm correspondant au mdp n'existe pas, l'utilisateur tombe sur une page d'erreur ("page non trouvée" avec FF ou "page inexistante" sous IE) et je voudrais éviter cela;

le script ci-dessus teste si le champ de saisi du mdp est vide ou non et renvoi un message à l'utilisateur; je voudrais donc l'adapter afin qu'il teste si la page existe lorsque l'utilisateur valide son mot de passe, et si ce n'est pas le cas qu'il affiche une message à l'utilisateur (si c'est possible de mettre les 2 conditions ce serait encore mieux ?)

Je pense que cela doit être possible, mais comme je ne suis pas expert en javascript je n'ai pas réussi jusqu'à présent, et je vous remercie d'avance pour votre aide
Modifié par mr bean (30 Apr 2007 - 15:10)
En utilisant XMLHttpRequest tu devrais pouvoir y parvenir.

Exemple rapide non testé :

function testOpen (url) {
var xhr = (window.XMLHttpRequest? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP"));

xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.responseCode == 200) document.location=url;
else alert("Mdp invalide");
}};

xhr.open("GET", url, true);
}
merci, je vais essayer de tester ça (comme je suis pas au boulot, j'ai pas Frontpage sur mon ordi à la maison)

de mon côté j'avais pensé - je ne sais pas si ça peut être réalisé en JS - à une instruction qui traiterait l'url de la page cible comme une valeur booléenne (vrai = la page existe; faux = contraire) puis une instruction if ... else pour traiter les 2 cas de figure; mais tout ceci est-il concevable et rélisable en JS ? je connais trop peu les instructions JS pour traduire tout cela sur le papier (ou plutôt sur l'écran)

en tout cas encore merci pour ton aide
Modifié par mr bean (30 Apr 2007 - 22:22)