Login page dengan filter injection, filter field dan session
#1
Ijin berbagi untuk page login, menggunakan session, filter field, cek field null dengan JS,
disini saya hanya akan menjelaskan untuk file login.php nya saja,

Ini untuk pemula, bagi yg sudah mahir silahkan dikoreksi,
Code:
<?php
/* session di registerkan */
session_start();

/*
Pengecekan session, jika user telah berhasil login dan mencoba
mengakses page login kembali tanpa logout terlebih dahulu
maka user akan dibawa kembali ke halaman main/utama
*/

if (!empty($_SESSION[sr_username]) and !empty($_SESSION[sr_password]))
    {
        header("location: main.php?page=home");
    }
    
else
    {
/*
include file konfigurasi
untuk koneksi database
*/
require_once "config.php";

$username = $_POST['username'];
$password = md5($_POST['password']);

/*
memfilter field username dan password
untuk menghindari inject pada field login
jika tidak di filter user dapat login tanpa
mengetahui password dari admin, jika di database
username dari admin adalah administrator dan
user memasukan administrator'#' pada field username
maka user akan login sebagai admin tanpa user memasukan
password yg benar sekalipun
*/

$f_username=str_replace("\"", "0",$username);
$f_username=str_replace("'", "0",$username);

$f_password=str_replace("\"", "0",$password);
$f_password=str_replace("'", "0",$password);


    $query="select * from tbl_user where username='$f_username' and password='$f_password'";
    $db_query=mysql_query($query);
    $cekuser=mysql_num_rows($db_query);
    $ambil_array=mysql_fetch_array($db_query);
    
    if ($cekuser >= 1)
    {
    /*
    merigister session jika user berhasil login
    */
    
    session_start();
    session_register("sr_username");
    session_register("sr_password");
    session_register("sr_leveluser");
    
    $_SESSION[sr_username] = $ambil_array[username];
    $_SESSION[sr_password] = $ambil_array[password];
    $_SESSION[sr_leveluser] = $ambil_array[user_level];
    
        $login = 1;
        header("location: main.php?page=home");
    }
    else
    {
        $login = 0;
    }    

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1991/xhtml" />
    <head>
        <title>Login Page</title>
<!--
script untuk alert jika user tidak memasukan username
dan password pada field
-->

<script type="text/javascript">
function validate_required(field,alerttxt)
{
with (field)
  {
  if (value==null||value=="")
    {
    alert(alerttxt);return false;
    }
  else
    {
    return true;
    }
  }
}

function validate_form(thisform)
{
with (thisform)
  {
  if (validate_required(username,"Username tidak boleh kosong.!")==false)
  {username.focus();return false;}
  
  else if (validate_required(password,"Password tidak boleh kosong.!")==false)
  {password.focus();return false;}
  }

}
</script>

    </head>
<body>
<!--
pemanggilan function untuk mengecek field
pada form login, jika user men-submit form tanpa mengisi username dan
password, maka alert akan memberi peringatan agar user
mengisi kedua field. gunakan onsubmit="return validate_form(this)"
-->

<form action="<?php echo $_SERVER['PHP_SELF']; ?>?page=login" onsubmit="return validate_form(this)" method="POST" >
<div id="konten_login">
        <div id="judul_login">LOGIN
            <?php
                if ($_REQUEST['page'] == 'login')
                    {
                        if ($login == 0)
                        {
                            echo ":<font color='red'> Login gagal, silahkan periksa kembali.!</font>";
                        }
                    }
            ?>
        </div>
        <?php
        if ($_REQUEST['page'] == 'login')
            {
            if ($login == 0)
                {
                    echo "<div id='pic_login_panic' title='Oops... silahkan login dengan benar. !'></div>";
                }
            }
        else
            {
                echo "<div id='pic_login' title='Silahkan login terlebih dahulu. !'></div>";
            }
        ?>
    <div id="wrap_login_input">
        <table border="0" cellpadding="4">
            <tr>
                <td>Username</td><td width="5px"></td><td><input id="input" type="text" name="username" /></td>
            </tr>
            <tr>
                <td>Password</td><td width="5px"></td><td><input id="input" type="password" name="password" /></td>
            </tr>
            <tr><td></td><td></td></tr>
            <tr>
                <td></td><td width="5px"></td><td align="right"><input type="submit" name="submit" value="Login" /></td>
            </tr>
        </table>
    </div>
</div>
</form>

</body>
</html>

<?php

}
?>
disini saya tidak menyertakan semua file yg dibutuhkan salah satunya file style.css untuk mengatur interface'nya karena akan terlalu panjang jika ditulis semua
disini hanya bagian yg penting yang saya tulis.

semoga bisa menjadi referensi bagi pemula.
Open Source Memberi Kebebasan Ber-EXPRESI

#2
mantab, ijin menyimak Smile

+1 dari ane






Users browsing this thread: 1 Guest(s)