首页 > 解决方案 > 提交时表单无法继续

问题描述

我有一个登录表单(index.php),允许学生访问他们的门户,然后检查学生的注册号和密码是否已插入(login.php)并进入一个类(StudentLogin.php),然后允许如果所有凭据都与数据库中的凭据匹配,则学生可以访问他们的门户。输入正确的凭据后,该过程不会进入 stud_page.php .....我将不胜感激任何帮助,因为我不明白发生了什么。

下面是 index.php:

<?php
//Start session
if(!isset($_SESSION)) { session_start(); }

unset($_SESSION['ID']);
unset($_SESSION['REG_NUM']);
?>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Portal System</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
    <link rel="stylesheet" href="static/css/bootstrap.min.css">
    <link rel="stylesheet" href="static/css/style.css">
    <!-- <link rel="stylesheet" href="static/css/style.css"/> -->

</head>
<body>

<!-- Header -->
<nav class="navbar navbar-fixed-top" style="background-color: green;" role="navigation">
    <div class="container">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="index.php">portal</a>
        </div>

    </div><!-- /.container-fluid -->
</nav>
<!-- End Header -->



<div class="background">
  <div class="container">
    <div class="jumbotron bg-success text-warning">
      <h1 class="text-center">portal</h1>
      <h3 class="text-center"> Welcome to The Portal.</h3>
    </div>
  </div>

<div class="container">
    <div class="row">
        <div class="col-md-4 col-sm-offset-4">
            <div class="login-con">
                <h3>Student Log-in</h3><hr>
                <?php
                if(isset($_SESSION['ERROR_MSG_ARRAY']) && is_array($_SESSION['ERROR_MSG_ARRAY']) && COUNT($_SESSION['ERROR_MSG_ARRAY']) > 0) {
                    foreach($_SESSION['ERROR_MSG_ARRAY'] as $msg) {
                        echo "<div class='alert alert-danger'>";
                        echo $msg;
                        echo "</div>";
                    }
                    unset($_SESSION['ERROR_MSG_ARRAY']);
                }
                ?>
                <form action="process/login.php"  method="POST" role="form">
                    <div class="form-group has-warning has-feedback">
                        <label for="reg_num">Registration Number</label>
                        <input type="text" name="reg_num" id="reg_num" class="form-control" autocomplete="off" placeholder="Registration Number">
                        <span class="glyphicon glyphicon-user form-control-feedback"></span>
                    </div>
                    <div class="form-group has-warning has-feedback">
                        <label>Password</label>
                        <input id="password" type="password" autocomplete="off" class="form-control" placeholder="Password" name="password">
                        <span class="glyphicon glyphicon-lock form-control-feedback"></span>
                    </div>
                        <button type="submit" onclick="showSomeMessage()" name="submit" class="btn btn-info">Submit</button>
                </form>
            </div>
        </div>
    </div>
</div>
</div>

login.php 如下:

      <?php

    require("../admin/database.php");
    require("../class/StudentLogin.php");

    if(isset($_POST['submit'])){
      $regnum = trim($_POST['regnumber']);
      $password = trim($_POST['password']);

      $loginStud = new StudentLogin($reg_num, $password);
      $rtnlogin = $loginStud->Studlogin();
    }

    $conn->close();

    ?>

Then the StudentLogin class is:

    <?php

class StudentLogin
{
  private $_regnumber;
  private $_password;

  public function __construct($c_reg_num, $c_password){
    $this->_regnumber = $c_reg_num;
    $this->_password = $c_password;
  }

  public function StudLogin(){
    global $conn;
    //  starting session
    session_start();
     // valiidate errors
    $error_msg_array = array();
    // error msg
    $error_msg = FALSE;

    if($this->_reg_num == ""){
      $error_msg_array[] = "Please input your Registration Number";
      $error_msg = TRUE;
    }
    if($this->_password == ""){
      $error_msg_array[] = "Please input your password";
      $error_msg = TRUE;
    }
    if($error_msg){
      $_SESSION['ERROR_MSG_ARR'] = $error_msg_array;
      header("location: http://localhost/project/index.php");
      exit();
    }
    $sql = "SELECT * FROM students WHERE regnumber ='$reg_num' AND password ='$password' LIMIT 1";
    if(!$stmt = $conn->prepare($sql)){
      echo $stmt->error;
    } else {
      $stmt->bind_param("ss", $this->_reg_num, $this->_password);
      $stmt->execute();
      $result = $stmt->get_result();
    }
    if($result->num_rows > 0) {
       // login successful
      $row = $result->fetch_assoc();

      // session creation
      session_regenerate_id();
      $_SESSION['reg_num'] = $row["regnunmber"];
      $_SESSION['name'] = $row["name"];
      session_write_close();
      header("location: http://localhost/project/stud_page.php");

    } else {
       // Login failed
      $error_msg_array[] = "The Registration Number and Password you entered is incorrect.";
      $error_msg = TRUE;
      if($error_msg) {
        $_SESSION['ERROR_MSG_ARR'] = $error_msg_array;
        header("location: http://localhost/project/index.php");
        exit();
      }
      $stmt->free_result();
    }
    $result->free();
    return $result;
  }
}
?>

MySQL 数据库,表students包含以下列:

$sql="INSERT INTO `students`(`name`, `education`, `regnumber`, `nationality`, `gender`, `phone`, `photo`, `branch`,`password`)
                  VALUES ('$name','$education','$reg_num','$nationality','$gender','$phone','$target_file','$branch','$ency_pass')";

标签: phphtml

解决方案


您对 login.php 进行了验证,在发送表单之前未加载该文件。如果可以的话,我会推荐你​​使用 dibi,因为这种使用数据库的方法不正确,如果你要在生产中使用它可能会导致一些问题 https://dibiphp.com/en/


推荐阅读