У меня есть сценарий бэкэнда для аутентификации регистрации и попыток входа в систему. По сути, имя пользователя, введенное пользователем, хэша-эм-адреса и хэша-пассовое слово написана в строке таблицы в базе данных веб-приложения. В этой строке также есть записи для строки идентификатора подтверждения (также хешированное электронное письмо) плюс булевые (как значения Tinyint (1)) для статуса подтверждения пользователя и подтверждения владельца. /> Ниже приведен код запроса: < /p>
query = "INSERT INTO users (user, hemail, hpassword, confirmid, owner_confirm, user_confirm)" // Insert new unconfirmed user into users table ...
+ "VALUES ('" + user + "','" + hemail + "','" + hpassword + "','" + confirmid + "', 0, 0);"
+ "SELECT * FROM users WHERE user='" + user + "';";
< /code>
Следующий код исходит из соответствующего обратного вызова при вышеуказанном запросе MySQL, который выполняет проверку в записях вставленной строки. Если и только если все записи будут такими же задумальными, будет отправлено электронное письмо с подтверждением пользователю. В противном случае регистрация будет считаться неудачей. < /P>
if (mode === 'reg')
{ // Double query, i.e. INSERT & SELECT *
// ... so use first row of second array within result ...
if (result[1][0]['user'] === user && result[1][0]['hemail'] === hemail
&& result[1][0]['hpassword'] === hpassword && result[1][0].confirmid === confirmid // ... i.e. result[1][0]
&& result[1][0]['owner_confirm'] == 0 && result[1][0]['user_confirm'] == 0)
{
sendConfirmEmail(email);
message = "Registration entered, awaits confirmation";
}
else
{
console.log('user' + " is: " + result[1][0]['user']);
console.log('hemail' + " is: " + result[1][0]['hemail']);
console.log('hpassword' + " is: " + result[1][0]['hpassword']);
console.log('confirmid' + " is: " + result[1][0]['confirmid']);
console.log('owner_confirm' + " is: " + result[1][0]['owner_confirm']);
console.log("user_confirm" + " is: " + result[1][0]['user_confirm']);
message = "Registration fail";
}
}
< /code>
Приведенный выше код всегда видит, что попытка регистрации не удастся, даже если все данные ввода и бэкэнд правильно введены в таблицу пользователей базы данных. Журналы тестовой консоли на всех записях строк показывают, что причина, по -видимому, заключается в двух столбцах Tinyint (1)......
.....
hemail is: 72348c9357a1e85bdd979e4b9a53b32d3be0c40ad789872f6b7ab5fa1814c08a
hpassword is: 4c8a4792ccf31eee3794b8dc084254fa3b049a6a9c266960f95da694946b1b28
confirmid is: 72348c9357a1e85bdd979e4b9a53b32d3be0c40ad789872f6b7ab5fa1814c08a
owner_confirm is:
user_confirm is:
authSubmitCallback message: Registration fail
dbCallback response: Registration fail
In xhrCallback now ...
Message: Registration fail
Sent back response: Registration fail
По сути, ничего не читается для результата [1] [0] ['antuctor_confirm'] и result [1] [0] ['user_confirm'] .
Что здесь делается неправильно?
У меня есть сценарий бэкэнда для аутентификации регистрации и попыток входа в систему. По сути, имя пользователя, введенное пользователем, хэша-эм-адреса и хэша-пассовое слово написана в строке таблицы в базе данных веб-приложения. В этой строке также есть записи для строки идентификатора подтверждения (также хешированное электронное письмо) плюс булевые (как значения Tinyint (1)) для статуса подтверждения пользователя и подтверждения владельца. /> Ниже приведен код запроса: < /p> [code]query = "INSERT INTO users (user, hemail, hpassword, confirmid, owner_confirm, user_confirm)" // Insert new unconfirmed user into users table ... + "VALUES ('" + user + "','" + hemail + "','" + hpassword + "','" + confirmid + "', 0, 0);" + "SELECT * FROM users WHERE user='" + user + "';"; < /code> Следующий код исходит из соответствующего обратного вызова при вышеуказанном запросе MySQL, который выполняет проверку в записях вставленной строки. Если и только если все записи будут такими же задумальными, будет отправлено электронное письмо с подтверждением пользователю. В противном случае регистрация будет считаться неудачей. < /P> if (mode === 'reg') { // Double query, i.e. INSERT & SELECT * // ... so use first row of second array within result ... if (result[1][0]['user'] === user && result[1][0]['hemail'] === hemail && result[1][0]['hpassword'] === hpassword && result[1][0].confirmid === confirmid // ... i.e. result[1][0] && result[1][0]['owner_confirm'] == 0 && result[1][0]['user_confirm'] == 0) { sendConfirmEmail(email); message = "Registration entered, awaits confirmation"; } else { console.log('user' + " is: " + result[1][0]['user']); console.log('hemail' + " is: " + result[1][0]['hemail']); console.log('hpassword' + " is: " + result[1][0]['hpassword']); console.log('confirmid' + " is: " + result[1][0]['confirmid']); console.log('owner_confirm' + " is: " + result[1][0]['owner_confirm']); console.log("user_confirm" + " is: " + result[1][0]['user_confirm']); message = "Registration fail"; } } < /code> Приведенный выше код всегда видит, что попытка регистрации не удастся, даже если все данные ввода и бэкэнд правильно введены в таблицу пользователей базы данных. Журналы тестовой консоли на всех записях строк показывают, что причина, по -видимому, заключается в двух столбцах Tinyint (1)...... ..... hemail is: 72348c9357a1e85bdd979e4b9a53b32d3be0c40ad789872f6b7ab5fa1814c08a hpassword is: 4c8a4792ccf31eee3794b8dc084254fa3b049a6a9c266960f95da694946b1b28 confirmid is: 72348c9357a1e85bdd979e4b9a53b32d3be0c40ad789872f6b7ab5fa1814c08a owner_confirm is: user_confirm is: authSubmitCallback message: Registration fail dbCallback response: Registration fail In xhrCallback now ... Message: Registration fail Sent back response: Registration fail [/code] По сути, ничего не читается для результата [1] [0] ['antuctor_confirm'] и result [1] [0] ['user_confirm'] . Что здесь делается неправильно?