Cara Melakukan Enkripsi Method GET di PHP

Cara Melakukan Enkripsi Method GET di PHP

Enkripsi URL perlu dilakukan supaya nilai dari variabel tidak terlihat atau mudah dibaca. Cara ini diperlukan untuk menghindari hal-hal yang tidak kita inginkan ketika sedang membangun sebuah sistem. Untuk lebih jelasnya kita perhatikan URL berikut:

http://localhost/latihan/enkripsi/edit_data.php?id=1

Nilai dari parameter tersebut terlihat yaitu memiliki id=’1′

Sekarang bagaimana caranya agar nilai dari parameter tersebut terlihat acak, kita bisa melakukan enkripsi pada nilai id=’1′.

Baiklah kita akan mencobanya, siapkan dulu beberapa filenya:
1. koneksi.php
2. database
3. tampilan
4. edit
5. fungsi enkripsi

disini saya mencoba menampilkan data, kemudian kita akan melakukan edit berdasarkan id dan untuk idnya saya akan coba lakukan enkripsi, supaya terlihat acak.

File koneksi.php

<?php
	$server = "localhost";
	$user = "root";
	$pass = "";
	$db = "db_enkrip";

	$koneksi = mysql_connect($server, $user, $pass);
	$database = mysql_select_db($db, $koneksi) or die (mysql_error());

Database

-- phpMyAdmin SQL Dump
-- version 4.5.2
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Generation Time: Jun 29, 2017 at 12:21 PM
-- Server version: 10.1.16-MariaDB
-- PHP Version: 5.6.24

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Database: `db_enkrip`
--

-- --------------------------------------------------------

--
-- Table structure for table `tbl_barang`
--

CREATE TABLE `tbl_barang` (
  `id` int(11) NOT NULL,
  `nama_barang` varchar(50) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `tbl_barang`
--

INSERT INTO `tbl_barang` (`id`, `nama_barang`) VALUES
(3, 'Laptop'),
(4, 'Notebook'),
(7, 'Hanphone'),
(9, 'Speaker');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `tbl_barang`
--
ALTER TABLE `tbl_barang`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `tbl_barang`
--
ALTER TABLE `tbl_barang`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

File tampilan

<!DOCTYPE html>
<html>
<head>
	<title>View Data | YELLOWWEB.ID</title>
</head>
<body>
	<table border="1">
		<thead>
			<tr>
				<th>No</th>
				<th>Nama Barang</th>
				<th colspan="2">Aksi</th>
			</tr>
		</thead>
		<tbody>
			<?php
				include "koneksi.php";
				include "fungsi-enkripsi.php";

				$sql = "SELECT * FROM tbl_barang";
				$query = mysql_query($sql) or die (mysql_error());

				$no = 1;

				while($data = mysql_fetch_array($query)){?>

					<tr>
						<td><?php echo $no++;?></td>
						<td><?php echo $data["nama_barang"];?></td>
						<td><a href="edit_data.php?id=<?php echo encrypt($data["id"]);?>">Edit</a></td>
						<td><a href="delete.php?id=<?php echo encrypt($data["id"]);?>">Hapus</a></td>
					</tr>

				<?php }

			?>
			
		</tbody>
	</table>

</body>
</html>

File Edit

<!DOCTYPE html>
<html>
<head>
	<title>Edit Data | YELLOWWEB.ID</title>
</head>
<body>
	<form action="update_data.php" method="POST">

		<?php
			include "koneksi.php";
			include "fungsi-enkripsi.php";

			//error_reporting(0);

			$ide = decrypt($_GET["id"]);
			
			$sql = "SELECT * FROM tbl_barang WHERE id='$ide'";
			$query = mysql_query($sql) or die (mysql_error());

			$data_edit = mysql_fetch_array($query);



		?>

		<input type="hidden" name="id" value="<?php echo $data_edit["id"];?>">

		<table>
			<tr>
				<td>Nama Barang</td>
				<td>:</td>
				<td><input type="text" name="nmbrg" value="<?php echo $data_edit["nama_barang"];?>"></td>
			</tr>
			<tr>
				<td></td>
				<td></td>
				<td>
					<input type="submit" name="submit" value="Edit">
					<input type="button" value="Go Back" onclick="history.back(-1)" />
				</td>
			</tr>
		</table>
	</form>

</body>
</html>

Fungsi Enkripsi

<?php
	function encrypt( $q ) {
	    $cryptKey  = 'qJB0rGtIn5UB1xG03efyCp';
	    $qEncoded      = base64_encode( mcrypt_encrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), $q, MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ) );
	    return( $qEncoded );
	}

	function decrypt( $q ) {
	    $cryptKey  = 'qJB0rGtIn5UB1xG03efyCp';
	    $qDecoded      = rtrim( mcrypt_decrypt( MCRYPT_RIJNDAEL_256, md5( $cryptKey ), base64_decode( $q ), MCRYPT_MODE_CBC, md5( md5( $cryptKey ) ) ), "\0");
	    return( $qDecoded );
	}
?>

Teman-teman bisa melihat nantinya ketika kursor kita arahkan ke link edit, maka id akan terlihat namun menampilkan karakter angka dan huruf acak.

Tujuan melakukan enkripsi ini supaya, parameter tidak bisa dirubah secara langsung di address bar browser.

Kalian bisa mencoba kembangkan kembali, silahkan di eksplor.

Comments are closed.