У меня есть немного смешная проблема, и я уверен, что другие здесь найдут легко решить. Мне нужно хэш всей строки запроса, а затем включить это значение хеша в данные сообщения.Javascript post data order
После того, как вы попробуете несколько других способов, я пытаюсь сделать это с помощью javascript. Каким-то образом кажется, что порядок, в котором цепочка вытягивается из формы для хэширования, отличается от того, как она сжимается во время ее отправки.
Я исключаю скрытый элемент с определенным классом, чтобы создать строку запроса, которая должна быть хеширована, а затем установить этот скрытый элемент с хэш-значением перед окончательной отправкой.
Любая идея, что я могу сделать неправильно, или как я могу гарантировать, что порядок элементов одинаковый как при построении строки, так и в представлении?
Соответствующий фрагмент кода:
var allFormDat = document.getElementById("frmPayment").elements;
var hashingString ='';
var hashVal;
for (i=0;i<allFormDat.length;i++) {
if (allFormDat[i].className!="nohash"){
hashingString+=allFormDat[i].name+'='+allFormDat[i].value+'&';
}
}
hashingString.substring(0, hashingString.length - 1);
hashingString += '[salt]';
hashVal=SHA1(hashingString);
frm.hashValue.value=hashVal;
document.getElementById('frmPayment').submit();
Можете ли вы подробно рассказать о каких (запутывающих) результатах, которые вы видите? Кроме того, пока вы на нем, вы можете легко добавить проверку в цикле, чтобы 'if (i === length - 1)' вы не добавляете '&'; таким образом вам не придется вынимать его из строки, когда вы закончите. –
Конечно, две основные вещи, я думаю. Когда я удаляю данные сообщения, хеш-значение находится в середине строки (в то время как скрытый элемент находится в самом конце представленной формы), а значение хэша не совпадает, когда я беру эти данные и sha1 его внешне .. – bjm
Ах, спасибо за идею на чеке. Это чувствовалось ужасно kludgy .. – bjm