Я пишу функцию JavaScript, которая должна поддерживать три свойства:
- быть очень маленьким и легким - без внешних библиотек
- кодирует строку таким образом, чтобывозможность передачи в качестве параметра GET
- эта строка должна быть снова декодирована в месте назначения
По сути, она аутентифицирует пользователя, отправляя его имя пользователя и пароль на страницу PHP, котораязатем проверяет это.Это делается с помощью GET , потому что я еще не нашел способ сделать фоновый междоменный запрос POST.Проблема в том, что если у пользователя есть символ, такой как «#» или аналогичный, в его пароле, он не будет отправлен должным образом.
В настоящее время, чтобы избежать этого, я encode()
строка пароля перед отправкой, что позволяет получить его без проблем.Тем не менее, я прочитал, что PHP urldecode()
не является идеальным аналогом для этого, так как есть угловые случаи, которые рассматриваются по-разному (то есть '', '+' и т. Д.).К сожалению, я больше не могу найти этот документ, поэтому я не могу процитировать его, но суть в том, что один из них преобразует пробелы в знаки «+», которые другие воспринимают как действительный знак плюс или что-то в этом роде ...
Поэтому я ищу функцию Javascript, которая может взять строку и сделать ее URL-безопасной, и которая имеет идеальную функцию обращения в PHP, чтобы можно было восстановить исходную строку.
Возможно, ужасный код, который я сейчас использую для достижения этой цели:
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;
};