Tutorial Login & Register Full Chapter 4 (Total User Widget , Register Form & Validation)
Hello minna san, akhirnya saya bisa menyelesaikan artikel chapter 4 di tutorial Login Register yang sedikit terlambat mengingat kesibukan saya di dunia nyata hihi :D. Pada chapter kali ini, kita akan membuat Widget untuk mengetahui berapa banyak user yang ada didalam database dan juga kita akan mulai membuat registrasi form & validation.
Saaa Coding Hajimemasho :D
Pertama kita akan membuat total
user widget, yang mana akan memberitahukan kepada kita total user yang ada
dalam database kita dan tentunya user yang sudah aktif.
Sekarang kita buka kembali file
loggedin.php di dalam folder widget kita. Edit file nya menjadi seperti ini :
<div class="widget">
<h2>Hello, <?php echo $user_data['first_name'] ;?></h2>
<div class="inner">
<ul>
<li>
<a href="logout.php"><b>Logout</b></a>
</li>
<li>
<a href="changepassword.php"><b>Change Password</b></a>
</li>
</ul>
</div>
</div>
Save file diatas. Nah sekarang
baru kita akan membuat file untuk widget total user nya. Buat file baru bernama
user_count.php, kemudian masukkan kode dibawah ini :
<div class="widget">
<h2>Users</h2>
<div class="inner">
We currently have x registered users.
</div>
</div>
Nah x diatas adalah untuk total user yang akan
muncul. Save file nya, sementara kita tinggalkan dulu, buka file aside.php yang
ada didalam folder include. Edit file nya menjadi seperti ini :
<aside>
<?php
if (logged_in() === true ) {
include 'includes/widget/loggedin.php' ;
} else {
include 'includes/widget/login.php' ;
}
include 'includes/widget/user_count.php' ;
?> </aside>
Bisa di lihat diatas kita menambah include untuk
widget total user yang dibuat sebelum nya, sehingga akan muncul pada halaman di
bagian aside. Jangan lupa di save ya.
Nah sekarang kita akan membuat function untuk
widget total user kita. Buka kembali users.php yang berada di folder core di
dalam folder function. Tambahkan function untuk total user widget kita terserah
posisinya mau diatas dibawah atau dimanapun terserah minna :
function user_count() {
return mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE active = 1"), 0);
}
Penjelasan nya seperti ini, disana kita akan memilih jumlah
data yang ada di table user yang tentu nya user yang active nya bernilai 1 yang
berarti akun sudah aktif.
Nah kemudian kita akan membuka lagi file
user_count.php yang tadi kita tinggalkan sementara, kita edit lagi filenya.
Huruf x yang ada difile tersebut rubah dengan kode di bawah ini :
<?php echo user_count() ; ?>
Berikut kode
lengkapnya :
<div class="widget">
<h2>Users</h2>
<div class="inner">
We currently have <?php echo user_count() ; ?> registered users.
</div>
</div>
Jadi disana memanggil fungsi yang sudah kita buat
tadi diatas. Save file nya kemudian kita coba test apakah berhasil. Tetapi
sebelum nya dilihat lagi database nya jika active nya bernilai 0 edit saja
menjadi 1 ya minna. Maka tampilan nya akan seperti ini :
Bisa di lihat kan disana ada we currently bla bla
bla... nah total user nya muncul yaitu 1 karena kita memiliki 1 user. Coba
minna tambahkan 1 lagi data tetapi nilai active nya zero maka hasil nya akan
tetap 1 karena function yang sudah kita buat diatas tadi, tetapi jika minna
mengeditnya dan merubah nilai active nya menjadi 1 maka total user nya akan
bertambah nilai nya begitu kira-kira singkat nya hehehe.
Yosh total user widget kita sudah buat, sekarang
kita beralih pada register. Nah kita buka file register.php yang dulu kita buat
dan edit file nya menjadi seperti ini :
<?php
include 'core/init.php' ;
include 'includes/overall/header.php' ;
<h1>Register</h1>
<form action="" method="POST">
<ul>
<li>
First Name*:<br>
<input type="text" name="first_name" placeholder="First Name">
</li>
<li>
Last Name:<br>
<input type="text" name="last_name" placeholder="Last Name">
</li>
<li>
Username*:<br>
<input type="text" name="username" placeholder="Username">
</li>
<li>
Password*:<br>
<input type="password" name="password" placeholder="Password">
</li>
<li>
Re-type Password*:<br>
<input type="password" name="password_again" placeholder="Re-type Password">
</li>
<li>
Email*:<br>
<input type="text" name="email" placeholder="Email">
</li>
<li>
<input type="submit" value="Register"></input>
</li>
</ul>
</form>
<?php include 'includes/overall/footer.php' ;?>
Simpan file nya dan coba di running, seperti ini
lah tampilannya :
Selanjutnya kita melakukan validation seperti jika
kita menginput username yang sudah ada di database user, jika form kosong akan
muncul notifikasi error dan bla bla bla :D .
Edit register.php menjadi seperti ini :
<?php
include 'core/init.php' ;
include 'includes/overall/header.php' ;
if (empty($_POST) === false ) {
$required_fields = array('username', 'password', 'password_again', 'first_name', 'email');
foreach ($_POST as $key => $value) {
if (empty($value) && in_array($key, $required_fields) === true) {
$errors[] = 'Fields marked with an asterisk are required' ;
break 1;
}
}
if (empty($errors) === true) {
if (user_exists($_POST['username']) === true) {
$errors[] = 'Sorry, the username \'' . $_POST['username'] . '\' is already exist.';
}
if (preg_match("/\\s/", $_POST['username']) == true) {
$errors[] = 'Your Username must not contain any spaces!' ;
}
if (strlen($_POST['password']) < 6 ) {
$errors[] = 'Your Password must be at least 6 character' ;
}
if ($_POST['password'] !== $_POST['password_again']) {
$errors[] = 'Your Password do not match !' ;
}
if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
$errors[] = 'A vaild email address is required !' ;
}
if (email_exists($_POST['email']) === true) {
$errors[] = 'Sorry, the email address \'' . $_POST['email'] . '\' is already in use' ;
}
}
}
?>
<h1>Register</h1>
<?php
if (empty($_POST) === true && empty ($errors) === true) {
//register user
} else {
echo output_errors($errors);
}
?>
<form action="" method="POST">
<ul>
<li>
Username*:<br>
<input type="text" name="username" placeholder="Username">
</li>
<li>
Password*:<br>
<input type="password" name="password" placeholder="Password">
</li>
<li>
Re-type Password*:<br>
<input type="password" name="password_again" placeholder="Re-type Password">
</li>
<li>
First Name*:<br>
<input type="text" name="first_name" placeholder="First Name">
</li>
<li>
Last Name:<br>
<input type="text" name="last_name" placeholder="Last Name">
</li>
<li>
Email*:<br>
<input type="text" name="email" placeholder="Email">
</li>
<li>
<input type="submit" value="Register"></input>
</li>
</ul>
</form>
<?php include 'includes/overall/footer.php' ;?>
Save file tersebut. Dan bisa minna lihat diatas ada
function baru yang belum kita definisikan yaitu email_exists, nah sekarang kita
buat lagi function baru di file users.php. Buka users.php nya kemudian
tambahkan funtion dibawah ini, terserah posisinya mau dimana :D tapi biar lebih
rapih posisi nya mending di bawah function user_exists :
function email_exists($email) { //berfungsi untuk cek apakah akun ada
$email = sanitize($email) ;
return (mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE email = '$email'"), 0) == 1) ? true : false ;
}
Kalau di review lagi keseluruhan kode untuk
users.php yaitu dibawah ini :
<?php
function user_count() {
return mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE active = 1"), 0);
}
function user_data($user_id) {
$data = array() ;
$user_id = (int)$user_id;
$func_num_args = func_num_args();
$func_get_args = func_get_args();
if ($func_num_args > 0) {
unset($func_get_args[0]) ;
$fields ='`' . implode('`, `', $func_get_args) . '`';
$data = mysql_fetch_assoc(mysql_query("SELECT $fields FROM users WHERE user_id = $user_id"))
return $data ;
}
}
function logged_in() {
return(isset($_SESSION['user_id'])) ? true : false ;
}
function user_exists($username) { //berfungsi untuk cek apakah akun ada
$username = sanitize($username) ;
return (mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE username = '$username'"), 0) == 1) ? true : false ;
}
function email_exists($email) { //berfungsi untuk cek apakah akun ada
$email = sanitize($email) ;
return (mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE email = '$email'"), 0) == 1) ? true : false ;
}
function user_active($username) { // berfungsi untuk aktivasi akun
$username = sanitize($username) ;
return (mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE username = '$username' AND active = 1"), 0) == 1) ? true : false ;
}
function user_id_from_username($username) { // Validasi Login berdasarkan user_id di database
$username = sanitize ($username) ;
return mysql_result(mysql_query("SELECT user_id FROM users WHERE username = '$username'"), 0, 'user_id') ;
}
function login($username, $password) { // berfungsi untuk validasi login
$user_id = user_id_from_username($username) ;
$username = sanitize ($username) ;
$password = md5($password) ;
return (mysql_result(mysql_query("SELECT COUNT(user_id) FROM users WHERE username = '$username' AND password = '$password'"), 0) == 1) ? $user_id : false ;
}
?>
Sekarang coba minna tes sendiri saja, coba minna
masukkan username yang sudah ada atau kosongkan form atau username nya pake
spasi atau masukkan password nya kurang dari 6 wkwkwkwk bawel banget saya
teheeee :p, maka akan muncul notif error.
Sekian untuk chapter kali ini. Gomennasai jika ada
kata-kata yang salah atau kurang berkenan. Kritik dan saran dari minna sekalian
sangat saya harapkan agar saya bisa lebih baik lagi kedepan nya hehehe :D .
Jaaa nee ;-)
Langganan:
Posting Komentar
(
Atom
)
Tidak ada komentar :
Posting Komentar