J'écris une fonction JavaScript qui doit respecter trois propriétés:entrée utilisateur encodage en tant que paramètre URL GET JavaScript
- très petit et léger - pas de bibliothèques externes
- encode une chaîne telle une de manière à pouvoir être transmis en tant que paramètre GET
- cette chaîne doit être décodé à nouveau à destination
efficacement, il authentifie l'utilisateur en envoyant son nom d'utilisateur et p assword à une page PHP qui le vérifie ensuite. Ceci est fait via GET parce que je n'ai pas encore trouvé un moyen de faire une requête POST interdomaine de fond. Le problème est que si l'utilisateur a un caractère tel que "#" ou similaire dans son mot de passe, il n'est pas envoyé correctement.
Actuellement pour éviter cela, je encode()
la chaîne de mot de passe avant de l'envoyer, ce qui lui permet d'être reçu sans problèmes. Cependant, j'ai lu que urldecode()
de PHP n'est pas un analogue parfait pour ceci, car il y a des cas d'angle qui sont traités différemment (c'est-à-dire '', '+', etc.). Malheureusement, je ne peux plus trouver ce document, donc je ne peux pas le citer, mais l'essentiel était que l'un d'eux convertit les espaces en signes '+', que l'autre traite comme un signe plus ou plus ...
En tant que tel, je suis à la recherche d'une fonction Javascript qui peut prendre une chaîne et la rendre sûre pour les URL, et qui a une fonction d'inversion parfaite en PHP pour que la chaîne d'origine puisse être récupérée.
Le code sans doute pire que j'utilise actuellement pour y parvenir:
login.onsubmit = function(){
loginFailMsg.style.display = 'none';
var inputs = login.getElementsByTagName('input');
var formdata =
'username='+inputs[0].value+'&password='+encode(inputs[1].value);
submit.src = formtarget+'/auth/bklt?'+formdata;
userinfo = undefined;
setTimeout(getUserinfo,300);
return false;
};
Maintenant que vous avez mentionné qu'il y a une très bonne raison pour GET, pourquoi ne pas supprimer cette phrase et simplement partager cette raison avec nous? Curieuse! – Arjan
Et, il y a trop de bruit dans votre question!Si vous ne voulez pas MD5 (comme vous avez commenté à la réponse de Karl), alors pourquoi le mentionner, et pourquoi ne pas supprimer l'ensemble du hachage du titre? – Arjan
@Arjan: Toutes mes excuses pour le bruit, je ne suis pas très doué pour m'exprimer moi-même = P J'adorerais md5 si je pouvais l'utiliser, mais ce dont j'ai vraiment besoin, c'est quelque chose de construit en javascript. – Mala