Hai Sipinter! Selamat datang di sesi Tutorial Pemrograman PHP, dimana disini kita akan membahas semua hal tentang cara membuat program web atau web dinamis dengan PHP.
Kali ini kita akan belajar membuat halaman register sederhana dengan PHP, dimana halaman ini digunakan untuk membuat akun baru.
Bisa dibilang ini sama dengan kita membuat halaman tambah (create) pada CRUD database, namun ditambah dengan enkripsi data password agas akun pengguna web kita menjadi lebih aman.
Untuk memahami pembahasan kali ini kita perlu memahami dua hal yaitu :
Untuk membuat halaman Register berikut Tahapannya:
- Membuat Database User di MySQL
- Membuat Form Register User di PHP
- Membuat Perintah Membuat User Baru ke Database
- Testing Halaman Register
Oke mari kita bahas setiap tahap dari membuat halaman register:
Membuat Database User di MySQL
Disini saya menggunakan database MySQL dan admin membuat database baru dengan nama “web_pertama”, karena kita akan membuat halaman register maka kita perlu membuat tabel user.
Tabel user akan menyimpan semua data user seperti nama, tanggal lahir, email, password dan hak akses user.
Untuk desain dari database yang akan digunakan bisa dilihat pada gambar di bawah:
Seperti gambar diatas admin membuat database menggunakan PHPMyAdmin untuk caranya kunjungi:
Cara Membuat Database dan Tabel di MySQL Menggunakan PHPMyAdmin.
Dalam desain database kolom password dibuat max 100 karakter karena kolom ini akan menampung data password yang dienkripsi dengan fungsi password_hash dengan hasil kode hash yang panjang.
Membuat Form Register User di PHP
Form register digunakan untuk menambahkan data user baru, dimana data user yang akan diinputkan adalah nama, tanggal lahir, email dan password dua kali.
Dimana untuk kolom id user dan hak akses akan kita buat otomatis karena form register ini diperuntukan untuk pengguna biasa, sehingga kolom hak akses akan otomatis berisi pengguna.
Dan kita pun akan melakukan validasi data yang diinputkan agar tidak bisa diisi asal oleh user.
Ketika membuat form pastikan bahwa maxlength harus sama panjang dengan apa yang kita buat di database dan jika kolom tersebut harus diisi jangan lupa tambahkan require.
Sesuaikan juga tipe data dalam database dengan tipe input yang akan digunakan contoh jika email gunakan type=”email” dll.
Berikut merupakan form untuk register user yang akan kita gunakan, form ini kita simpan dalam file “register.php”:
<!DOCTYPE html>
<html>
<head>
<title>Register - Web Percobaan</title>
</head>
<body>
<h1>Formulir Register Akun</h1>
<div style="color: red">
<?php
//untuk menampilkan hasil validasi jika ada input yang salah
if(isset($_GET['error_msg'])){
echo $_GET['error_msg'];
}
?>
</div>
<form method="POST" action="UserController.php">
<table cellpadding="10">
<tr>
<td><label for="nama">Nama Lengkap</label></td>
<td>:</td>
<td><input type="text" name="nama" size="30" maxlength="30" required></td>
</tr>
<tr>
<td><label for="tanggal_lahir">Tanggal Lahir</label></td>
<td>:</td>
<td><input type="date" name="tanggal_lahir" required></td>
</tr>
<tr>
<td><label for="email">Email</label></td>
<td>:</td>
<td><input type="email" name="email" size="100" maxlength="100" required></td>
</tr>
<tr>
<td><label for="password">Password</label></td>
<td>:</td>
<td><input type="password" name="password" minlength="6" size="30" maxlength="30" required></td>
</tr>
<tr>
<td><label for="re_password">Password</label></td>
<td>:</td>
<td><input type="password" name="re_password" minlength="6" size="30" maxlength="30" required></td>
</tr>
<tr>
<td></td>
<td></td>
<td><input type="submit" name="submit" value="Register"></td>
</tr>
</table>
</form>
</body>
</html>
Membuat Perintah Tambah User Baru ke Database di PHP
Setelah membuat form kita tinggal membuat file baru yaitu “UserController.php” yang berisi perintah validasi data dan perintah untuk menambahkan user baru ke database.
Pertama kita buat perintah untuk melakukan koneksi ke database yang telah kita buat sebelumnya, menggunakan fungsi mysqli.
<?php
//cara agar pesan error mysqli dapat ditangani try catch
mysqli_report(MYSQLI_REPORT_STRICT);
//setting pesan jika koneksi database gagal
define("MYSQL_CONN_ERROR", "Koneksi ke Database Gagal");
$host="127.0.0.1";
$username="root";
$password="";
$database="web_pertama";
try{
//perintah koneksi database
$db= mysqli_connect($host,$username,$password,$database);
}catch(mysqli_sql_exception $e){
echo "<h1>Database Gagal Konek</h1><br>";
echo "<p>$e</p>";
}
?>
Lalu kita buat perintah untuk mengecek jika ada data yang dikirim melalui form dengan menggunakan variabel $_SERVER[‘REQUEST_METHOD’], agar jika halaman ini diakses tanpa melalui form register tidak menimbulkan error. Perintah seperti berikut:
if($_SERVER['REQUEST_METHOD']=="POST"){
}
Lalu didalam if diatas kita isi perintah validasi data dan perintah input data user ke database, sehingga perintah validasi dan perintah input data ke database tidak akan berjalan jika data bukan berasal dari form register user.
Berikut merupakan perintah validasi data mulai dari memastikan nama hanya berupa huruf dan spasi, memastikan email yang belum terdaftar sebelumnya dan dua password yang diinputkan harus sama.
//Proses validasi data
//variabel untuk menyimpan hasil validasi data
$error_input=0;
$error_msg="<ul>";
$msg_berhasil="";
//cek nama hanya huruf dan spasi
if(!preg_match("/^[a-zA-Z ]*$/", $_POST['nama'])){
$error_input=1;
$error_msg.="<li>Nama hanya huruf dan spasi</li>";
}
//cek apakah email sudah mendaftar
$data_email=mysqli_query($db,"SELECT email FROM user WHERE email='".$_POST['email']."'");
if (mysqli_num_rows($data_email)!=0) {
$error_input=1;
$error_msg.="<li>Email Sudah Terdaftar</li>";
}
//cek password dan re_password harus sama
if ($_POST['password']!=$_POST['re_password']) {
$error_input=1;
$error_msg.="<li>Password Tidak Sama</li>";
}
Lalu kita buat perintah tambah user ke database yang akan dijalankan jika semua input sudah benar atau valid, hal ini ditandai dengan variabel $error_input=0.
//Perintah input data user ke database
if ($error_input==0) {
try{
$nama=$_POST['nama'];
$tanggal_lahir=$_POST['tanggal_lahir'];
$email=$_POST['email'];
//perintah enkripsi password
$password=password_hash($_POST['password'], PASSWORD_DEFAULT);
//perintah input data user baru ke database
$perintah=mysqli_query($db,"INSERT INTO user(id_user, nama, email, password, hak_akses, tanggal_lahir) VALUES (NULL,'$nama','$email','$password','pengguna','$tanggal_lahir')");
if ($perintah) {
echo "Register Berhasil Dilakukan <a href='#'>Coba Login</a>";
}
}catch(mysqli_sql_exception $e){
$error_input=1;
$error_msg.="<li>Register Gagal >> $e</li>";
}
}
Lalu ketika nilai yang diinputkan tidak valid atau perintah tambah user gagal maka akan kita alihkan kembali ke halaman form register untuk memperbaiki data yang diinputkan.
//Ketika input data tidak valid atau input data ke database gagal
if ($error_input==1) {
$error_msg.="</ul>";
header("Location:register.php?error_msg=$error_msg");
}
Maka perintah lengkap pada file UserController.php yang berisi validasi data dan perintah tambah user, yaitu seperti di bawah:
<?php
//cara agar pesan error mysqli dapat ditangani try catch
mysqli_report(MYSQLI_REPORT_STRICT);
//setting pesan jika koneksi database gagal
define("MYSQL_CONN_ERROR", "Koneksi ke Database Gagal");
$host="127.0.0.1";
$username="root";
$password="";
$database="web_pertama";
try{
$db= mysqli_connect($host,$username,$password,$database);
}catch(mysqli_sql_exception $e){
echo "<h1>Database Gagal Konnek</h1><br>";
echo "<p>$e</p>";
}
if($_SERVER['REQUEST_METHOD']=="POST"){
//Proses validasi data
//variabel untuk menyimpan hasil validasi data
$error_input=0;
$error_msg="<ul>";
$msg_berhasil="";
//cek nama hanya huruf dan spasi
if(!preg_match("/^[a-zA-Z ]*$/", $_POST['nama'])){
$error_input=1;
$error_msg.="<li>Nama hanya huruf dan spasi</li>";
}
//cek apakah email sudah mendaftar
$data_email=mysqli_query($db,"SELECT email FROM user WHERE email='".$_POST['email']."'");
if (mysqli_num_rows($data_email)!=0) {
$error_input=1;
$error_msg.="<li>Email Sudah Terdaftar</li>";
}
//cek password dan re_password harus sama
if ($_POST['password']!=$_POST['re_password']) {
$error_input=1;
$error_msg.="<li>Password Tidak Sama</li>";
}
//Perintah input data user ke database
if ($error_input==0) {
try{
$nama=$_POST['nama'];
$tanggal_lahir=$_POST['tanggal_lahir'];
$email=$_POST['email'];
//perintah enkripsi password
$password=password_hash($_POST['password'], PASSWORD_DEFAULT);
//perintah input data user baru ke database
$perintah=mysqli_query($db,"INSERT INTO user(id_user, nama, email, password, hak_akses, tanggal_lahir) VALUES (NULL,'$nama','$email','$password','pengguna','$tanggal_lahir')");
if ($perintah) {
echo "Register Berhasil Dilakukan <a href='#'>Coba Login</a>";
}
}catch(mysqli_sql_exception $e){
$error_input=1;
$error_msg.="<li>Register Gagal >> $e</li>";
}
}
//Ketika input data tidak valid atau input data ke database gagal
if ($error_input==1) {
$error_msg.="</ul>";
header("Location:register.php?error_msg=$error_msg");
}
}
?>
Selesai sudah kita membuat halaman untuk register user dengan PHP, selanjutnya kita akan melakukan proses testing.
Testing Halaman Register
Proses testing dilakukan untuk memastikan bahwa halaman register user yang telah kita buat berjalan semesti nya sesuai seperti yang kita inginkan.
Pertama kita coba akses ke dua halaman apakah ada kesalahan yang terjadi? untuk halaman register yang admin buat tidak ada kesalahan seperti gambar di bawah:
Lalu kita coba register user dengan menginputkan data yang valid seperti gambar di bawah:
Hasilnya maka user baru akan berhasil ditambahkan ke database dan akan muncul tampilan seperti gambar di bawah:
Data userpun masuk ke dalam database yang telah kita buat.
Terakhir kita akan melakukan testing apakah ketika menginputkan data yang tidak valid, apakah yang akan terjadi.
Hasilnya ketika data yang salah dikirim maka perintah validasi data akan mengetahuinya dan akan muncul pesan data input apa saja yang salah, seperti gambar di bawah:
Gimana keren kan dengan begitu kita dapat memastikan tidak ada yang bisa membuat user secara sembarangan.
Berikut merupakan contoh halaman register sederhana maka jika ingin menerapkannya perlu dikembangkan lagi.
Sekian postingan kali ini jika ada kesalahan saya mohon maaf yang sebesar-besarnya.
Jangan lupa tinggalkan komentar di bawah untuk kemajuan web ini!
“Nikmati sebuah proses mulai dari belajar, mengembangkan sampai kita bisa berbagi untuk orang lain”
Dukung kami dengan follow social media Sipintek dan share postingan ini!
sya sudah mengikuti semua prosedur yang diajarkan dan diberikan,tetapi ketika sudah register dan masuk ke halaman UserController.php ,mala halamannya kosong dan juga data yang diisi tidak masuk ke localhost saya, mohon sarannya ya kak
berarti gagal ketika simpan data user ke database