Итак, у меня есть веб-сервер, который отправляет HTML в соответствии с пользовательскими значениями.У меня есть небольшой обработчик, который считывает существующий файл (содержит пароли) и позволяет пользователю войти. Я не работаю, но с некоторой вероятностью.то есть иногда это будет работать, иногда это не будет.
Snip-it, который будет работать каждый раз:
app.all('/acceptForm',function(req,res){
if (req.method === 'POST') {
let body = '';
var match = 0;
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
//get the uid to compare later on in the program
uid = parse(body).uid_text;
//read the UID file.
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream(__dirname+'/uid.txt')
...
// write the other information to a file which would be later on re -opened again to read the things again
which have the file name of the 'uid'
firstname = parse(body).first_name;
lastname = parse(body).last_name;
mothername = parse(body).mother_name;
fathername = parse(body).father_name;
email = parse(body).email;
profession = parse(body).profession_text;
gender = parse(body).gender;
language = parse(body).lang_0;
married = parse(body).married;
birthday = parse(body).dateofbirth;
//write the UID and other things to the text file
console.log(language);
var fileContent = uid +'|' + firstname +'|'+ lastname +'|' + mothername +'|' + fathername +'|' + email+'|' + profession+'|' + gender+'|' + married+'|' +birthday + '|';
var filepath = __dirname+"/users/"+uid + ".txt";
fs.writeFile(filepath, fileContent, (err)
...
lineReader.on('line', function (line) {
if(line == uid) {
// if the uid is found...
res.cookie('name',uid, {signed: true}); //write the uid as a cookie back
res.sendFile(__dirname+'/CE/ENG/Kids.html');
} else{
//some failure message
}
});
});
}
}
Проблема в том, что как только пользователь отправляет это, он изменяется в другой файл, и сервер теряет связь с клиентом.Чтобы противодействовать тому, что я добавил ту же систему с файлами cookie. Теперь существует и риск для безопасности, который имеет гораздо больше рисков.
обработка ответа от файла kids.html, который хранится в другом файле .... (Имееточень низкая вероятность того, что он успешно работает).
app.all('/return',function(req,res){
if (req.method === 'POST') {
//read the UID file.
var lineReader = require('readline').createInterface({
input: require('fs').createReadStream(__dirname+'/uid.txt')
});
//Handling the information from the client.
lineReader.on('line', function (line) {
if(line == req.signedCookies['name']) {
//uid matches with the database
fs.readdir( __dirname+"/users/", (err, files) => {
files.forEach(file => {
if(file == req.signedCookies['name'] + ".txt"){
let questiondata = '';
req.on('data', chunk => {
questiondata += chunk.toString();
});
req.on('end', () => {
var cleaneddata = questiondata.split('%2C'); //%2C is a spliting term {array}
cleaneddata.splice(0,1);
//add the question data to another file
fs.appendFile( __dirname+"/users/" + req.signedCookies['name'] + ".txt",cleaneddata.toString() + "\r\n", function (err) { //writes inside the temp file for the questions
if (err) throw err;
fs.createReadStream( __dirname+"/users/" + req.signedCookies['name'] + ".txt").pipe(fs.createWriteStream( __dirname+'/users.txt', {flags: 'a'}));
fs.unlink( __dirname+"/users/"+ req.signedCookies['name'] + ".txt",function(err){
if(err) return console.log(err);
res.clearCookie("name");
});
});
});
}
});
})
}