0

Data can be saved into the database when i sign up for the first time. But when I want to sign up for a second account, the error appears "Database error: failed to register".

After deleting the data (the first account that i registered) directly from phpmyadmin, data can be saved again. However, the error appears again when i want to sign up for a second account.

I am not really sure what is causing the problem here.

authController.php

<?php
session_start();
require 'config/db.php'; 

$errors = array();
$username = "";
$email = "";
$contact = "";
$hostel = "";

//when user clicks sign up button
if (isset($_POST['signup-btn'])) {

    $username = $_POST['username'];
    $email = $_POST['email'];
    $contact = $_POST['contact'];
    $hostel = $_POST['hostel'];
    $password = $_POST['password'];
    $passwordConf = $_POST['passwordConf'];

    if (count($errors) === 0){
        $password = password_hash($password, PASSWORD_DEFAULT);  
        $verified = false;
        $sql = "INSERT INTO users (username, email, contact, hostel, verified, token, password) VALUES (?, ?, ?, ?, ?, ?, ?)";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param('ssssdss', $username, $email, $contact, $hostel, $verified, $token, $password);

        if ($stmt->execute()) {
            $user_id = $conn->insert_id;
            $_SESSION['id'] = $user_id;
            $_SESSION['username'] = $username;
            $_SESSION['email'] = $email;
            $_SESSION['contact'] = $contact;
            $_SESSION['hostel'] = $hostel;
            $_SESSION['verified'] = $verified;
            $_SESSION['message'] = "You are now logged in!";
            $_SESSION['alert-class'] = "alert-success";
            header('location: verify.php');
            exit();

        } else {
            $errors['db_error'] = "Database error: failed to register";
        }
    }
}
?>

db.php

<?php

define ('DB_HOST', 'localhost');
define ('DB_USER', 'root');
define ('DB_PASS', '');
define ('DB_NAME', 'user-verification');

$conn = new mysqli(DB_HOST,DB_USER,DB_PASS,DB_NAME);

//if connection failed
if ($conn->connect_error){
    die('Database error:' . $conn->connect_error);
}
echo "Connected successfully";

?>

signup.php

<div class="signup-form">
    <form action="signup.php" method="post">        
      <h1 class="text-center"><b>Create Account</b></h1>

     <?php if (count($errors) > 0): ?>
      <div class="alert alert-danger">
       <?php foreach($errors as $error): ?>       
        <li><?php echo $error; ?></li>
        <?php endforeach; ?>
              </div>
        <?php endif; ?>

      <div class="form-group"> 
        <input type="text" name="username" placeholder="Name" value="<?php echo $username; ?>"> 
      </div>

      <div class="form-group">
        <input type="email" name="email" placeholder="example@student.usm.my" value="<?php echo $email; ?>">
      </div>

      <div class="form-group">
        <input type="tel" name="contact" placeholder="Contact Number e.g. 0121234567" value="<?php echo $contact; ?>">
      </div>

      <div class="form-group">
          <select class="hostel" name="hostel" value="<?php echo $hostel; ?>">
            <option selected hidden>Choose your Hostel</option>
            <option value="alpha">Aplha</option>
            <option value="omega">Omega</option>
          </select>
      </div>

      <div class="form-group">
        <input type="password" name="passwordConf" placeholder="Confirm password"> 
      </div>

      <div class="form-group">
        <button type="submit" name="signup-btn" class="btn btn-primary btn-block btn-sign-in">Create Account</button:sumbit>
      </div>

      <p class="text-center">Already joined?<a href="login.php"> Sign in</a></p>
    </form>
  </div>
Phil
  • 157,677
  • 23
  • 242
  • 245
NatanataC
  • 3
  • 1
  • 3

0 Answers0