Home > PHP > Simple Ajax Login with PHP

Simple Ajax Login with PHP

Validasi pengguna (user verification) merupakan salah satu fitur keaman sebuah website. Fasilitas ini memungkinkan pembatasan pengguna untuk melakukan perubahan pada database atau struktur web itu sendiri. Nah, kali ini saya akan berbagi tentang halaman Login sederhana yang disisipkan teknik AJAX agar halaman login kita menjadi lebih menarik misalnya dengan menambah efek loading.

Ajax Login - Loading

Striktur database dan table sebagai berikut :

CREATE DATEBASE LATIHAN_PHP;
USE LATIHAN_PHP;
CREATE TABLE USER(
  ID BIGINT PRIMARY KEY AUTO_INCREMENT,
  NAMA VARCHAR(255);
  USERNAME VARCHAR(255) UNIQUE;
  PASSWORD VARCHAR(255)
);
INSERT INTO USER VALUES(NULL, 'PIZAINI', 'admin', '21232f297a57a5a743894a0e4a801fc3');

Struktur file dan direktori pada posting ini adalah:

  • ajax_login(dir)
    • process (dir)
      • class.user.php
      • process.user.php
      • index.html
    • js(dir)
      • ajax_login.js
      • jquery.js
      • index.html
    • img (dir)
      • spinner.gif
      • index.html
    • connection.php
    • globalConfiguration.php
    • login.php
    • index.php

File globalConfiguration.php adalah file konfigurasi database, user dan password untuk MySQL. File connection.php adalah file koneksi ke MySQL. Halaman login yang terletak pada file login.php seperti screenshot di atas.

Proses login dengan menekan button Login. Form tersebut akan menvalidasi textfield apakah kosong atau tidak. Jika kosong, form itu akan memberikan pesan bahwa username atau password kosong. Jika tidak kosong (valid) maka proses validasi ke database dilakukan. Di sinilah kita memenfaatkan teknik AJAX untuk proses login dan validasi pengguna. Jika username dan password benar, maka pengguna akan dibawa ke halaman index.php. Jika salah, akan diberikan pesan kesalahan di bawah form login.

So, what is spinner.gif file ?…

File ini digunakan untuk efek loading untuk proses login. Bisa dilihat pada file login.php, kamu akan melihat sebuah fungsi Javascript yang men-delay selama 2 detik (2000 milisecond) agar kita bisa melihat loading nya.

Validasi Username dan Password tidak boleh kosong.

Pesan Kesalahan jika username dan password tidak benar.

<?php   // File Controller_User.php
/*
 * Copyright 2011
 * by Pizaini
 * blog : pizaini.wordpress.com
 * email : zheiner.taurus@gmail.com
 */
session_start();
//include file(s)
require_once 'class.user.php';
require_once '../conection.php';

$action = isset($_GET['action']) ? $_GET['action'] : '';
switch ($action) {
   case 'login':
      if(!isset ($_GET['u']) || !isset ($_GET['p'])){
          die("No Messege.");
      }
      $username = $_GET['u'];
      $password = $_GET['p'];

      $user = new User();
      $user->setUsername($username);
      $user->setPassword($password);

      $process_login = new Controller_User();
      $process_login->doLogin($user);
    break;

case 'logout':
    $controller_user = new Controller_User();
    $controller_user->doLogout();
   break;
default:
   break;
}

class Controller_User{
  //Login
  function doLogin(User $user){
     $qLogin = "SELECT * FROM USER WHERE USERNAME = '".mysql_real_escape_string($user->getUsername())."' AND PASSWORD  = MD5('".$user->getPassword()."')";
     $rLogin = mysql_query($qLogin) or die(mysql_error());

    if(mysql_num_rows($rLogin) == 1){
      $data = mysql_fetch_object($rLogin);
      $_SESSION['my_session'] = $data->USERNAME;
      $_SESSION['my_name'] = $data->NAMA;
      echo 'OK';
    }else{
      echo "Sorry, Username and Password does'n match.";
    }
  }

  //Logout
  function doLogout(){
    if(isset ($_SESSION['my_session'])){
      unset ($_SESSION['my_session']);
      unset ($_SESSION['my_name']);
    }
    echo 'OK';
   }
}
?>

So, how about preview ? Yaa…Saya juga memberikan link untuk preview dari posting ini.

Klik di sini untuk melihat preview (demo).

Username : admin

Password : admin

Klik di sini untuk download source code nya..

Selamat membaca dan semoga bermanfaat dengan posting yang sederhana ini…dan kamu bisa mendapat inspirasi dari posting ini.

Advertisement
  1. 29 January 2012 at 03:41 | #1

    kagak ngerti

  2. 6 October 2011 at 21:04 | #2

    om tlong postingkn script untuk select tanggal pake pick_date ,

  3. 6 October 2011 at 21:03 | #3

    mas , select database pake format tanggal bulan atau tahun yg mudah dipahami script nya ya mas, , ,

    • 7 October 2011 at 20:16 | #4

      Untuk select berdasarkan tanggal, biasanya saya pake fungsi ‘ date_format() ‘ di SQL nya.
      Misalnya, kita ingin menampilkan data dari tabel ‘siswa’ yang berdasarkan tahun lahir.
      SQL = Select * from siswa where date_format(TTL, ‘%Y’) = ’1990′.
      Hasilnya akan menampilkan data siswa yang lahir pada tahun 1990. TTL adalah nama kolom (field) di DB..
      Untuk lebih jelas, lihat di MySQL Manual…

  4. 29 June 2011 at 11:44 | #5

    terima kasih om…. mohon izin download source codeY….. oya, kok ndak sekalian databaseY om?

    • Zhein
      30 June 2011 at 08:54 | #6

      yupz….download aja gan…
      database nya sengaja gak di upload dalam bentuk file sql…karna di posting nya udah ada query database nya…..

  5. akmal
    14 June 2011 at 00:20 | #7

    bang bagaimana caranya mengganti image loadingnya dengan yang full layar

    • Zhein
      14 June 2011 at 15:43 | #8

      untuk yang full screen, pake LightBox plugin punya jquery…download dulu plugin nya..
      mungkin next time saya posting…

  6. 19 May 2011 at 22:26 | #9

    Bang kok script ny gk bisa di download ya ??????????

    • Zhein
      20 May 2011 at 09:03 | #10

      Mohon maaf kalo link download nya bermasalah…Saya sudah ganti ke link yang baru..terima kasih sebelumnya…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.