Cara menggunakan php get response headers

Pada saat pengunjung situs web (client) membuka peramban lalu mengetik URL (Uniform Resource Locator) www.example.com maka perintah/permintaan HTTP (HyperText Transfer Protocol) tersebut akan direspon oleh web server. Respon dari server terdiri dari header dan body yang berupa data dalam format audio, gambar, hypertext, plaintex, video, dan lain-lain yang akan tampil pada browser pengunjung.

Tanggapan/respon header dari server di layar pengunjung, client, kata para pakar keamanan situs web mungkin saja merupakan publikasi informasi sensitif yang dapat mengarah isu celah keamanan. Nah, tujuan modifikasi respon header (Modify HTTP Response Headers) adalah untuk mengurangi informasi server terutama versi Apache dan PHP tampilan pada browser tidak akurat. Akan tetapi triks ini hanya berlaku pada request dari aplikasi online sejenis Header Check Tools, atau HTTP Headers and Status Check Tool, namun informasi masih dapat ditembus dengan aplikasi scanner web site.

Meskipun dapat ditembus oleh scanner tak apa-apalah buat lucu-lucuan. Barangkali ada orang iseng yang mengecek respon header dari aplikasi online dan ternyata blog masih menggunakan PHP dan Apache versi jadul, maka tidak ketahuan. Dan bila selalu menggunakan versi terbaru agar tidak sombong karena respon header yang tampil dikacaukan. Gitu aja cukup, tidak usah muluk-muluk menutup celah keamanan karena tidak ada komputer yang terhubung dengan jaringan internet yang benar-benar aman.

Contoh respon header “X-Powered-By: PHP/5.2.17” atau “Server: Apache/versi XXX” memberi informasi versi PHP dan Apache yang digunakan. Apabila hosting blog menggunakan dedicated server maka menyembunyikan versi PHP mudah yaitu dengan menambah kode di file php.ini “expose_php = Off”. Tetapi pelanggan share hosting tidak dapat mengubah pengaturan server secara global, kecuali teriak tolong-tolong ke adm*n*strator web server. Itu pun bila adm*n*stratornya mau mengubah dan menyembunyikan versi Apache dan PHP.

Bila beruntung informasi respon header dapat ditimpa hanya dengan menambah kode di file functions.php. Misalkan akan menyembunyikan atau menimpa versi PHP.

Blog ini menggunakan plugin WP-Super Cache maka cara penambahan pada file function.php tidak efektif. Kode respon header yang akan ditampilkan pada browser adalah informasi yang terdapat pada file wp-cache-phase1.php. Dengan demikian saya modifikasi http respon header pada baris 188-194 direktori wp-content/plugins/wp-super-cache file wp-cache-phase1.php.

Di antaranya mengubah respon header Expires dan X-Powered-By. Respon header lain dapat ditambahkan sesuai kebutuhan dengan menimpa kode header.

Respon header yang ditampilkan sebenarnya bermanfaat bagi browser untuk menafsirkan isi dari situs web. Di antaranya server header apakah menggunakan Apache, IIS atau yang lain. Juga informasi tentang Content-Type, Connection, Set-Cookie, Content-Encoding, dan lain lain. Dengan demikian sebaiknya jangan dikacaukan semua informasi respon header agar browser dapat akurat menerjemahkan isi situs web Anda.

Langkah pertama dalam pembuatan CRUD Rest API Webservice adalah membuat database, saya asumsikan anda sudah mengetahui dalam pembuatan database berikut adalah script untuk pembuatan database.

nama database : dbrest
nama tabel : produk

CREATE TABLE `produk` (
  `id` int(6) unsigned NOT NULL AUTO_INCREMENT,
  `nama_produk` varchar(30) DEFAULT NULL,
  `harga` int(50) DEFAULT NULL,
  `tipe_produk` varchar(30) DEFAULT NULL,
  `stok` int(50) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Tambahkan beberapa data tabel tersebut :

INSERT INTO `produk`(`nama_produk`, `harga`, `tipe_produk`, `stok`) VALUES ('Super 25',30000,'Baju',10);

INSERT INTO `produk`(`nama_produk`, `harga`, `tipe_produk`, `stok`) VALUES ('Jeas Ver',40000,'Baju',10);

INSERT INTO `produk`(`nama_produk`, `harga`, `tipe_produk`, `stok`) VALUES ('Uyta',50000,'Baju',10);

INSERT INTO `produk`(`nama_produk`, `harga`, `tipe_produk`, `stok`) VALUES ('Vander',60000,'Baju',10);

Setelah menyelesaikan pembuatan database dan tabel selanjutnya kita akan membuat API untuk proses simpan data,ubah data dan hapus data, berikut adalah struktur folder dan file yang akan kita buat :

Cara menggunakan php get response headers

langkah awal kita akan membuat project dengan nama dbrest didalam project tersebut terdiri dari beberapa folder yang dibutuhkan yaitu :

  1. api digunakan untuk menyimpan file api
  2. config digunakan untuk menyimpan file koneksi
  3. readapi, digunakan untuk membaca api pada web browser didalam folder ini ada folder layout yang digunakan untuk menyimpan file css.

    Membuat Koneksi Database

    Sebelum membuat api kita terlebih akan membuat file koneksi.php yang tersimpan dalam folder config file ini sangat penting karena akan digunakan untuk melakukan koneksi database, berikut adalah coding dari file koneksi.php

    <?php
    define('HOST','localhost');define('USER','root');define('DB','dbrest');define('PASS','');$conn = new mysqli(HOST,USER,PASS,DB) or die('Connetion error to the database');

    Membuat API CRUD

    seperti kita lihat pada gambar diatas didalam folder api terdiri dari beberapa file yang akan dibuat yaitu :

    1. api_tampil.php
    2. api_tambah.php
    3. api_edit.php
    4. api_ubah.php
    5. api_hapus.php

    api_tampil.php

    api_tampil.php digunakan untuk menampilkan data dalam bentuk json, berikut adalah coding dari file tersebut :

    <?php
    require_once('../config/koneksi.php');
    $myArray = array();
    if ($result = mysqli_query($conn, "SELECT * FROM produk ORDER BY id ASC")) {
        	while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
            	$myArray[] = $row;
        	}
    	mysqli_close($conn);
        	echo json_encode($myArray);
    }
    

    api_edit.php

    api_edit.php digunakan untuk memilih data yang akan kita ubah, berikut adalah coding dari file tersebut:

    <?php
    require_once('../config/koneksi.php');
    
    if (isset($_GET['id'])) {
        $id = $_GET['id'];
        $SQL = $conn->prepare("SELECT * FROM produk WHERE id=? ORDER BY id ASC");
        $SQL->bind_param("i", $id);
        $SQL->execute();
        $hasil = $SQL->get_result();
        $myArray = array();
        while ($users = $hasil->fetch_array(MYSQLI_ASSOC)) {
            $myArray = $users;
        }
        echo json_encode($myArray);
    } else {
        echo "data tidak ditemukan";
    }
    

    api_ubah.php

    api_ubah.php digunakan untuk mengubah data, berikut adalah coding dari file tersebut:

    <?php
    require_once('../config/koneksi.php');
    
    if (isset($_POST['id'])) {
        $id                 = $_POST['id'];
        $nama_produk        = $_POST['nama_produk'];
        $tipe_produk        = $_POST['tipe_produk'];
        $harga              = $_POST['harga'];
        $stok               = $_POST['stok'];
        $sql = $conn->prepare("UPDATE produk SET nama_produk=?, tipe_produk=?, harga=?, stok=? WHERE id=?");
        $sql->bind_param('ssddd', $nama_produk, $tipe_produk, $harga, $stok, $id);
        $sql->execute();
        if ($sql) {
            //echo json_encode(array('RESPONSE' => 'SUCCESS'));
            header("location:../readapi/tampil.php");
        } else {
            echo json_encode(array('RESPONSE' => 'FAILED'));
        }
    } else {
        echo "GAGAL";
    }
    
    

    api_hapus.php

    api_hapus.php digunakan untuk menghapus data, berikut adalah coding dari file tersebut:

    <?php
    require_once('../config/koneksi.php');
    
    if (isset($_GET['id'])) {
        $id  = $_GET['id'];
        $sql = $conn->prepare("DELETE FROM produk WHERE id=?");
        $sql->bind_param('i', $id);
        $sql->execute();
        if ($sql) {
            echo json_encode(array('RESPONSE' => 'SUCCESS'));
            //header("location:../readapi/tampil.php");
        } else {
            echo json_encode(array('RESPONSE' => 'FAILED'));
        }
    } else {
        echo "GAGAL";
    }
    
    

    api_tambah.php

    api_tambah.php digunakan untuk menambah data, berikut adalah coding dari file tersebut:

    
    <?php
    require_once('../config/koneksi.php');
    
    if (isset($_POST['nama_produk']) && isset($_POST['tipe_produk']) && isset($_POST['harga']) && isset($_POST['stok'])) {
    	$nama_produk   	= $_POST['nama_produk'];
    	$tipe_produk 	= $_POST['tipe_produk'];
    	$harga 			= $_POST['harga'];
    	$stok 			= $_POST['stok'];
    	$sql = $conn->prepare("INSERT INTO produk (nama_produk, tipe_produk, harga, stok) VALUES (?, ?, ?, ?)");
    	$sql->bind_param('ssdd', $nama_produk, $tipe_produk, $harga, $stok);
    	$sql->execute();
    	if ($sql) {
    		//echo json_encode(array('RESPONSE' => 'SUCCESS'));
    		header("location:../readapi/tampil.php");
    	} else {
    		echo json_encode(array('RESPONSE' => 'FAILED'));
    	}
    } else {
    	echo "GAGAL";
    }
    
    

    Pembuatan API CRUD telah selesai berikut nya akan dilanjutkan pada artikel berikutnya yaitu pada link berikut :