Sabtu, 09 Mei 2009

Redirect Halaman Kompleks


Lagi-lagi penulis coba untuk membayar hutang. :D. Hutang mengenai
tutorial yang membahas redirect halaman secara kompleks. Sebelum menuju
inti pembahasan, penulis akan beri penjelasan apa dan bagaimana contoh
kasus dari redirect halaman secara kompleks ini.
Mungkin ada
sebagian orang yang pernah mencoba searching di google mengenai artikel
yang dia cari, namun ketika mendapatkan artikel tersebut, web tersebut
hanya membolehkan user yang sudah teregistrasi saja yang dapat
mengakses artikel tersebut. Maka, langkah selanjutnya yang dilakukan
oleh user tersebut adalah meregistrasikan dirinya untuk menjadi member
pada website tersebut, pada form yang letak halamannya berbeda dengan
artikel yang dicari. Namun setelah proses registrasi selesai, dan
proses login berhasil, user secara otomatis di redirect ke halaman yang
dia tuju sebelumnya. Ini adalah contoh kecil dari redirect kompleks.
Contoh lainnya, ketika user yang akan mencoba untuk mendownload sebuah
file pada halaman tertentu di suatu website, user tersebut diharuskan
untuk login terlebih dahulu, tapi setelah login user langsung
diredirect secara otomatis menuju halaman download. :D. Pada tutorial
kali ini, penulis akan coba jawab itu berbagai persoalan tersebut. Mari
.. mari ... :D

Ya, persiapkan terlebih dulu databasenya :

create database simple_cms ;
use simple_cms ;
create table user( id int(5) PRIMARY KEY auto_increment, username varchar(20), password varchar(50));
create table article (id int(5) PRIMARY KEY auto_increment, penulis varchar(20), judul varchar(200), isi text);

insert into user values ('','admin',md5('admin'));
insert
into article values('','Loka Dwiartara','Kegantengan
Abadi','Kegantengan abadi terpancar dari kekerenan sejati. Aura
kegantengan selalu terpancar dari kerennya seseorang. :D. Kadang banyak
yang berpikir keindahan secara fisik itu melebihi dari segalanya. Kita
tahu bahwa b_scorpio itu tidak ganteng, tapi setidaknya tolong hargai
dia :D'),  ( '','Loka Dwiartara','PHP is powerfull easy
language ... ', 'Kekerenan php dalam menangani pengembangan sistem
informasi berbasis website patut di acungi 4 jempol kaki dan tangan,
kehebatannya melebihi b_scorpio yang tidak pandai menggaet i#a, wanita
yang dia suka. ;D~~~, peace ... damai ... ') ;


Selanjutnya, config.php :
<?php
$host = "localhost";
$username = "root";
$password = "";
$database = "simple_cms" ;

$connect = mysql_connect($host, $username, $password);
mysql_select_db( $database , $connect) or die ("MySQL is error!!");
?>

Kemudian, halaman login.php :

<html>
<head><title>Login Page ...!</title></head>
<body>
<form action=cek.php method=POST>
<table
border=0
bcolor=#DFDFDF><tr><td>username</td><td><input
type=text name=username></td></tr>

<tr><td>password</td><td><input type=password name=password></td></tr>
<tr><td></td><td><input type=submit name=submit value=submit></td></tr>
</table>
</form>
</body>
</html>

Selanjutnya, file cek.php, disinilah redirect kompleks halaman berada :

<?php
session_start();
require_once "config.php";

if (ISSET($_POST['username']) && ISSET($_POST['password']) )
{
    $username = $_POST['username'];
    $password = md5($_POST['password']);
    $session_halaman = $_SESSION['halaman'];

    $cekuser = "select username, password from user where username = '$username' and password = '$password'";
    $query_cekuser = mysql_query($cekuser);
    $exist = mysql_num_rows($query_cekuser);

    if ($exist >= 1)
    {
        $_SESSION['user'] = session_id();
        header("location: index.php?view=page&id=$session_halaman");
    }
    
    else
    {
        header("location: login.php");
    }

}

?>

Dan halaman index.php, untuk menampilkan artikelnya :

<?php
session_start();
require_once "config.php";
if (!ISSET($_REQUEST['id']) )
{
    $list_article = "select * from article";
    $query_list_article = mysql_query($list_article);
    echo "<h3>Article Today</h3>";    
    if (ISSET($_SESSION['user']))
    {
  
     echo "</p><b>Welcome back User</b>. Do you want
<a href=logout.php>logout</a> ? :D~~ </p>";

    }
    
    
    while ($showlist = mysql_fetch_array($query_list_article))
    {    
        $id = $showlist['id'];
        $penulis = $showlist['penulis'];
        $judul = $showlist['judul'];
        $isi = $showlist['isi'];
        $panjangartikel = strlen($isi);
        $isi_dipotong = substr($isi, 0, 60);
        $isi_fix = substr($isi, 0, strrpos($isi_dipotong, " "));
        $isi_fix .= "...";
        
        echo "<b>$judul</b><br>
              Oleh : $penulis<br>
              <p>$isi_fix <a href=index.php?view=page&id=$id>selengkapnya</a></p>
              <hr width=45% align=left>";
              
    }
}

else if (ISSET($_REQUEST['view']) && ISSET($_REQUEST['id']) )
{

    $id = $_REQUEST['id'] ;
    if (!ISSET($_SESSION['user']))
        {
        $_SESSION['halaman'] = $id ;
        echo "Login dulu dong <a href=login.php>di sini</a>";
        }
        
    else
        {
        $list_article = "select * from article where id = '$id' ";
        $query_list_article = mysql_query($list_article);
    
        while ($showlist = mysql_fetch_array($query_list_article))
            {    
            $id = $showlist['id'];
            $penulis = $showlist['penulis'];
            $judul = $showlist['judul'];
            $isi = $showlist['isi'];
        
            echo "<h3>Article Today</h3>";
            echo "<b>$judul</b><br>
                    Oleh : $penulis<br>
                    <p>$isi</p>
                    <hr width=100% align=left>";
              
            }
            
            echo "<a href=index.php?view=page>Kembali...</a>";
        }
    
}

?>


Terakhir adalah, file logout.php :

<?php
session_start();
unset($_SESSION['user']);
session_destroy();
header("location: index.php");
?>

Hmmm..
panjang juga scriptnya. :D~ Penulis coba jelaskan beberapa baris yang
penting saja. Lihat ke halaman index.php, di situ terdapat baris
seperti ini  :

....
else if (ISSET($_REQUEST['view']) && ISSET($_REQUEST['id']) )
{

    $id = $_REQUEST['id'] ;
    if (!ISSET($_SESSION['user']))
        {
        $_SESSION['halaman'] = $id ;
        echo "Login dulu dong <a href=login.php>di sini</a>";
        }
        

...

else if (ISSET($_REQUEST['view']) && ISSET($_REQUEST['id']) )
Ini berarti, jika user mengklik salah satu artikel di halaman index,

if (!ISSET($_SESSION['user']))
dan jika user belum login,

$_SESSION['halaman'] = $id ;
maka, rekam halaman yang akan dibuka, simpan halaman tersebut ke dalam variable session.

echo "Login dulu dong <a href=login.php>di sini</a>";
Persilahkan user untuk login dulu.

Nah selanjutnya, jika user telah login maka artikel langsung di perlihatkan seluruhnya, seperti pada baris ini

....
else
        {
        $list_article = "select * from article where id = '$id' ";
        $query_list_article = mysql_query($list_article);
    
        while ($showlist = mysql_fetch_array($query_list_article))
            {    
            $id = $showlist['id'];
            $penulis = $showlist['penulis'];
            $judul = $showlist['judul'];
            $isi = $showlist['isi'];
        
            echo "<h3>Article Today</h3>";
            echo "<b>$judul</b><br>
                    Oleh : $penulis<br>
                    <p>$isi</p>
                    <hr width=100% align=left>";

....

Kemudian untuk script cek.php

if (ISSET($_POST['username']) && ISSET($_POST['password']) )
Jika user telah mengisi password dan username,

....

$cekuser = "select username, password from user where username = '$username' and password = '$password'";
maka buat sebuah query yang akan menyeleksi apakah username dan passwordnya ada.

...

$query_cekuser = mysql_query($cekuser);
Jalankan querynya ...

$exist = mysql_num_rows($query_cekuser);
Apakah username dan password yang dimasukkan tersebut ada dalam database?

if ($exist >= 1)
{
Jika ada,

$_SESSION['user'] = session_id();
maka buat session baru untuk user

header("location: index.php?view=page&id=$session_halaman");
Redirectkan
si user ke halaman yang dia tuju sebelumnya ... Ya, disinilah letak
dari redirect kompleksnya. :D. Cukup manfaatkan saja session yang ada
untuk meredirect user ke halaman yang dituju.

}

else
{
header("location: login.php");
jika username dan password salah, persilahkan user untuk login ulang.

}

}
Untuk screenshoot demonya seperti ini :


Ini adalah halaman pertama kali


Ketika salah satu link akan diklik, maka user diperintahkan untuk login terlebih dahulu


Setelah login berhasil maka user secara otomatis langsung di redirect ke halaman tujuan yang awal.


Yup,
penulis kira sudah cukup jelas untuk redirect kompleks. Jika ada yang
ditanyakan silahkan kirim email ke alkemail@gmail.com. Selamat mencoba.


Script tersebut dapat di download di sini
http://networkandgame.890m.com/ilmuwebsite/article/redir-complex-by-alk.zip

Greetz
: b_scorpio, abuzahra, peterpanz, kandar, phii_, syahrilrohman, ivan,
dr.emi, safril, najwa. Special for jojo. :). Hi, Jo! Have a nice day.


Sumber dari situs Ilmu Website dalam kategori php kuliah dengan judul Redirect Halaman Kompleks





Tidak ada komentar:

Posting Komentar