注册表没有注册用户

问题描述 投票:0回答:1

我想验证一个注册表格,一旦注册成功,就给客户发送一封电子邮件。我的表单正在验证,但一旦我点击注册按钮,实际上什么都没有发生,我没有收到错误信息,或重定向到登录页面,也没有创建用户。

<?php 

    include_once(session_start());

    $first_name = $_POST['first_name'];
    $last_name = $_POST['last_name'];
    $email = $_POST['email'] ;


    $_SESSION['first_name'] = $first_name;
    $_SESSION['last_name'] = $last_name;
    $_SESSION['email'] = $email;

    if($_SERVER['REQUEST_METHOD'] == 'POST') {
        // redirect back and display error

        if (empty($_POST['email'])) {
            $session_error= 'Please enter your email';
        } elseif ($_POST['email']){

            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                $session_error= 'Invalid Email Format';
            }
        }else{
            $email = test_input($_POST['email']);
        }
        if (empty($_POST['last_name'])) {
            $session_error = 'Last Name should be filled';
        } elseif ($_POST['last_name']) {
            if (!preg_match('/^[a-zA-Z ]+$/', $last_name)) {
                $session_error = 'last Name can only contain letters and white spaces';
            }
        } else {
            $last_name = test_input($_POST['last_name']);
        }

        if (empty($_POST['first_name'])) {
            $session_error = 'First Name should be filled';
        } elseif ($_POST['first_name']) {
            if (!preg_match('/^[a-zA-Z ]+$/', $first_name)) {
                $session_error = 'First Name can only contain letters and white spaces';
            }
        } else {
            $first_name = test_input($_POST['first_name']);
        }

        $_SESSION["error"] = $session_error;

        header("Location: register.php ");
    }else{
        // count all users
        $allUsers = scandir("db/users/");
        $countAllUsers = count($allUsers);
        $newUserId = ($countAllUsers -2) +1;


    // assign ID to the new user
     $userObject =[
    'id' => $newUserId,
    'first_name' => $first_name, 
    'last_name' => $last_name,
    'email' => $email,
    'password' => password_hash($password, PASSWORD_DEFAULT ),  // password hashing

        ];
        // check if user already exists

        // assign the next ID to the new user
        // count($users =>2, next should then be ID 3


        for($counter = 0; $counter < $countAllUsers; $counter++) {
            $currentUser = $allUsers[$counter];

            if($currentUser == $email . ".json"){
                $_SESSION["error"] = "User already exists " . $first_name;
                header("Location: register.php");
                die();
            }

        }

        header("Location: login.php");
    }

    function test_input($data) {
        $data = trim($data);
        $data = stripslashes($data);
    }

我的 register.php:

<body>

    <?php include_once('lib/header.php'); 

    if(isset($_SESSION['loggedIn']) && !empty ($_SESSION['loggedIn'])){
      // redirect to dashboard
      header("Location: dashboard.php");
    }


    ?>
    <h3><strong>Register</strong></h3>

    <form method="POST" action="processRegister.php">
      <p>
      <?php 
    if(isset($_SESSION['error']) && !empty($_SESSION['error'])){
     echo "<span style='color:red'> " . $_SESSION['error'] . "</span>";

     session_destroy();
    }
    ?>
      </p>
    <p>
    <label>First Name</label><br/>
    <input 
    <?php
       if(isset($_SESSION['first_name'])) {
    echo "value=" . $_SESSION['first_name'];
        }
    ?>
    type="text"name="first_name" placeholder="First Name"  /></p>
    <p> <label>Last Name</label><br/>
    <input
    <?php
       if(isset($_SESSION['last_name'])) {
    echo "value=" . $_SESSION['last_name'];
        }
    ?>
    type="text"name="last_name" placeholder="Last Name"  /></p>
    <p> <label>Email</label><br/>
    <input  <?php
       if(isset($_SESSION['email'])) {
    echo "value=" . $_SESSION['email'];
        }
    ?> type="text"name="email" placeholder="Email"  /> </p>
    <p> <label>Password</label><br/>
    <input type="password" name="password" placeholder="Password"  /> </p>

    <p> <button type="submit">Register</button>  </p>

    </form>

    <?php  include('lib/footer.php'); ?>
    </body>
    </html>
php forms validation
1个回答
-1
投票

你必须在你的提交输入元素中添加一个名称属性值,例如。

<input type="submit" name="submit-register" value="Register">

并在你的PHP脚本中验证是否提交已被点击。

if (isset($_POST['submit-register'])) {
    // Do you stuff here
}
© www.soinside.com 2019 - 2024. All rights reserved.