Texno.ID – Cara membuat login sederhana PHP merupakan suatu hal yang penting untuk Anda pahami. Pasalnya, login sangat penting bagi aplikasi berbasis web, desktop, atau yang lainnya. Dalam hal ini, login berfungsi untuk membatasi akses dari user supaya tidak dapat mengakses bagian dari sistem.
Dengan demikian, user hanya dapat mengakses sesuai hak akses yang telah diberikan. Selain itu, login juga bermanfaat sebagai security data atau akun, sehingga tidak sembarang orang dapat mengaksesnya.
Mengetahui Cara Membuat Login PHP Sederhana
Pada suatu website, sebaiknya menggunakan form login untuk meningkatkan keamanan suatu website. Selain itu, form login juga dapat memudahkan untuk mengidentifikasi seseorang yang akan login.
Dengan adanya fitur login, maka suatu website dapat memberikan fitur khusus kepada para membernya yang tidak dapat digunakan oleh para pengunjung lainnya.
Langkah-langkah Membuat Login PHP Sederhana
Berikut ini beberapa langkah dalam membuat Login PHP sederhana yang dapat Anda lakukan, antara lain:
Persiapan yang harus Anda lakukan sebelum membuat login PHP sederhana antara lain siapkan web server pada komputer lokal yang Anda gunakan.
Selanjutnya, Anda juga perlu belajar mengenai session di dalam PHP.
Persiapan berikutnya membuat tampilan halaman login. Dalam hal ini, kita akan menggunakan framework Bootstrap 4. Bootstrap merupakan framework css yang dapat memudahkan kita dalam membuat tampilan website.
Sebagai persiapan awal, Anda buat sebuah folder baru dengan nama Login-PHP, kemudian simpan pada folder xampp/htdocs/.
Berikutnya adalah pembuatan database dengan nama latihan, kemudian buat tabel user pada database latihan tersebut dan isi table user.
Langkah berikutnya yang harus Anda lakukan adalah membuat koneksi dengan MySQLnya yang akan Anda coding pada file koneksi.php.
Cara membuat login php sederhana selanjutnya adalah dengan membuat folder baru di dalam htdocs dan beri nama latihan. Pada folder latihan, Anda buat file bernama form_login.php. Penting untuk Anda ingat, mengenai penamaan file PHP tidak boleh menggunakan spasi. Kemudian pada file form_login.php dapat Anda ketikkan kode tertentu.
Proses berikutnya, Anda buat file proses_login.php di dalam folder yang sama. Langkah berikutnya buka browser dan isi url localhost/latihan/form_login.php.
Penjelasan File untuk Proses Login PHP
Langkah awal, buat semua file process.php dengan fungsi sebagai file yang memproses form saat di submit. Selanjutnya penjelasan process.php antara lain terdiri dari Code session-start (); yang berada paling atas. Kode ini memiliki fungsi supaya pengguna dapat menggunakan session dalam file.
Karena tutorialnya cukup sederhana, maka list user yang dapat login ke dalam sistem sebaiknya pengguna definisikan dulu dalam variable $list-user pada line 6. Sedangkan pada line 19, pengguna akan menampung user yang diperoleh dari form pada login.php.
Untuk line 28, akan ada perulangan dari data $list user serta mengecek apakah username juga password dari form login sesuai dengan list user.
Apabila username serta password sudah benar, maka kita redirect ke halaman index.php. Namun jika username dan password salah, maka kita redirect kembali ke halaman login.php dengan pesan session.
Selain membuat file login.php, pengguna juga harus membuat file untuk handle proses logout yang bernama logout.php. Pada file ini, pengguna menghapus semua session yang telah dibuat sebelumnya. Apabila telah logout, maka redirect lagi ke halaman login.php dengan pesan login berhasil.
Selain penjelasan mengenai cara membuat login PHP sederhana di atas, terdapat hal penting lain yang harus Anda perhatikan. Halaman login akan menampilkan pesan error apabila username atau password salah dan ketika pesan telah logout.
Codekop - Halo semua jumpa lagi dengan tutorial codekop, kali ini saya ingin membuat tutorial Cara Membuat Login dan CRUD dengan OOP PHP PDO dan MySQL. Pada tutorial kali ini saya langsung menerapkan cara-cara membangun aplikasi dengan Login dan CRUD. untuk desain template sendiri kita pakai Bootstrap ya, biar lebih mudah dan agar lebih bagus hasilnya.
Apa itu CRUD ?
seperti pernah di bahas pada artikel sebelumnya Tutorial Membuat CRUD Native PHP dengan PDO MySQL CRUD adalah singkatan dari Create Read Update Delete, yaitu istilah untuk perintah ke database yaitu Create=INSERT, Read=SELECT, Update=UPDATE dan Delete=DELETE. Jadi di tutorial ini akan di jelaskan bagaimana membuat sebuah sistem yang nantinya bisa digunakan untuk INSERT, SELECT, UPDATE dan DELETE ke database MySQL dengan menggunakan Query SQL dan Bahasa Pemrograman PHP.
Apa itu OOP ?
OOP (Object Oriented Programming) adalah suatu metode pemrograman yang berorientasi kepada objek. Tujuan dari OOP diciptakan adalah untuk mempermudah pengembangan program dengan cara mengikuti model yang telah ada di kehidupan sehari-hari.
Login dengan SESSION
pada tutorial kali ini kalian belajar membuat session di login, Session adalah merupakan variable sementara yang diletakan di server dimana informasi yang dihasilkan dirujuk kepada user atau client tertentu. Seperti penerapan session pada login, php akan mengingat user / atau client yang telah login dan mempertahankan informasi user / client.
Ilustrasi Login dengan Session :
masuk ke form login -> mengisi form login -> cek informasi ke database jika benar -> membuat session -> lalu redirect masuk halaman admin yang digunakan khusus session.
Tahapan :
Tahapan-tahapan yang kita pelajari pada tutorial kali ini adalah :
Membuat Database, dan table User
Membuat koneksi php pdo dengan mysql
membuat halaman login berserta proses login php oop
Membuat crud dengan php oop table User
Spesifikasi : XAMPP yang versi PHP 5.6.x keatas rekomendasi PHP 7.x
Mulai Tutorial :
Membuat database baru
nyalakan Apache web server anda dan MySQL di XAMPP dan buka browser dan masuk phpmyadmin untuk membuat database baru, kali ini saya beri nama tutorial_phpoop untuk nama databasenya, dan buat table dengan nama tbl_user atau lebih cepat import aja script berikut ini simpan dengan ekstensi .sql dan import di phpmyadmin :
-- phpMyAdmin SQL Dump
-- version 4.9.0.1
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Waktu pembuatan: 26 Agu 2019 pada 13.02
-- Versi server: 10.3.16-MariaDB
-- Versi PHP: 7.3.8
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `tutorial_phpoop`
--
-- --------------------------------------------------------
--
-- Struktur dari tabel `tbl_user`
--
CREATE TABLE `tbl_user` (
`id_login` int(11) NOT NULL,
`username` varchar(255) NOT NULL,
`password` varchar(255) NOT NULL,
`nama_pengguna` varchar(255) NOT NULL,
`telepon` varchar(15) NOT NULL,
`email` varchar(255) NOT NULL,
`alamat` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data untuk tabel `tbl_user`
--
INSERT INTO `tbl_user` (`id_login`, `username`, `password`, `nama_pengguna`, `telepon`, `email`, `alamat`) VALUES
(1, 'fauzan', '202cb962ac59075b964b07152d234b70', 'Fauzan Falah', '089618173609', '[email protected]', 'Bekasi'),
(2, 'faiz', '202cb962ac59075b964b07152d234b70', 'M Faiz', '081298669897', '[email protected]', 'Bekasi');
--
-- Indexes for dumped tables
--
--
-- Indeks untuk tabel `tbl_user`
--
ALTER TABLE `tbl_user`
ADD PRIMARY KEY (`id_login`);
--
-- AUTO_INCREMENT untuk tabel yang dibuang
--
--
-- AUTO_INCREMENT untuk tabel `tbl_user`
--
ALTER TABLE `tbl_user`
MODIFY `id_login` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;
COMMIT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Jika sudah sampai tahap ini berarti anda sudah selesai membuat database tutorial_phpoop dan tbl_user sebagai tablenya.
Membuat Struktur Folder
langkah kali ini adalah membuat folder dan file php nya berikut struktur folder yang akan saya buat pada tutorial kali ini :
dalam folder proses :
Membuat Koneksi PHP dengan MySQL
pada langkah kali ini kita membuat koneksi antar php dengan mysql, koneksi kali ini saya menggunakan php pdo sebagai drivernya, pada OOP kita dirujuk menggunakan objek / model pada suatu aktivitas, biasa nya OOP diterapkan menggunakan class dan function pada PHP contoh script :
- class koneksi yang berisi function DBConnect merupakan fungsi untuk menghubungkan php ke database mysql.
Membuat Class prosesCrud
langkah kita yang selanjutnya adalah membuat class prosesCrud yang berisi fungsi-fungsi untuk memanggil data dari database, melihat isi database, tambah/edit/hapus database dan membuat validasi proses untuk login atau lebih jelasnya lihat script dibawah yang sudah diberi komentar :
proses/prosescrud.php
db = $db;
}
function proses_login($user,$pass)
{
// untuk password kita enkrip dengan md5
$row = $this->db->prepare('SELECT * FROM tbl_user WHERE username=? AND password=md5(?)');
$row->execute(array($user,$pass));
$count = $row->rowCount();
if($count > 0)
{
return $hasil = $row->fetch();
}else{
return 'gagal';
}
}
// variable $tabel adalah isi dari nama table database yang ingin ditampilkan
function tampil_data($tabel)
{
$row = $this->db->prepare("SELECT * FROM $tabel");
$row->execute();
return $hasil = $row->fetchAll();
}
// variable $tabel adalah isi dari nama table database yang ingin ditampilkan
// variable where adalah isi kolom tabel yang mau diambil
// variable id adalah id yang mau di ambil
function tampil_data_id($tabel,$where,$id)
{
$row = $this->db->prepare("SELECT * FROM $tabel WHERE $where = ?");
$row->execute(array($id));
return $hasil = $row->fetch();
}
function tambah_data($tabel,$data)
{
// buat array untuk isi values insert sumber kode
// http://thisinterestsme.com/pdo-prepared-multi-inserts/
$rowsSQL = array();
// buat bind param Prepared Statement
$toBind = array();
// list nama kolom
$columnNames = array_keys($data[0]);
// looping untuk mengambil isi dari kolom / values
foreach($data as $arrayIndex => $row){
$params = array();
foreach($row as $columnName => $columnValue){
$param = ":" . $columnName . $arrayIndex;
$params[] = $param;
$toBind[$param] = $columnValue;
}
$rowsSQL[] = "(" . implode(", ", $params) . ")";
}
$sql = "INSERT INTO $tabel (" . implode(", ", $columnNames) . ") VALUES " . implode(", ", $rowsSQL);
$row = $this->db->prepare($sql);
//Bind our values.
foreach($toBind as $param => $val){
$row ->bindValue($param, $val);
}
//Execute our statement (i.e. insert the data).
return $row ->execute();
}
function edit_data($tabel,$data,$where,$id)
{
// sumber kode
// https://stackoverflow.com/questions/23019219/creating-generic-update-function-using-php-mysql
$setPart = array();
foreach ($data as $key => $value)
{
$setPart[] = $key."=:".$key;
}
$sql = "UPDATE $tabel SET ".implode(', ', $setPart)." WHERE $where = :id";
$row = $this->db->prepare($sql);
//Bind our values.
$row ->bindValue(':id',$id); // where
foreach($data as $param => $val)
{
$row ->bindValue($param, $val);
}
return $row ->execute();
}
function hapus_data($tabel,$where,$id)
{
$sql = "DELETE FROM $tabel WHERE $where = ?";
$row = $this->db->prepare($sql);
return $row ->execute(array($id));
}
}
keterangan :
- class yang berisikan fungsi -fungsi mulai dari proses login, tampil data, edit data, tambah / update dan hapus (CRUD)
Membuat panggil.php
lalu setelah membuat class-class diatas, langkah selanjutnya adalah membuat file panggil.php taruh di folder proses yang bertujuan untuk memanggil class-class yang kita buat tadi untuk digunakan fungsi fungsinya :
DBConnect();
// panggil class prosesCrud di file prosescrud.php
$proses = new prosesCrud($koneksi);
// menghilangkan pesan error
error_reporting(0);
// panggil session ID
$id = $_SESSION['ADMIN']['id_login'];
$sesi = $proses->tampil_data_id('tbl_user','id_login',$id);
?>
Membuat crud.php
setelah file class-class dan file panggil nya di buat, sekarang kita buat proses untuk mengirimkan data-data anda input ke database dengan sebuah fungsi dari class yang kita buat tadi, supaya bisa tambah,edit,hapus dan autentikasi login, lalu method GET aksi berfungsi sebagai parameter untuk proses tersebut, misal tambah user diberikan script khusus tambah user, begitu pula edit dan sebagainya, dan semua login dan crud diatur dalam file ini dengan method GET aksi :
$user,
'password' =>md5($pass),
'nama_pengguna' =>$nama,
'telepon' =>$telepon,
'email' =>$email,
'alamat' =>$alamat
);
$proses->tambah_data($tabel,$data);
echo '';
}
// proses edit
if(!empty($_GET['aksi'] == 'edit'))
{
$nama = strip_tags($_POST['nama']);
$telepon = strip_tags($_POST['telepon']);
$email = strip_tags($_POST['email']);
$alamat = strip_tags($_POST['alamat']);
$user = strip_tags($_POST['user']);
$pass = strip_tags($_POST['pass']);
// jika password tidak diisi
if($pass == '')
{
$data = array(
'username' =>$user,
'nama_pengguna' =>$nama,
'telepon' =>$telepon,
'email' =>$email,
'alamat' =>$alamat
);
}else{
$data = array(
'username' =>$user,
'password' =>md5($pass),
'nama_pengguna' =>$nama,
'telepon' =>$telepon,
'email' =>$email,
'alamat' =>$alamat
);
}
$tabel = 'tbl_user';
$where = 'id_login';
$id = strip_tags($_POST['id_login']);
$proses->edit_data($tabel,$data,$where,$id);
echo '';
}
// hapus data
if(!empty($_GET['aksi'] == 'hapus'))
{
$tabel = 'tbl_user';
$where = 'id_login';
$id = strip_tags($_GET['hapusid']);
$proses->hapus_data($tabel,$where,$id);
echo '';
}
// login
if(!empty($_GET['aksi'] == 'login'))
{
// validasi text untuk filter karakter khusus dengan fungsi strip_tags()
$user = strip_tags($_POST['user']);
$pass = strip_tags($_POST['pass']);
// panggil fungsi proses_login() yang ada di class prosesCrud()
$result = $proses->proses_login($user,$pass);
if($result == 'gagal')
{
echo "";
}else{
// status yang diberikan
session_start();
$_SESSION['ADMIN'] = $result;
// status yang diberikan
echo "";
}
}
?>
Mulai Mendesain
nah langkah selanjutnya kita buat desain html dengan menggunakan bootstrap, langkah ini tidak perlu mendownload source code bootstrap atau pun plugin tambahan karena sudah di panggil dengan CDN, artinya hanya butuh koneksi internet agar desain dapat berjalan dengan baik :
login.php
Belajar Login bersama codekop.com
Anda Berhasil Logout
Login Anda Gagal, Periksa Kembali Username dan Password
kode berikut digunakan saat kondisi jika session telah ada (!empty) maka kosongkan , jika tidak ada maka panggil session_start(); , cara ini efektif menanggulangi error kode saat memanggil fungsi session_start(), biasanya error yang dimunculkan karena terjadi double pemanggilan session_start() di file, atau halaman lain. script ini terletak di setiap halaman php
session_start() merupakan fungsi perintah awal jika kita ingin menggunakan fungsi sesi yang ada di php.
lalu kode ini membuat data user diambil dari sesi id login, dan mengambil data table user berdasarkan id dari sesi yang telah dibuat. script ini terletak di proses/panggil.php