Membuat Jejaring Sosial sederhana dengan PHP, MYSQL, dan Bootstrap di Localhost (part 3)

Posted on Wednesday, October 28, 2015

Selamat bertemu kembali sobat.....
Pada tutorial sebelumnya kita telah membuat database “world-info, kumpulan function 'library.php' ,index.php ,login dan logout, home.php serta beberapa halaman php lainnya. Di tutorial part3 ini kita akan mencoba membuat validasi akses pada setiap halaman dengan memanfaatkan $_SESSION['id_user'].
      Maksud validasi hak akses ini adalah jika user belum login maka dia tidak bisa mengakses halaman home dan halaman lain yang membutuhkan login. Sedangkan kalau user sudah login maka ketika mengakses halaman index maka akan dialihkan ke halaman home. 
Sebelum kita mulai pastikan pembaca sudah paham dengan semua file yg telah dibuat pada Part1 dan Part2. untuk sobat yang belum paham: silahkan di baca lagi.
Sesuaikan nama databasenya, jangan sering dirubah-rubah agar koneksi halaman php ke database mysql tetap lancar.
Untuk mencegah user mengakses halaman yg tidak semestinya kita bisa gunakan $_SESSION . Kita akan tambahkan kode nya satu persatu pada tiap halaman. Caranya adalah sebagai berikut :
1. Buka halaman index.php
Ubahlah kode pada bagian atas :
<?php

include ("library.php");

?>
Menjadi kode syntak ini :
<?php

session_start();

include("library.php");

if(empty($_SESSION['id_user'])){ //fungsi jika session kosong belum login

?>
Dan tambahkan kode setelah syntak </html> di bawah ini :
<?php

}

else

{

header("Location:home.php");

}

?>
Jadi keadaan halaman index sekarang telah berada dalam sebuah fungsi if. Logikanya begini :
MULAI SESSION
CEK SESSION, JIKA KOSONG (belum login) MAKA
tampilkan halaman index buat daftar atau login
KALAU SESSION ADA NILAINYA(sudah login) MAKA
halaman dialihkan ke Home.php

 2. sobat harus perhatikan konsep menaruh script Halaman ditengah fungsi IF diatas. Halaman-halaman selanjutnya akan diberikan proses yang sama. Lakukan pengapitan halaman web seperti langkah 1 diatas pada halaman daftar_sukses.php dan gagallogin.php.

3. Setelah daftar_sukses.php dan gagallogin.php selesai ditambahkan kodenya, selanjutnya adalah home.php.
Buka home.php dan lakukan proses berikut :
ubah lah kode pada bagian atas home.php :
<?php

session_start();

include("library.php");
  

$id_user=$_SESSION['id_user'];//memakai variabel id_user dari SESSION

$nama_depan=$_SESSION['nama_depan'];

$nama_belakang=$_SESSION['nama_belakang'];

?>
Menjadi :
<?php

session_start();

include "library.php";// menggukan library


if(isset($_SESSION['id_user'])){  //jika session udh ada isinya alias udh login

  
if(isset($_GET['id_user'])){


//jika ada variabel get['id_user'], variabel ini dikirim ke halaman ini dengan menggunakan fungsi ?id_user= yg nantinya akan menempel pada link action. kalau bingung ntar ada contohnya :D

  
$id_user=$_GET['id_user'];

}

if(empty($_GET['id_user'])){ // jika tidak ada nilai GET yang dikirim ke halaman ini maka variabel $id_user nilainya adalah = $_SESSION
  

$id_user=$_SESSION['id_user'];

}

$link=koneksi_db();//buka koneksi database

//query eksekusi mencari data array

$query=mysql_fetch_array(mysql_query("select * from user where id_user='$id_user'",$link));

//menyimpan hasil query pada variabel

$nama_depan=$query['nama_depan'];

$nama_belakang=$query['nama_belakang'];

<strong>$photo</strong>=$query['foto_profil'];

?>
dan berikan kode berikut pada bagian akhir setelah </html> :
<?php

}else{

header("Location:index.php");

}

?>
NB : Variabel $photo diatas nanti akan digunakan untuk menampilkan foto profil user. Jika kita ingin menambahkan foto profil default untuk user maka lakukan langkah berikut :
a. cari gambar di google yg seperti ini, atau sobat bisa menyimpan gambar ini :

foto default.jpg

Kemudian buat folder baru pada folder namaproject dengan nama foto. seperti ini :

new folder project

Beri nama foto tadi dengan nama: default.jpg dan simpan kedalam folder foto yang baru kita buat.

b. Buka phpmyadmin, pilih database 'tutorialjaco' -> pilih table 'user' kemudian lihat isi dari kolom 'foto_profil' masih NULL.

foto profil masih "NULL"

Yang perlu kita lakukan adalah merubah isi dari foto_profil itu menjadi 'default.jpg' sesuai nama foto yang telah kita bahas sebelumnya.Untuk merubah nya lakukan dengan cara berikut :
Klik edit.

klik edit

Beri nama “default.jpg” pada foto_profil. Kemudian klik GO pada bagian bawah.

ganti foto profil

c. Setelah database dirubah, buka file 'simpan_account.php' kemudian ubahlah kode $query menjadi seperti berikut :
$query="insert into user (id_user,nama_depan,nama_belakang,email,password,kelamin,tgl_lahir,agama,foto_profil,status,alamat,hobi,level,aktif,profil_singkat)values(null,'$nama_depan','$nama_belakang','$email','$userpass','$kelamin','$tanggal',null,'default.jpg',null,null,null,'MEMBER','Y',null)";

4. Foto profil default dan hak akses halaman sudah dibereskan. Selanjutnya adalah Membuat tampilan 'home.php'yang layak disebut jejaring sosial :D . Halaman home yang akan kita bangun memiliki tampilan header sebagai berikut :

tampilan header
Struktur menu nya :
·         Brand = Tutorial jaco
·         Search Bar
·         Member List
·         Notifikasi
·         Profil
·         Home
·         Dropdown Menu (Edit info,Ganti password,Ganti foto, Logout)
Untuk membuat header seperti diatas kita gunakan bootstrap agar lebih mudah.Buatlah sebuah new file php dengan nama header.php dan kosong kan isinya. kemudian isikan code berikut :
<nav id="myNavbar" class="navbar navbar-default navbar-inverse navbar-fixed-top" role="navigation">

        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="container">
            <div class="navbar-header">
                 <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbarCollapse">
                     <span class="sr-only">Toggle navigation</span>
 <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
              <a class="navbar-brand" href="index.php"><span class="glyphicon glyphicon-th-large"></span> WORLD-INFO <span class="glyphicon glyphicon-th-large"></span></a>
              <form role="search" class="navbar-form navbar-left" action="cariteman.php" method="post">
            <div class="form-group">
                <input type="text" placeholder="Search" class="form-control">
            </div>
        </form>
            </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="navbarCollapse">
              <ul class="nav navbar-nav navbar-right">
                <li><a href = "memberpopular.php">Member List</a></li>
                <li class="dropdown">
                <a data-toggle="dropdown" class="dropdown-toggle" href=""><span class="glyphicon glyphicon-exclamation-sign" title="Notifikasi"></span></a>
                 <ul role="menu" class="dropdown-menu" style="width:400px">
                  <li class="well-sm clearfix">Notifikasi</li>
                <li class="divider"></li>
                <li class="well-sm clearfix"><a href="#">Lihat Semua Notifikasi</a></li>
                </ul>
                                <li><a href = "logout.php">Logout</a></li>
            </li>
                <li><a href = "profil.php?id_user=<?php echo "$_SESSION[id_user]";?>"><span class="glyphicon glyphicon-user"></span><?php echo   ' '.$nama_depan.' '.$nama_belakang;?></a></li>
                <li class="active"><a href = "home.php?id_user=<?php echo "$_SESSION[id_user]";?>"><span class="glyphicon glyphicon-log-out"></span> HOME</a></li>
                <li class="dropdown">
                <a data-toggle="dropdown" class="dropdown-toggle" href="#"><b class="caret"></b></a>
                <ul role="menu" class="dropdown-menu" style="width:200px">
                  <li><a href="editinfo.php">Edit Info</a></li>
                <li><a href="gantifoto.php">Ganti Foto</a></li>
                    <li><a href="gantipassword.php">Ganti Password</a></li>
                <li class="divider"></li>
                <li><a href="logout.php"><span class="glyphicon glyphicon-log-out"></span> Logout</a></li>
                 </ul>
            </li>
        </ul>
            </div>
        </div>
    </nav>
Kode diatas adalah kode untuk membuat sebuah navigasi bar. Navigasi bar ini akan dipanggil pada banyak halaman web, antara lain home.php, profil.php , editinfo.php, gantipassword.php, gantifoto.php dll. jika kita ingin merubah isi dari navbar ini kita cukup mengganti isi dari header.php

5. kita akan membuat sebuah 'Badge' untuk ditampilkan dalam halaman web seperti berikut ini :

tampilan badge social network

Buatlah sebuah file php baru dengan nama bagiankiri.php dan kosongkan isinya. kemudian ketikkan kode berikut :
<div class="col-md-12"><!--BAGIAN MENU KIRI-->

                <br>

                <div class="list-group">

                        <a href="pesan.php" class="list-group-item">

        <span class="glyphicon glyphicon-envelope"></span> Pesan <span class="badge">0</span>

    </a>

    <a href="galeri.php" class="list-group-item">

        <span class="glyphicon glyphicon-picture"></span> Galeri <span class="badge">0</span>

    </a>

    <a href="teman.php" class="list-group-item">

        <span class="glyphicon glyphicon-user"></span> Teman <span class="badge">0</span>

    </a>

</div>

                </div><!--/.BAGIAN MENU KIRI-->
Ketika ada email yang belum dibaca, angka disamping tulisan pesan akan bertambah. begitu juga dengan galeri, angka disamping galeri adalah angka jumlah foto yang di upload. Angka disamping teman adalah jumlah teman yang dimiliki.

6. Kalau sudah lengkap yang kita butuhkan untuk halaman home. Maka kita edit home.php yang lama menjadi seperti ini :
<?php
session_start();
include "library.php";
if(isset($_SESSION['id_user'])){
if(isset($_GET['id_user'])){
$id_user=$_GET['id_user'];
}
if(empty($_GET['id_user'])){
$id_user=$_SESSION['id_user'];
}
$link=koneksi_db();
$query=mysql_fetch_array(mysql_query("select * from user where id_user='$id_user'",$link));
$nama_depan=$query['nama_depan'];
$nama_belakang=$query['nama_belakang'];
$photo=$query['foto_profil'];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Selamat Datang</title>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="css/bootstrap-theme.min.css">
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript" src="js/bootstrap.min.js"></script>
</head>
<body>
<?php echo include"header.php";?>
<div class="container">
        <div class="jumbotron">
        </div>
<div class="row" style="background-color:#0C9">
        <div class="col-md-2"><!--mulai colmd 2-->
    <div class="row">
        <div class="col-md-12">
            <div class="thumbnail">
                <img src="foto/<?php echo $photo;?>" class="thumbnail">
                <div class="caption">
                    <h4><?php echo $nama_depan.' '.$nama_belakang;?></h4>
                </div>
            </div>
        </div>
                    <?php include"bagiankiri.php";?>
</div>
        </div><!--akhir colmd 2-->
        <div class="col-md-6"><!--mulai colmd 6-->
            <div class="row">
  <div class="col-md-1">
            </div>               
<div class="col-md-9">               
<form action="updatestatus.php" method="post">                                               
<div class="row">
<div class="form-group">
<textarea maxlength="255" cols="40" rows="4" name="update" class="form-control" placeholder="Tulis status.."></textarea>
<button type="submit" class="btn btn-primary pull-left" value="POST" name="kirim">POST</button>
</div> 
</div>                           
</form>
</div>
<div class="col-md-2">
            </div>                                       
</div><!--/.STATUS-->
     </div><!--akhir colmd 6-->
            <div class="col-md-4"><!--mulai colmd 4-->
     </div><!--akhir colmd 4-->
        </div>
<?php 
footer();
?>
</div> <!-- END CONTAINER -->
</body>
</html>
<?php
}else{
header("Location:index.php");
}
?>
dengan kode seperti diatas kita akan mendapatkan tampilan seperti berikut ini :

Tampilan Home


Jika nanti sobat mengalami notif error, silahkan tanyakan atau laporkan saja di kotak komentar. Jika lancar-lancar saja, jangan lupa backlink ataupun follow ya.
Untuk proses Update status akan dibahas pada part4 nanti. Terima kasih telah berjuang keras sampai sekarang.

Terima Kasih dan Sampai Jumpa.....



No comments:

Post a Comment

About Me

Yoga Iman on

Followers

© WORLD-INFO. Template by Template Responsive Design Powered By Blogger