Atau anda juga bisa menggunakan link url pada chrome seperti ini”
http://localhost/phpmyadmin/ “ maka tampilan awal akan seperti ini
Lalu kita akan membuat script untuk koneksi ke database tapi sebelum itu kita harus
memahami terlebih dahulu apa itu PDO pada php
Pdo adalah singkatan dari php data object. lain halnya dengan mysqli, pdo justru
berorientasi hanya pada objek dan mendukung sejumlah tipe database yang menggunakan
php, seperti mysql, mssql, informix, dan postgresql
Note: Fungsi mysql_ sudah usang dan tidak boleh lagi digunakan karena tidak aman serta
tidak pernah lagi dipelihara (maintainance) atau dikembangkan.
Salah satu fungsi penting yang juga didukung oleh MySQLi dan PDO
adalah prepared statements. Fungsi ini akan mempercepat waktu yang dibutuhkan oleh
MySQL untuk menjalankan query yang sama berkali-kali. Prepared statement juga
berfungsi untuk mencegah terjadinya serangan injeksi SQL ketika menjalankan
perubahan di database menggunakan PDO akan encrypt dan hash sebuah password yang
sudah di buat hal itu lah yang membuat pdo ini lebih secure dibanding mysqli karena
menggunakan hash md5 supaya tidak terjadi injeksi SQL.
Buka sublime lalu buat folder baru pert14 dan buat file dengan nama database.php
Lalu kita buat terlebih dahulu databasenya buka Kembali phpMyAdmin buat database
denga nama “login” lalu klik create
Kenapa menampilkan tampilan seperti itu karena kita membuat statemen ketika koneksi
berhasil terhubung maka akan menampilkan statement echo yang sudah di buat
Supaya tidak menggangu saat sudah menampilkan sebuah website pada bagian
echo’Koneksi Berhasil’; hapus pada bagian Koneksi Berhasil Saja.
Penjelasan :
- Block try adalah code yg akan dieksekusi apabila tidak ada kesalahan didalamnya.
- Block catch untuk penangan error yang didalam block try terdapat kesalahan atau error.
- PDOException -> merupakan error handling untuk PDO
- $error -> variabel penampung biasa, disini kita bebas menggunakan nama apa saja, mau
$error, $gagal dll.
- $error->getMessage(); -> merupakan notifikasi kesalahan yang menyebabkan koneksi
gagal dilakukan.
<head>
<title>Method GET</title>
</head>
<body>
<form action="" method="GET">
<input type="text" name="nama"><br />
<input type="number" name="umur"><br />
<input type="submit" name="submit" value="Sumbit">
</form>
<?php
if ($_GET) {
echo "Nama: " . $_GET["nama"];
echo "<br/>";
echo "Umur: " . $_GET["umur"];
}
?>
</body>
</html>
Seperti itulah penggunaan Method GET pada PHP. Ada yang sering mengatakan
Methode ini tidak aman karena Data yang kira inputkan terlihat di URL dan bisa diganti-
ganti secara asal
Method POST adalah metode pengiriman data yang Datanya tidak disimpan pada
URL. Data pada method POST ini tetap dikirimkan akan tetapi tidak ditampilan pada
URL seperti GET. Method POST ini biasanya digunakan saat registrasi yang
membutuhkan input email dan password yang seharusnya tidak muncul di URL
Contoh Program method post
<html lang="en">
<head>
<title>Method POST</title>
</head>
<body>
<form action="" method="POST">
<input type="text" name="nama"><br />
<input type="number" name="umur"><br />
<input type="submit" name="submit"
value="Sumbit">
</form>
<?php
if ($_POST) {
echo "Nama: " . $_POST["nama"];
echo "<br/>";
echo "Umur: " . $_POST["umur"];
}
?>
</body>
</html>
Potongan syntax diatas akan menghasilkan Hasil yang sama seperti yang ada di
Method GET. Tapi bedanya, saat kita isi kita tidak bisa melihat yang kita inputkan di
URL
try
{
?>
Buat file lagi dengan nama login.php
<?php
session_start();
require_once('database.php');
if(isset($_POST['submit']))
{
if(isset($_POST['email'],$_POST['password']) && !empty($_POST['email'])
&& !empty($_POST['password']))
{
$email = trim($_POST['email']);
$password = trim($_POST['password']);
if(filter_var($email, FILTER_VALIDATE_EMAIL))
{
$sql = "select * from members where email = :email ";
$handle = $pdo->prepare($sql);
$params = ['email'=>$email];
$handle->execute($params);
if($handle->rowCount() > 0)
{
$getRow = $handle->fetch(PDO::FETCH_ASSOC);
if(password_verify($password, $getRow['password']))
{
unset($getRow['password']);
$_SESSION = $getRow;
header('location:dashboard.php');
exit();
}
else
{
$errors[] = "Email atau Password salah";
}
}
else
{
$errors[] = "Email atau Password salah";
}
}
else
{
$errors[] = "Email tidak valid ";
}
}
else
{
$errors[] = "Email dan Password perlu di isi ";
}
}
?>
<!doctype html>
<html>
<head>
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity="sha384-
MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdkn
LPMO" crossorigin="anonymous">
</head>
<body class="bg-dark">
}
}
?>
<form method="POST" action="<?php echo
$_SERVER['PHP_SELF'];?>">
<div class="form-group">
<label for="email">Email:</label>
<input type="text" name="email"
placeholder="Masukan Email.." class="form-control">
</div>
<div class="form-group">
<label for="email">Password:</label>
<input type="password" name="password"
placeholder="Masukan Password..." class="form-control">
</div>
if(isset($_POST['submit']))
{
if(isset($_POST['first_name'],$_POST['last_name'],$_POST['email'],$_POST['passw
ord']) && !empty($_POST['first_name']) && !empty($_POST['last_name']) &&
!empty($_POST['email']) && !empty($_POST['password']))
{
$firstName = trim($_POST['first_name']);
$lastName = trim($_POST['last_name']);
$email = trim($_POST['email']);
$password = trim($_POST['password']);
$options = array("cost"=>4);
$hashPassword = password_hash($password,PASSWORD_BCRYPT,$options);
$date = date('Y-m-d H:i:s');
if(filter_var($email, FILTER_VALIDATE_EMAIL))
{
$sql = 'select * from members where email = :email';
$stmt = $pdo->prepare($sql);
$p = ['email'=>$email];
$stmt->execute($p);
if($stmt->rowCount() == 0)
{
$sql = "insert into members (first_name, last_name, email, `password`,
created_at,updated_at) values(:fname,:lname,:email,:pass,:created_at,:updated_at)";
try{
$handle = $pdo->prepare($sql);
$params = [
':fname'=>$firstName,
':lname'=>$lastName,
':email'=>$email,
':pass'=>$hashPassword,
':created_at'=>$date,
':updated_at'=>$date
];
$handle->execute($params);
}
catch(PDOException $e){
$errors[] = $e->getMessage();
}
}
else
{
$valFirstName = $firstName;
$valLastName = $lastName;
$valEmail = '';
$valPassword = $password;
if(!isset($_POST['email']) || empty($_POST['email']))
{
$errors[] = 'Email dibutuhkan';
}
else
{
$valEmail = $_POST['email'];
}
if(!isset($_POST['password']) || empty($_POST['password']))
{
$errors[] = 'Password dibutuhkan';
}
else
{
$valPassword = $_POST['password'];
}
}
?>
<!doctype html>
<html>
<head>
<!--Boostrap link-->
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity="sha384-
MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdkn
LPMO" crossorigin="anonymous">
</head>
<body class="bg-dark">
if(isset($success))
{
<div class="form-group">
<label for="email">Email:</label>
<input type="text" name="email"
placeholder="Masukan Email.." class="form-control" value="<?php echo
($valEmail??'')?>">
</div>
<div class="form-group">
<label for="email">Password:</label>
<input type="password" name="password"
placeholder="Masukan Password.." class="form-control" value="<?php echo
($valPassword??'')?>">
</div>
</form>
</div>
</div>
</div>
</body>
</html>
Buat file lagi dengan nama dashboard.php perhatikan pada syntax session first name
syntax tersebut akan memproses Ketika user berhasil masuk akan menginisialisasi dan
akan menampilkan first name yang sudah di buat pada form register
<?php
session_start();
if(!$_SESSION['id']){
header('location:login.php');
}
?>
Register.php
TUGAS
Buatlah file dengan nama logout.php kemudian buang fungsi untuk logout/keluar dari
tampilan awal dan Kembali pada tampilan login.