Anime and Coding Daisuki

Tutorial Login & Register Full Chapter 4 (Total User Widget , Register Form & Validation)

Tidak ada komentar
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 ;-)

Tidak ada komentar :

Posting Komentar