繁体   English   中英

NodeJS - expressJS - req.body 只得到一个变量

[英]NodeJS - expressJS - req.body only get one variable

我正在尝试创建登录和注册页面,登录页面可以正确获取所有变量,而注册仅出于某种原因传输密码。

应用程序.JS:

var express = require("express");
var app = express();
var bodyParser = require("body-parser");

// configure the app to use bodyParser()
app.use(bodyParser.urlencoded({extended: true,}));
app.use(bodyParser.json());
const port = process.env.PORT || 5555;
const usersSignup = [];
const { Client } = require("pg");

//Create static files
app.use(express.static(__dirname));

app.post("/sign-in", function (req, res) {
  let email = req.body.email;
  let pass = req.body.psw;


  index = usersSignup.findIndex((x) => x.user === email && x.pass === pass);
  if (index != -1) {
    if (email == "Admin@g.com" && pass == "Admin") {
      res.redirect("/contact");
    }
    res.send(
      `Welcome!` + JSON.stringify(email) + "Password:" + JSON.stringify(pass)
    );
    console.log("Hello");
  } else {
    res.send("User not found");
    console.log("User not found");
  }
});

app.post("/sign-up", function (req, res) {
  console.log(req.body);
  var Fname = req.body.firstName;
  var Lname = req.body.lastName;
  var pass = req.body.Password;
  var email = req.body.email;
  var pCode = req.body.promoCode;

  con.query("select * from users where email=$1", [email], (err, res) => {
    var result = JSON.stringify(res.rows[1]);
    if (result != null) {
      console.log("User exists");
    } else {
      con.query(
        "INSERT INTO users (Name,FamilyName,Email,PromoCode,Password) values($1,$2,$3,$4,$5)",
        [Fname, Lname, email, pass, pCode]
      );
    }
  });

注册表单- req.body 只获取密码(psw),没有别的......我试图禁用模式但同样的问题。 相关的 function 用于检查两个密码是否相同并检查密码限制(6 位数字、大写等...)

       <form method="POST" action="sign-up">
                            <div class="form-group row">
                                <div class="col-sm-6 mb-3 mb-sm-0">
                                    <input type="text" class="form-control form-control-user" id="firstName"
                                        placeholder="First Name">
                                </div>
                                <div class="col-sm-6">
                                    <input type="text" class="form-control form-control-user" id="lastName"
                                        placeholder="Last Name">
                                </div>
                            </div>
                            <div class="form-group">
                                <input type="email" class="form-control form-control-user" id="email"
                                    placeholder="Email Address">
                            </div>
                            <div class="form-group row">
                                <div class="col-sm-6 mb-3 mb-sm-0">
                                    <input type="password" onclick="validFunc()" class="form-control" id="Password"
                                        name="psw" placeholder="Password" required>
                                </div>
                                <div class="col-sm-6">
                                    <input type="password" class="form-control form-control-user" id="RePassword"
                                        placeholder="Repeat Password">
                                </div>

                            </div>
                            <div class="form-group">
                                <input type="test" class="form-control form-control-user" id="promoCode"
                                    placeholder="Promo Code">
                            </div><br>
                            <button type="button" onclick="displayForm()" class="btn btn-primary" data-toggle="modal"
                                data-target="#ModalMessage">Sign Up</button>
                            <div class="signUp"><br>
                                <hr>

                                <p><b>Already have an account? <a href="/sign-in">Sign In</a></b></p>
                            </div>
                            <!-- Modal -->
                            <div class="modal fade" id="ModalMessage" tabindex="-1" role="dialog"
                                aria-labelledby="ModalMessageLabel" aria-hidden="true">
                                <div class="modal-dialog" role="document">
                                    <div class="modal-content">
                                        <div class="modal-header">
                                            <h5 class="modal-title" id="ModalMessageLabel">Check details</h5>
                                            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                                <span aria-hidden="true">&times;</span>
                                            </button>
                                        </div>
                                        <div class="modal-body" id="MBody">
                                            Please review the details and confirm:
                                            <p id="message"></p>
                                        </div>
                                        <div class="modal-footer">
                                            <button type="button" class="btn btn-secondary"
                                                data-dismiss="modal">Cancel</button>
                                            <button type="submit" class="btn btn-primary"
                                                onclick="sendMail()">Confirm</button>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <!-- End Modal -->
                        </form>

登录表单(工作正常) - 所有数据都像它应该的那样。

              <form method="POST" action="sign-in">
                            <div class="input-group mb-3">
                                <div class="input-group-prepend">
                                    <span class="input-group-text" id="basic-addon1"><img
                                            src="/style/outline_account_box_black_18dp.png" alt=""></span>
                                </div>
                                <input type="email" class="form-control" id="email" name="email"
                                    placeholder="Enter email" required>
                            </div>
                            <div class="input-group mb-3">
                                <div class="input-group-prepend">
                                    <span class="input-group-text" id="basic-addon1"><img
                                            src="/style/outline_lock_black_18dp.png" alt=""></span>
                                </div>
                                <input type="password" onclick="validFunc()" class="form-control" id="Password"
                                    name="psw" placeholder="Password" title=" Must contain at least one number and one uppercase and lowercase letter and one special
                    char, and at least 6 or more characters" required>
                            </div>
                            <div class="g-recaptcha" data-sitekey="6LeryQAaAAAAACtRGmnGbDekQjszQXzXrH858eJe"></div><br>
                            <button type="submit" class="btn btn-primary" onclick="return alerts()">Log In</button>
                            <div class="sign-up"><br>
                                <hr>
                                <p><b>Need an account? <a href="/sign-up">Sign Up</a></b></p>
                            </div>
                        </form>

您没有为注册设置名称属性!

<form method="POST" action="sign-up">
                            <div class="form-group row">
                                <div class="col-sm-6 mb-3 mb-sm-0">
                                    <input type="text" class="form-control form-control-user" id="firstName" name="firstName"
                                        placeholder="First Name">
                                </div>
                                <div class="col-sm-6">
                                    <input type="text" class="form-control form-control-user" id="lastName" name="lastName"
                                        placeholder="Last Name">
                                </div>
                            </div>
                            <div class="form-group">
                                <input type="email" class="form-control form-control-user" id="email" name="email"
                                    placeholder="Email Address">
                            </div>
                            <div class="form-group row">
                                <div class="col-sm-6 mb-3 mb-sm-0">
                                    <input type="password" onclick="validFunc()" class="form-control" id="Password"
                                        name="psw" placeholder="Password" required>
                                </div>
                                <div class="col-sm-6">
                                    <input type="password" class="form-control form-control-user" id="RePassword" name="RePassword"
                                        placeholder="Repeat Password">
                                </div>

                            </div>
                            <div class="form-group">
                                <input type="test" class="form-control form-control-user" id="promoCode" name="promoCode"
                                    placeholder="Promo Code">
                            </div><br>
                            <button type="button" onclick="displayForm()" class="btn btn-primary" data-toggle="modal"
                                data-target="#ModalMessage">Sign Up</button>
                            <div class="signUp"><br>
                                <hr>

                                <p><b>Already have an account? <a href="/sign-in">Sign In</a></b></p>
                            </div>
                            <!-- Modal -->
                            <div class="modal fade" id="ModalMessage" tabindex="-1" role="dialog"
                                aria-labelledby="ModalMessageLabel" aria-hidden="true">
                                <div class="modal-dialog" role="document">
                                    <div class="modal-content">
                                        <div class="modal-header">
                                            <h5 class="modal-title" id="ModalMessageLabel">Check details</h5>
                                            <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                                                <span aria-hidden="true">&times;</span>
                                            </button>
                                        </div>
                                        <div class="modal-body" id="MBody">
                                            Please review the details and confirm:
                                            <p id="message"></p>
                                        </div>
                                        <div class="modal-footer">
                                            <button type="button" class="btn btn-secondary"
                                                data-dismiss="modal">Cancel</button>
                                            <button type="submit" class="btn btn-primary"
                                                onclick="sendMail()">Confirm</button>
                                        </div>
                                    </div>
                                </div>
                            </div>
                            <!-- End Modal -->
                        </form>

您忘记了name属性

<input type="text" class="form-control form-control-user" id="firstName"
                                        placeholder="First Name">

应该

<input type="text" class="form-control form-control-user" id="firstName" name="firstName"
                                        placeholder="First Name">

HTML forms 使用name发送数据,而不是id

对所有输入执行此操作,您也在 HTML 上写了name="psw"但在服务器部分执行req.body.Password ,您也需要更正此问题。

固定 HTML:

    <form method="POST" action="sign-up">
        <div class="form-group row">
            <div class="col-sm-6 mb-3 mb-sm-0">
                <input type="text" class="form-control form-control-user" id="firstName" name="firstName"
                placeholder="First Name">
            </div>
            <div class="col-sm-6">
                <input type="text" class="form-control form-control-user" id="lastName" name="lastName"
                placeholder="Last Name">
            </div>
        </div>
        <div class="form-group">
            <input type="email" class="form-control form-control-user" id="email" name="email"
            placeholder="Email Address">
        </div>
        <div class="form-group row">
            <div class="col-sm-6 mb-3 mb-sm-0">
                <input type="password" onclick="validFunc()" class="form-control" id="Password" name="Password"
                placeholder="Password" required>
            </div>
            <div class="col-sm-6">
                <input type="password" class="form-control form-control-user" id="RePassword"
                placeholder="Repeat Password">
            </div>

        </div>
        <div class="form-group">
            <input type="test" class="form-control form-control-user" id="promoCode" name="promoCode"
            placeholder="Promo Code">
        </div><br>
        <button type="button" onclick="displayForm()" class="btn btn-primary" data-toggle="modal"
        data-target="#ModalMessage">Sign Up</button>
        <div class="signUp"><br>
            <hr>

            <p><b>Already have an account? <a href="/sign-in">Sign In</a></b></p>
        </div>
        <!-- Modal -->
        <div class="modal fade" id="ModalMessage" tabindex="-1" role="dialog"
        aria-labelledby="ModalMessageLabel" aria-hidden="true">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <h5 class="modal-title" id="ModalMessageLabel">Check details</h5>
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                            <span aria-hidden="true">&times;</span>
                        </button>
                    </div>
                    <div class="modal-body" id="MBody">
                        Please review the details and confirm:
                        <p id="message"></p>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-secondary"
                        data-dismiss="modal">Cancel</button>
                        <button type="submit" class="btn btn-primary"
                        onclick="sendMail()">Confirm</button>
                    </div>
                </div>
            </div>
        </div>
        <!-- End Modal -->
</form>

您可以发布您用于密码onClickvalidFunc()的内容,以及表单提交时使用的displayForm()的内容吗? 我怀疑缺少的字段以某种方式在您的内容检查代码中undefined

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM