Anime and Coding Daisuki

Tutorial Login & Register Full Chapter 5 (Register User, Protecting Pages)

Tidak ada komentar
Yoo minna mohon maaf dalam memposting tutorial yang saya berikan membutuhkan waktu yang lama karena kesibukan saya sehari-hari sehingga selalu terhambat. tapi kali ini saya bisa memposting tutorial kembali kepada minna.

setelah kemarin kita selesai di chapter ke 4 yaitu register form validation, nah sekarang kita akan melakukan pengkodingan untuk registrasi user nya. Buka  register.php nya kemudian ganti kodenya 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 (isset($_GET['success']) && empty($_GET['success'])){ echo 'Congratulation You\'ve been Registered Successfully' ; } else { if (empty($_POST) === false && empty ($errors) === true) { $register_data = array( 'username' => $_POST['username'], 'password' => $_POST['password'], 'first_name' => $_POST['first_name'], 'last_name' => $_POST['last_name'], 'email' => $_POST['email'], ); register_user($register_data); header('Location: register.php?success'); exit(); } else if (empty($errors) === false) { echo output_errors($errors); } ?> <form action="register.php" 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' ; ?>
bisa di lihat diatas ada function baru yang belum kita buat yaitu register_user, supaya register tersebut bisa berjalan, kita akan membuat function baru untuk mengeksekusi register form diatas. Buka users.php kemudian tambahkan function baru, berikut kode nya :

function register_user($register_data) {
  array_walk($register_data, 'array_sanitize');
  $register_data['password'] = md5($register_data['password']) ;
  
  $fields = '`' . implode('`, `', array_keys($register_data)) . '`' ;
  $data = '\'' . implode('\', \'', $register_data) . '\'' ;
  mysql_query("INSERT INTO users ($fields) VALUES ($data)") ;

}


Sekarang kita buka general.php, dan tambahkan function dibawah ini :

function array_sanitize(&$item) {
 $item = mysql_real_escape_string($item);
}
Coba minna tes register nya, maka akan berhasil melakukan register dengan adanya notice berhasil melakukan registrasi. Tampilannya seperti ini :
Bisa di liat kan disitu ada notifikasi congratulation bla bla bla yang artinya kita berhasil melakukan registrasi dan data nya pun akan muncul pada database kita. Coba saja cek database nya maka record di dalam tabe user akan bertambah datanya.
Setelah kita selesai membuat registrasi, nah sekarang kita akan melakukan protecting page kita akan melakukan beberapa logic untuk memprotect suatu page. Singkatnya gini aja halaman tertentu tidak bisa di akses ketika kita belum melakukan login.
Sekarang kita buat dulu beberapa halaman, diantaranya downloads.php , forum.php dan contact.php . nah halaman yang akan kita protect yaitu bagian halaman downloads.php dan forum.php jadi halaman tersebut tidak bisa di akses jika kita belum login. Buat file downloads.php nya :


<?php 
include 'core/init.php' ;
include 'includes/overall/header.php' ;
?>
<h2>Download</h2>
<p>Ini adalah konten Download</p>
<?php include 'includes/overall/footer.php' ; ?>
Buat juga 2 file lagi yaitu forum.php dan contact.php. untuk kodenya sama kan saja dengan yang diatas.

Agar tujuan kita untuk memprotect halam tersebut tercapai heheh kita buat file baru bernama protected.php, berikut kode nya : 

<?php 
include 'core/init.php' ;
include 'includes/overall/header.php' ; 
?>
<h2>Access Denied</h2>
<p>Harap login untuk mengakses halaman ini</p>
<?php include 'includes/overall/footer.php' ; ?> 
Jangan lupa save file-file tersebut diatas di folder project kita ingat jangan di folder core atau pun include ataupun lainnya tapi cukup di folder project kita. Nah halaman protected sudah kita buat sekarang kita akan memulai proteksi nya. Buka general.php kemudian buat sebuah function baru :

function protect_page(){
       if (logged_in() === false) {
          header('Location: protected.php');
       exit();
    }
}
Dengan begitu jika kita menanamkan function ini pada halaman yang akan kita proteksi, maka user tidak akan bisa mengakses nya ketika dia belum melakukan login dan akan di timpahkan ke halaman protected yang sudah kita buat tadi. Nah sekarang kita hanya perlu menambahkan function ini kedalam halaman yang akan kita proteksi yaitu halaman downloads.php dan forum.php. tambahkan kode “Protect_page() ;“ tanpa tanda kutip tepat di bawah kode include 'core/init.php'; setelah itu save. Dan coba running hasilnya maka ketika mengklik halaman download atau forum sebelum melakukan login akan seperti ini :

Sebaliknya jika kita sudah login, maka halaman yang akan ditampilkan adalah halaman yang sebenarnya.

Nah sekarang kita akan sedikit-sedikit memperbaiki kesalahan project yang kita buat. Coba di cek ketika kita sudah melakukan login, terus kita masuk kehalaman register dan hasilnya form register nya muncul tapi kita sudah melakukan login. Tentu hal itu tidak mengenakan sekali kan. Sekarang kita akan memperbaiki nya. Buka lagi general.php dan tambahkan function baru :

function logged_in_redirect(){
     if (logged_in() === true) {
       header('Location: index.php');
     exit();
   }
}
Kemudian tanamkan function nya di halaman register.php. tambahkan kode logged_in_redirect(); dibawah kode include 'core/init.php'; . Maka ketika kita sudah login dan mengakses halaman register.php kita akan dikembalikan ke halaman index.php. dan juga lakukan hal yang serupa pada halaman login.php agar ketika kita sudah melakukan login dan kita ingin mengakses halaman login.php maka kita tidak akan melakukan login kembali dan akan ditimpahkan ke halaman index.php.

Sekian untuk postingan kali ini, mohon maaf bila terdapat kesalahan kata, penjelasan dan lainnya.
Jaa nee Minna...

Tidak ada komentar :

Posting Komentar