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:
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>
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
0 Komentar