Membuat Form Pendaftaran dengan PHP MySQL

PlajariKode - Banner Form Pendaftaran

PlajariKode - Membuat Form Pendaftaran sederhana dengan PHP dan MySQL.

Dalam contoh ini kita menggunakan konsep PBO, formulir pendaftaran berisi kolom Username, Password, Confirm Password, E-mail dan Nama Lengkap

Kolom Confirm Password digunakan untuk mengecek kecocokan dengan kolom Password yang kemudian akan dicek pada saat validasi disisi server (server-side).

Dengan mengirimkan formulir ini, pendaftar diharapkan untuk menyetujui syarat dan ketentuan. Jadi kolom kotak centang ditambahkan sebelum tombol daftar untuk memastikan itu.

File - file yang akan kita buat diantaranya:
  • index.php
  • Koneksi.php
  • User.php
  • welcome.php

Tapi pertama - tama kita buat dulu databasenya, disini saya buat database dengan nama pendaftaran dan tabel users didalamnya. Berikut struktur untuk tabel users:

PlajariKode - Struktur tabel user form pendaftaran

Singkatnya, copy lalu pastekan kode berikut pada menu SQL untuk membuat database beserta struktur tabel seperti diatas.
CREATE DATABASE IF NOT EXISTS `pendaftaran`;
USE `pendaftaran`;

CREATE TABLE `users` (
  user_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
  username varchar(30) NOT NULL,
  password varchar(60) NOT NULL,
  email varchar(30) NOT NULL,
  nama_lengkap varchar(60) NOT NULL
);

index.php

Setelah database beserta tabelnya sudah dibuat, sekarang kita buat tampilan untuk form pendaftarannya.
<?php

require_once 'User.php';


if (isset($_POST['submit'])) {
  
  $errorMessage = [];
  
  if (empty($user->validasiUser())) {
    if($user->cekMember($_POST['username'], $_POST['email'])) {
      session_start();
      $_SESSION['nama'] = $_POST['nama_lengkap'];
      header('Location: welcome.php');
    } else {
      $errorMessage[] = "Username atau E-mail sudah terdaftar";
    }
  } else {
    $errorMessage = $user->validasiUser();
  }

  foreach ($errorMessage as $errors) {
    $error = $errors;
  }
}

?>

<!DOCTYPE html>
<html>
<head>
  <title>Form Pendaftaran dengan PHP</title>
</head>
<body>
  <h1>PlajariKode - Form Pendaftaran dengan PHP dan MySQL</h1>
  <form action="" method="post" name="form_pendaftaran" autocomplete="off">
    <h4>Form Pendaftaran</h4>
    
    <!-- Pesan error disini -->
    <?php
    if (isset($error)) {
      echo $error;
    }
    ?>

    <label>Username</label><br/>
    <input type="text" name="username" value="<?php if (isset($_POST['username'])) echo $_POST['username']; ?>"><br/>
    <label>Password</label><br/>
    <input type="password" name="password" value="<?php if (isset($_POST['password'])) echo $_POST['password']; ?>"><br/>
    <label>Confirm Password</label><br/>
    <input type="password" name="confirm_password" value="<?php if (isset($_POST['confirm_password'])) echo $_POST['confirm_password']; ?>"><br/>
    <label>Nama Lengkap</label><br/>
    <input type="text" name="nama_lengkap" value="<?php if (isset($_POST['nama_lengkap'])) echo $_POST['nama_lengkap']; ?>"><br/>
    <label>E-mail</label><br/>
    <input type="text" name="email" value="<?php if (isset($_POST['email'])) echo $_POST['email']; ?>"><br/>
    <input type="checkbox" name="terms">I accept terms and condition<br/>
    <button name="submit" type="submit" value="daftar">Daftar</button>
  </form>
</body>
</html>

Jika kita jalankan maka akan memunculkan pesan kesalahan dikarenakan file User.php yang belum kita buat.

Dan pada baris kode berikut kita memanggil method untuk validasi, cek user / member dan aksi untuk daftar..
if (isset($_POST['submit'])) {
  
  $errorMessage = [];
  
  if (empty($user->validasiUser())) {
    if($user->cekMember($_POST['username'], $_POST['email'])) {
      header('Location: welcome.php');
    } else {
      $errorMessage[] = "Username atau E-mail sudah terdaftar";
    }
  } else {
    $errorMessage = $user->validasiUser();
  }

  foreach ($errorMessage as $errors) {
    $error = $errors;
  }
}

Koneksi.php

<?php

class Koneksi
{
    var $host = 'localhost';
    var $username = 'root';
    var $password = '';
    var $db_name = 'pendaftaran';
    protected $conn = '';

    public function __construct()
    {
        $this->conn = mysqli_connect($this->host, $this->username, $this->password, $this->db_name);
    }
}

$conn = new Koneksi;

Untuk mengecek koneksi bisa dengan langsung menuju ke halaman Koneksi.php

User.php

File ini berisi class dan beberapa method untuk validasi, ada juga method untuk mengecek apakah username atau password sudah terdaftar ataukah belum.

Method untuk mendaftar apabila validasi dan cek user terlewati juga ada dalam file ini.
<?php

require_once 'Koneksi.php';

class User extends Koneksi
{
  public function validasiUser()
  {
    $valid = true;

    // cek setiap data apakah kosong ataukah tidak
    foreach ($_POST as $key => $value) {
      if (empty($_POST[$key])) {
        $valid = false;
      }
    }

    if ($valid == true) {
      // jika password dan confirm password tidak sama
      if ($_POST['password'] != $_POST['confirm_password']) {
        $errorMessage[] = 'Password harus sama';
        $valid = false;
      }

      if (!isset($errorMessage)) {
        // jika email tidak valid
        if (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) {
          $errorMessage[] = "E-mail tidak valid";
          $valid = false;
        }
      }

      if (! isset($errorMessage)) {
        // jika checkbox terms tidak terceklis
        if (! isset($_POST["terms"])) {
          $errorMessage[] = "Terima terms and conditions untuk melanjutkan";
          $valid = false;
        }
      }
    } else {
      // jika semua form pendaftaran belum diisi
      $errorMessage[] = "Form pendaftaran harus diisi";
    }

    if ($valid == false) {
      return $errorMessage;
    }

    return;
  }

  // cek apakah username atau email sudah terdaftar ataukah belum
  public function cekMember($username, $email)
  {
    $sql = "SELECT username, email FROM users WHERE username = '$username' OR email = '$email'";
    $q = $this->conn->query($sql);
    
    if ($q->num_rows == 0) {
      $this->aksiDaftar();
      return true;
    }

    return;
  }

  // proses pendaftaran
  public function aksiDaftar()
  {
    $username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
    $password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
    $email = filter_var($_POST['email'], FILTER_SANITIZE_STRING);
    $nama = filter_var($_POST['nama_lengkap'], FILTER_SANITIZE_STRING);

    $sql = "INSERT INTO users VALUES ('', '$username', '$password', '$email', '$nama')";
    $q = $this->conn->query($sql);

    return $q;
  }
}

$user = new User;

welcome.php

Jika pendaftaran berhasil maka akan diarahkan ke file ini.
<?php

session_start();
echo "Pendaftaran berhasil, selamat datang ".$_SESSION['nama']."!";

Referensi: php user registration form

Posting Komentar

0 Komentar