Продолжайте получать НЕ МОЖЕТ ПОСТИТЬ / войти каждый раз, когда я вхожу - PullRequest
0 голосов
/ 17 ноября 2018

Я получил коды из учебника, кажется, работает нормально, пока я не сделал маршрутизаторы, так как я пытаюсь создать сайт электронной коммерции с системой входа в систему.Это мой index.js код

const express = require('express');
const app = express();
const prodRouter = require('./server/routes/prodRouter');
const loginRouter = require('./server/routes/loginRouter');
const regRouter = require('./server/routes/regRouter');
const contRouter = require('./server/routes/contRouter'); 
const checkRouter = require('./server/routes/checkRouter'); 
const profRouter = require('./server/routes/profRouter'); 
const path = require('path'); const port = 3500; 
app.use(express.static('public'));
app.set('views', path.join(__dirname, 'server/views')); 
app.set('viewengine', 'pug'); 
app.use('/prod', prodRouter); 
app.use('/login',loginRouter); 
app.use('/reg', regRouter); 
app.use('/cont',contRouter); 
app.use('/check', checkRouter); 
app.use('/profile',profRouter); 
app.get('/', (req, res) =>{res.render('Home.pug', {}); });     
app.listen(port, (err) => { // arrow function feature from ES6 if(err){ console.log(err); }
console.log(`Listening to port ${port}!`); });

и loginRouter.js

const express = require('express'); const router = express.Router();
const app = express(); 
const mysql = require('mysql'); 
const server = require('http').createServer(app); 
bodyParser = require('body-parser'); 
const connection = mysql.createConnection({
    host: 'localhost',
    database: 'login',
    user: 'root',
    password: '',   
}); 
users = []; connections = [];

router.get('/', (req, res) => {
    res.render('login', {}); 
});

app.use(bodyParser.urlencoded({
    extended: true 
});

app.use(bodyParser.json()); 
connection.connect();


app.post('/', function(req, res){
    var email= req.body.email;
    var password = req.body.password;
    connection.query('SELECT * FROM user WHERE email = ?',[email],function (error, results, fields) {
        if (error) {
        // console.log("error ocurred",error);
            res.send({
                "code":400,
                "failed":"error ocurred"
            })
        }else{
            // console.log('The solution is: ', results);
            if(results.length >0){
                if([0].password == password){
                    return res.redirect('/profile');
                }else{
                    res.send({
                        "code":204,
                        "success":"Email and password does not match"
                    });
                }
            }else{
                res.send({
                    "code":204,
                    "success":"Email does not exits"
                });
            }
        }
    });
enter code here
});
module.exports = router;

моя форма мопса:

form#login-form(method='post')
                  fieldset.input
                    p#login-form-username
                      label(for='modlgn_username') Email
                      input#modlgn_username.inputbox(type='text', name='email', size='18', required)
                    p#login-form-password
                      label(for='modlgn_passwd') Password
                      input#modlgn_passwd.inputbox(type='text', name='password', size='18', required)
                    .remember
                      p#login-form-remember
                        label(for='modlgn_remember')
                          a(href='#') Forget Your Password ?
                      input.button(type='submit', value='Sign In')

Я почти уверен, что что-то сделалчто-то не так с маршрутизатором, потому что каждый раз, когда я вхожу в систему, я продолжаю получать CANNOT POST вместо перехода на страницу профиля.

Любая помощь будет принята с благодарностью.

РЕДАКТИРОВАТЬ: я добавил свой мопскод для формы.

РЕДАКТИРОВАТЬ: проблема возникает, только если страница входа не является главной страницей.

пример:

страница входа> * вход в систему> профиль - нетпроблема

домашняя страница> страница входа> * вход в систему> профиль - ошибка

1 Ответ

0 голосов
/ 17 ноября 2018

Это происходит потому, что у вас нет действия в форме (подробности см. в этой статье ). Если у вас нет действия, форма отправляется на URL, по которому она живет, поэтому, если вы разместите сообщение на своей домашней странице без действия, сообщение перейдет в /home.

.

Измените элемент формы, чтобы он выглядел так:

form#login-form(method='post' action='/login')
...