Menggunakan Fungsi Url Encode PHP untuk membuat String lebih aman untuk Browser Server dan Google
URL ENCODE PHP
Pernahkah kalian melihat deretan URL yang terdapat symbol %20 atau misalnya seperti ini lokerbumiayu.id/artikel/fungsi%20url%20encode%20php. Yah! Inilah salah satu Function yang disediakan oleh PHP untuk menjadikan sebuah Url User Friendly bagi Browser atau Server. Adanya Fungsi url encode ini menjadikan string string seperti symbol akan di ubah ke dalam string yang lebih aman ditampilkan di Url Browser atau server. Contohnya Ketika ada symbol = di bagian url kalau anda memakai Codeigniter 3.11 mungkin karakter ini tidak diizinkan kecuali anda merubah settingan terlebih dahulu. Nah, dengan menggunakan Url Encode maka string akan lebih ramah terhadap browser, server dan juga SEO Friendy bagi Google, Bing atau Search Engine lainnya.
Penggunaan Fungsi Url Encode ini sangat mudah dan support mulai dari PHP 4, PHP 5, PHP 7, PHP 8 jadi Ketika anda memakai PHP maka Fungsi Url Encode sudah Include di dalamnya dan anda tidak bisa membuat fungsi yang sama dengan nama urlencode karena ini akan mengakibatkan error atau duplicate function. Secara umum dilansir dari situs resmi php.net penggunaan Fungsi Url Encode memiliki struktur sebagai berikut:
Deskripsi Penggunaan
urlencode(string $string): string
This function is convenient when encoding a string to be used in a query part of a URL, as a convenient way to pass variables to the next page.
Parameters
string
The string to be encoded.
Jika melihat Struktur penulisan Url Encode diatas, penggunaannya sangat simple dan mudah, anda hanya perlu menggunakan fungsi urlencode() dan isi bagian di dalam kurung dengan string yang akan di encode.
Misalnya anda ingin membuat url encode pada format url
$string = “Cara Membuat Url Encode dengan phpâ€;
$encodestring = urlencode($string);
$url = https://www.lokerbumiayu.id/artikel/ . $encodestring
Maka hasilnya:
https://www.lokerbumiayu.id/artikel/cara%20membuat%20url%20encode%20dengan%20php
dan hadil dari penggunaan url encode ini dapat mempermudah Search engine memahami karakter di dalam sebuat url.
Function urlencode() digunakan untuk mengkonvert karakter atau string ke dalam bentuk format karakter URL yang valid contoh lain seperti ini
Halaman1
<?php
echo "<a href='hal2.php?param=hello world!@#$%^&*()_+'>Klik di sini</a>";
?>
Ketika script diatas diterapkan dan anda mengklik link klik di sini maka akan pindah ke hal2.php
Halaman2
<?php
$value = $_GET['param'];
echo "Nilai parameter: ".$value;
?>
Di dalam script hal1.php di atas terdapat hyperlink yang diarahkan ke URL ‘hal2.php?param=hello world!@#$%^&*()_+‘. yang mana URL tersebut terdapat sebuah parameter. Selanjutnya di script hal2.php, nantinya nilai parameter tersebut akan dibaca kemudian ditampilkan.
apa yang terjadi ketika link yang ada di hal1.php tersebut diklik? Perhatikan tampilan di bawah ini

Ternyata tidak semua karakter dalam parameternya terbaca di script hal2.php. Dalam hal ini, karakter yang tidak terbaca adalah ‘#$%^&*()_+‘. Mengapa bisa demikian? Ya.. karena karakter tersebut dianggap bukan karakter yang valid untuk sebuah URL. Lantas, bagaimana solusinya jika kita ingin mempassing nilai parameter yang terdiri dari karakter-karakter tersebut melalui GET request atau melalui URL? Ya… caranya dengan mengkonvert karakter parameter URL dengan urlencode(). Sekarang kita modifikasi script hal1.php nya dengan menambahkan urlencode() di parameter URL nya.
Halaman1
<?php
echo "<a href='hal2.php?param=".urlencode('hello world!@#$%^&*()_+')."'>Klik di sini</a>";
?>
dan setelah link yang ada tersebut diklik hasilnya adalah seperti pada gambar berikut

Dengan function urlencode() tersebut, nilai parameter ‘hello world!@#$%^&*()_+‘ dikonvert menjadi ‘hello+world!%40%23%24%25^%26*()_%2B‘. Perhatikan, bahwa beberapa karakter diubah menjadi karakter lain yang berupa tanda % diikuti dengan kode hexadecimal, salah satu contohnya: karakter @ diubah menjadi %40.
Selanjutnya saya berikan contoh lain penerapan penggunaan urlencode() ini, yaitu pada proses passing parameter berupa nomor HP melalui URL. Nomor HP bisa memiliki format +628XXXXXXXX (disertai kode negara). Sekarang misalkan kita punya script berikut ini:
Halaman1
<?php
echo "<a href='hal2.php?nohp=+628123456789'>Klik di sini</a>";
?>
Halaman2
<?php
$value = $_GET['nohp'];
echo "Nomor HP: ".$value;
?>
Apabila link yang ada di hal1.php diklik, maka tanda + yang terletak di depan nomor HP tersebut tidak akan terbaca di hal2.php nya

Sehingga untuk solusi kasus di atas, kita kembali bisa menggunakan urlencode()
Sehingga karakter + tetap dapat dibaca dihalaman 2.
Setelah penjelasan urlencode diatas, Kita pahami lebih dalam lagi tentang url encode, namun sebelumnya kita liat dulu ap aitu URL
URL - Uniform Resource Locator
Browser web seperti google chrome, mozilla, Opera, dll meminta halaman dari server web dengan menggunakan URL.
URL adalah alamat halaman web, seperti: https://www.lokerbumiayu.id.
Pengodean URL (Url Encode) atau bisa disebut Percent Encoding (Pengodean Persen)
Pengkodean URL mengubah karakter menjadi format yang dapat ditransmisikan melalui Internet. URL hanya dapat dikirim melalui Internet menggunakan set karakter ASCII. Karena URL sering kali berisi karakter di luar kumpulan ASCII, URL harus diubah menjadi format ASCII yang valid. Pengkodean URL menggantikan karakter ASCII yang tidak aman dengan "%" diikuti oleh dua digit heksadesimal. URL tidak boleh berisi spasi. Pengkodean URL biasanya menggantikan spasi dengan tanda plus (+) atau dengan %20 seperti yang sudah saya bahas diatas.
Misalnya ada String Hello Günter
Perhatikan bahwa karakter u bukan menggunakan karakter u biasa. String diatas jika diterapkan urlencode() maka hasilnya seperti ini
text=Hello+G%C3%BCnter
Melihat penjelasan dari W3school karakter ACII ini memiliki format encode berbeda beda dapat dilihat pada table dibawah ini
ASCII Encoding Reference
Your browser will encode input, according to the character-set used in your page.
The default character-set in HTML5 is UTF-8.
|
Character |
From Windows-1252 |
From UTF-8 |
|
space |
20% |
20% |
|
! |
21% |
21% |
|
" |
22% |
22% |
|
# |
23% |
23% |
|
$ |
24% |
24% |
|
% |
25% |
25% |
|
& |
26% |
26% |
|
' |
27% |
27% |
|
( |
28% |
28% |
|
) |
29% |
29% |
|
* |
%2A |
%2A |
|
+ |
%2B |
%2B |
|
, |
%2C |
%2C |
|
- |
%2D |
%2D |
|
. |
%2E |
%2E |
|
/ |
%2F |
%2F |
|
0 |
30% |
30% |
|
1 |
31% |
31% |
|
2 |
32% |
32% |
|
3 |
33% |
33% |
|
4 |
34% |
34% |
|
5 |
35% |
35% |
|
6 |
36% |
36% |
|
7 |
37% |
37% |
|
8 |
38% |
38% |
|
9 |
39% |
39% |
|
: |
%3A |
%3A |
|
; |
%3B |
%3B |
|
< |
%3C |
%3C |
|
= |
%3D |
%3D |
|
> |
%3E |
%3E |
|
? |
%3F |
%3F |
|
@ |
40% |
40% |
|
A |
41% |
41% |
|
B |
42% |
42% |
|
C |
43% |
43% |
|
D |
44% |
44% |
|
E |
45% |
45% |
|
F |
46% |
46% |
|
G |
47% |
47% |
|
H |
48% |
48% |
|
I |
49% |
49% |
|
J |
%4A |
%4A |
|
K |
%4B |
%4B |
|
L |
%4C |
%4C |
|
M |
%4D |
%4D |
|
N |
%4E |
%4E |
|
O |
%4F |
%4F |
|
P |
50% |
50% |
|
Q |
51% |
51% |
|
R |
52% |
52% |
|
S |
53% |
53% |
|
T |
54% |
54% |
|
U |
55% |
55% |
|
V |
56% |
56% |
|
W |
57% |
57% |
|
X |
58% |
58% |
|
Y |
59% |
59% |
|
Z |
%5A |
%5A |
|
[ |
%5B |
%5B |
|
\ |
%5C |
%5C |
|
] |
%5D |
%5D |
|
^ |
%5E |
%5E |
|
_ |
%5F |
%5F |
|
` |
60% |
60% |
|
a |
61% |
61% |
|
b |
62% |
62% |
|
c |
63% |
63% |
|
d |
64% |
64% |
|
e |
65% |
65% |
|
f |
66% |
66% |
|
g |
67% |
67% |
|
h |
68% |
68% |
|
i |
69% |
69% |
|
j |
%6A |
%6A |
|
k |
%6B |
%6B |
|
l |
%6C |
%6C |
|
m |
%6D |
%6D |
|
n |
%6E |
%6E |
|
o |
%6F |
%6F |
|
p |
70% |
70% |
|
q |
71% |
71% |
|
r |
72% |
72% |
|
s |
73% |
73% |
|
t |
74% |
74% |
|
u |
75% |
75% |
|
v |
76% |
76% |
|
w |
77% |
77% |
|
x |
78% |
78% |
|
y |
79% |
79% |
|
z |
%7A |
%7A |
|
{ |
%7B |
%7B |
|
| |
%7C |
%7C |
|
} |
%7D |
%7D |
|
~ |
%7E |
%7E |
|
|
%7F |
%7F |
|
` |
80% |
%E2%82%AC |
|
 |
81% |
81% |
|
‚ |
82% |
%E2%80%9A |
|
ƒ |
83% |
%C6%92 |
|
„ |
84% |
%E2%80%9E |
|
… |
85% |
%E2%80%A6 |
|
† |
86% |
%E2%80%A0 |
|
‡ |
87% |
%E2%80%A1 |
|
ˆ |
88% |
%CB%86 |
|
‰ |
89% |
%E2%80%B0 |
|
Š |
%8A |
%C5%A0 |
|
‹ |
%8B |
%E2%80%B9 |
|
Œ |
%8C |
%C5%92 |
|
 |
%8D |
%C5%8D |
|
Ž |
%8E |
%C5%BD |
|
 |
%8F |
%8F |
|
 |
90% |
%C2%90 |
|
‘ |
91% |
%E2%80%98 |
|
’ |
92% |
%E2%80%99 |
|
“ |
93% |
%E2%80%9C |
|
” |
94% |
%E2%80%9D |
|
• |
95% |
%E2%80%A2 |
|
– |
96% |
%E2%80%93 |
|
— |
97% |
%E2%80%94 |
|
˜ |
98% |
%CB%9C |
|
™ |
99% |
%E2%84 |
|
š |
%9A |
%C5%A1 |
|
› |
%9B |
%E2%80 |
|
œ |
%9C |
%C5%93 |
|
 |
%9D |
%9D |
|
ž |
%9E |
%C5%BE |
|
Ÿ |
%9F |
%C5%B8 |
|
|
%A0 |
%C2%A0 |
|
¡ |
%A1 |
%C2%A1 |
|
¢ |
%A2 |
%C2%A2 |
|
£ |
%A3 |
%C2%A3 |
|
¤ |
%A4 |
%C2%A4 |
|
¥ |
%A5 |
%C2%A5 |
|
¦ |
%A6 |
%C2%A6 |
|
§ |
%A7 |
%C2%A7 |
|
¨ |
%A8 |
%C2%A8 |
|
© |
%A9 |
%C2%A9 |
|
ª |
%AA |
%C2%AA |
|
« |
%AB |
%C2%AB |
|
¬ |
%AC |
%C2%AC |
|
|
%AD |
%C2%AD |
|
® |
%AE |
%C2%AE |
|
¯ |
%AF |
%C2%AF |
|
° |
%B0 |
%C2%B0 |
|
± |
%B1 |
%C2%B1 |
|
² |
%B2 |
%C2%B2 |
|
³ |
%B3 |
%C2%B3 |
|
´ |
%B4 |
%C2%B4 |
|
µ |
%B5 |
%C2%B5 |
|
¶ |
%B6 |
%C2%B6 |
|
· |
%B7 |
%C2%B7 |
|
¸ |
%B8 |
%C2%B8 |
|
¹ |
%B9 |
%C2%B9 |
|
º |
%BA |
%C2%BA |
|
» |
%BB |
%C2%BB |
|
¼ |
%BC |
%C2%BC |
|
½ |
%BD |
%C2%BD |
|
¾ |
%BE |
%C2%BE |
|
¿ |
%BF |
%C2%BF |
|
À |
%C0 |
%C3%80 |
|
Á |
%C1 |
%C3%81 |
|
 |
%C2 |
%C3%82 |
|
à |
%C3 |
%C3%83 |
|
Ä |
%C4 |
%C3%84 |
|
Å |
%C5 |
%C3%85 |
|
Æ |
%C6 |
%C3%86 |
|
Ç |
%C7 |
%C3%87 |
|
È |
%C8 |
%C3%88 |
|
É |
%C9 |
%C3%89 |
|
Ê |
%CA |
%C3%8A |
|
Ë |
%CB |
%C3%8B |
|
Ì |
%CC |
%C3%8C |
|
Í |
%CD |
%C3%8D |
|
Î |
%CE |
%C3%8E |
|
Ï |
%CF |
%C3%8F |
|
Ð |
%D0 |
%C3%90 |
|
Ñ |
%D1 |
%C3%91 |
|
Ò |
%D2 |
%C3%92 |
|
Ó |
%D3 |
%C3%93 |
|
Ô |
%D4 |
%C3%94 |
|
Õ |
%D5 |
%C3%95 |
|
Ö |
%D6 |
%C3%96 |
|
× |
%D7 |
%C3%97 |
|
Ø |
%D8 |
%C3%98 |
|
Ù |
%D9 |
%C3%99 |
|
Ú |
%DA |
%C3%9A |
|
Û |
%DB |
%C3%9B |
|
Ü |
%DC |
%C3%9C |
|
Ý |
%DD |
%C3%9D |
|
Þ |
%DE |
%C3%9E |
|
ß |
%DF |
%C3%9F |
|
à |
%E0 |
%C3%A0 |
|
á |
%E1 |
%C3%A1 |
|
â |
%E2 |
%C3%A2 |
|
ã |
%E3 |
%C3%A3 |
|
ä |
%E4 |
%C3%A4 |
|
å |
%E5 |
%C3%A5 |
|
æ |
%E6 |
%C3%A6 |
|
ç |
%E7 |
%C3%A7 |
|
è |
%E8 |
%C3%A8 |
|
é |
%E9 |
%C3%A9 |
|
ê |
%EA |
%C3%AA |
|
ë |
%EB |
%C3%AB |
|
ì |
%EC |
%C3%AC |
|
í |
%ED |
%C3%AD |
|
î |
%EE |
%C3%AE |
|
ï |
%EF |
%C3%AF |
|
ð |
%F0 |
%C3%B0 |
|
ñ |
%F1 |
%C3%B1 |
|
ò |
%F2 |
%C3%B2 |
|
ó |
%F3 |
%C3%B3 |
|
ô |
%F4 |
%C3%B4 |
|
õ |
%F5 |
%C3%B5 |
|
ö |
%F6 |
%C3%B6 |
|
÷ |
%F7 |
%C3%B7 |
|
ø |
%F8 |
%C3%B8 |
|
ù |
%F9 |
%C3%B9 |
|
ú |
%FA |
%C3%BA |
|
û |
%FB |
%C3%BB |
|
ü |
%FC |
%C3%BC |
|
ý |
%FD |
%C3%BD |
|
þ |
%FE |
%C3%BE |
|
ÿ |
%FF |
%C3%BF |
URL Encoding Reference
The ASCII control characters %00-%1F were originally designed to control hardware devices.
Control characters have nothing to do inside a URL.
|
ASCII Character |
Description |
URL-encoding |
|
NUL |
null character |
0% |
|
SOH |
start of header |
1% |
|
STX |
start of text |
2% |
|
ETX |
end of text |
3% |
|
EOT |
end of transmission |
4% |
|
ENQ |
enquiry |
5% |
|
ACK |
acknowledge |
6% |
|
BEL |
bell (ring) |
7% |
|
BS |
backspace |
8% |
|
HT |
horizontal tab |
9% |
|
LF |
line feed |
%0A |
|
VT |
vertical tab |
%0B |
|
FF |
form feed |
%0C |
|
CR |
carriage return |
%0D |
|
SO |
shift out |
%0E |
|
SI |
shift in |
%0F |
|
DLE |
data link escape |
10% |
|
DC1 |
device control 1 |
11% |
|
DC2 |
device control 2 |
12% |
|
DC3 |
device control 3 |
13% |
|
DC4 |
device control 4 |
14% |
|
NAK |
negative acknowledge |
15% |
|
SYN |
synchronize |
16% |
|
ETB |
end transmission block |
17% |
|
CAN |
cancel |
18% |
|
EM |
end of medium |
19% |
|
SUB |
substitute |
%1A |
|
ESC |
escape |
%1B |
|
FS |
file separator |
%1C |
|
GS |
group separator |
%1D |
|
RS |
record separator |
%1E |
|
US |
unit separator |
%1F |
Sumber :
https://www.php.net/manual/en/function.urlencode.php
https://www.w3schools.com/tags/ref_urlencode.ASP
https://blog.rosihanari.net/manfaat-function-urlencode-di-php/
Penulis: Ade Suryadi
Tanggal: 19 September 2021