Login Dengan Username atau Email di PHP

Pada kesempatan sebelumnya Saya sudah membahas tentang bagaimana membuat halaman login multi user  dimana pengguna/user yang ingin login harus menggunakan email dan password yang benar.

Lalu mungkin nantinya akan muncul pertanyaan – pertanyaan baru misalnya bagimana caranya pengguna bisa login dengan menggunakan email atau username ? Jadi jika ada pengguna menggunakan email ataupun username, mereka tetap bisa masuk.
ilustrasi login

Cara Mudah Membuat Login Dengan Username atau Email di PHP

Untuk bisa membuat pengguna dapat login menggunakan username atau emailnya, caranya sebenarnya sangat mudah, kita bisa menggunakan operator logika php yaitu dengan menambahkan operator logika OR atau ||.

Operator or dan || akan mempunyai nilai yang benar jika salah satu dari nilai boolean bernilai benar, maka selain itu akan bernilai false. Jadi nanti Anda tinggal pilih apakah mau menggunakan OR atau ||


Sebelumnya Query untuk memeriksa username dan password didatabase adalah sebagai berikut : 

Script login-proses.php

<?php
include('koneksi.php');
session_start();
if(isset($_POST['login'])){
 $user = mysql_real_escape_string(htmlentities($_POST['email']));
 $pass = mysql_real_escape_string(htmlentities(md5($_POST['password'])));
 
 $sql = mysql_query("SELECT * FROM user WHERE email='$user' AND password='$pass'") or die(mysql_error()); //simpan variabel pilih user
 if(mysql_num_rows($sql) == 0){ //jika tidak ditemukan
  echo '<script language="javascript">alert("User tidak ada!"); document.location="index.php";</script>';
 }else{ //jika ditemukan
  $row = mysql_fetch_assoc($sql);
  if($row['level'] == 1){ // admin berdasarkan level, jika level 1 berarti admin
   $_SESSION['admin']=$user;
   echo '<script language="javascript">alert("Anda berhasil Login Admin!"); document.location="admin/index.php";</script>';
  }else{
   if($row['level']==2){
   $_SESSION['user']=$user; //berdasarkan kolom user
   echo '<script language="javascript">alert("Anda berhasil Login Sebagai User!"); document.location="user/index.php";</script>';
  }
  }
 }
}
?>


Maka nanti Anda rubah menjadi seperti berikut 
Script login-proses.php

<?php
include('koneksi.php');
session_start();
if(isset($_POST['login'])){
 $user = mysql_real_escape_string(htmlentities($_POST['email']));
 $pass = mysql_real_escape_string(htmlentities(md5($_POST['password'])));
 
$perintah = "SELECT * FROM user WHERE (username='$user' OR email='$user') AND password='$pass'"; 
$sql=mysql_query($perintah) or die(mysql_error()); //simpan variabel pilih user

 if(mysql_num_rows($sql) == 0){ //jika tidak ditemukan
  echo '<script language="javascript">alert("User tidak ada!"); document.location="index.php";</script>';
 }else{ //jika ditemukan
  $row = mysql_fetch_assoc($sql);
  if($row['level'] == 1){ // admin berdasarkan level, jika level 1 berarti admin
   $_SESSION['admin']=$user;
   echo '<script language="javascript">alert("Anda berhasil Login Admin!"); document.location="admin/index.php";</script>';
  }else{
   if($row['level']==2){
   $_SESSION['user']=$user; //berdasarkan kolom user
   echo '<script language="javascript">alert("Anda berhasil Login Sebagai User!"); document.location="user/index.php";</script>';
  }
  }
 }
}
?>


Kemudian bila nanti ingin menampilkan data usernya pun kita perlu menambahkan operator OR didalam query yang kita buat. Sebelumnya Query yang saya buat untuk menampilkan data user yang berhasil masuk adalah sebagai berikut 

<?php include('sesi-user.php'); ?>
<html>
<head>
 <title>Area User | root93.co.id</title>
</head>
<body>
 
 <div style="text-align:center">
  <h2>User Area</h2>
  <p><a href="index.php">Home</a> / <a href="../logout.php">Logout</a></p>
 
  <p>Anda login sebagai <?php echo $_SESSION['user']; ?></p>
 </div>
 <?php
//testing query
 include('../koneksi.php');
 $user=$_SESSION['user'];
 $perintah="SELECT * FROM user where email='$user'"; //pilih berdasarkan login emailnya
 $query=@mysql_query($perintah,$koneksi); //buart query
$data=mysql_fetch_array($query); //pecah datanya


echo "Nama Saya: <b>$data[nama] </b>";
  echo "<br/>Email Saya: <b>$data[email] </b>";
  echo "<br/>Username Saya: <b>$data[username]</b>";
  echo "<br/>level Saya: <b>$data[level] </b>";
  echo "<br/>password Saya: <b> $data[password]</b>";
?>

</body>
</html>





Nanti Scriptnya diatas Anda rubah, nanti di filter berdasarkan username atau email, sehingga bila nanti pengguna  menggunakan username atau email datanya akan ditampilkan, jika misal kita filter hanya berdasarkan data yang terdapat pada kolom email saja, maka kalau ada pengguna yang login dengan username datanya tidak akan ditampilkan

Maka nanti rubah menjadi seperti ini

<?php include('sesi-user.php'); ?>
<html>
<head>
 <title>Area User | root93.co.id</title>
</head>
<body>
 
 <div style="text-align:center">
  <h2>User Area</h2>
  <p><a href="index.php">Home</a> / <a href="../logout.php">Logout</a></p>
 
  <p>Anda login sebagai <?php echo $_SESSION['user']; ?></p>
 </div>
 <?php
//testing query
 include('../koneksi.php');
 $user=$_SESSION['user'];
 $perintah="SELECT * FROM user where (username='$user' OR email='$user')"; 
 //pilih berdasarkan login emailnya
 $query=@mysql_query($perintah,$koneksi); //buart query
$data=mysql_fetch_array($query); //pecah datanya


echo "Nama Saya: <b>$data[nama] </b>";
  echo "<br/>Email Saya: <b>$data[email] </b>";
  echo "<br/>Username Saya: <b>$data[username]</b>";
  echo "<br/>level Saya: <b>$data[level] </b>";
  echo "<br/>password Saya: <b> $data[password]</b>";
?>

</body>
</html>

Jadi kesimpulannya untuk dapat membuat login dengan menggunakan username atau password, maka nanti Anda cukup tambahkan username OR/|| email pada query yang bertugas untuk memeriksa username yang tersimpan di database 

2 Responses to "Login Dengan Username atau Email di PHP"

  1. Wuduh .. Php ngerik.
    Nunpang lewat aja deh mas sambil nunhgu buka puasa :)

    ReplyDelete
  2. Mencoba belajar dengan perlahan nih PHP ini. Aku lagi belajar juga mas, masih pemula. Ajarin dong mas :)

    ReplyDelete

Silahkan untuk meninggalkan komentar, santai saja dan mulailah berkomentar...