let`s share knowledge, science, fun things, and everything here….


setelah menulis tentang artikel CSS kali ini sy ingin menulis artikel mengenai PHP (hypertext preprocessor)….

cek-it-out ….

PHP adalah:

  • PHP singkatan dari PHP: Hypertext Preprocessor
  • PHP bertipe server-side scripting language, seperti ASP
  • script PHP dieksekusi di server
  • PHP mendukung banyak database (MySQL, Informix, Oracle, Sybase, Solid, PostgreSQL, Generic ODBC, etc.)
  • PHP bersifat open source software
  • PHP gratis di-download dan digunakan (http://www.php.net/downloads.php)
  • PHP termasuk bahasa pemrograman (karena memiliki algoritma dan struktur seperti bahas pemrograman lain, misal: bahasa C)

sebelum menggunakan PHP dibutuhkan server lokal untuk mengeksekusi file PHP (menguraikan bahasa PHP ke dalam halaman web), sy sarankan untuk menginstall XAMPP (atau software lain yang sejenis) sebagai server lokal karena sudah dilengkapi dengan data base (MySQL) dan file PHP yang dibutuhkan.

kalu sudah di-install lanjuuut ke tutorial PHP

1. syntax PHP dasar

script PHP harus diwalai oleh tanda <?php atau <? dan ditutup oleh tanda ?> (namun w3c school merekomendasikan menggunakan awalan <?php)

<?php

……..

…….

?>

sebuah file PHP biasanya terdapat tag HTML, seperti file HTML dan beberapa script PHP, berikut contoh file PHP sederhana:

<html>
<body>

<?php
echo “Hello World”;
?>

</body>
</html>

output di borwser dari contoh file PHP diatas adalah tulisan Hello World.

dalam PHP, setiap kode PHP diakhiri oleh semicolon (; / titik koma) untuk membedakan setiap instruksi PHP. untuk menampilkan output ke browser digunakan statement echo dan print, pada contoh di atas digunakan echo. file PHP harus disimpan dengan ekstensi .php jika tidak (misalnya malah diberi ekstensi .html) suntax PHP tidak akan berjalan atau dieksekusi.

2. komentar di PHP

penulisan komentar di PHP sama dengan penulisan komentar di CSS yaitu menggunakan tanda // untuk satu baris komentar dan tanda /* dan */ untuk komentar lebih dari satu baris.

<html>
<body>

<?php
//This is a comment

/*
This is
a comment
block
*/
?>

</body>
</html>

3. variabel di PHP

variabel digunakan untuk menyimpan suatu nilai seperti angka, karakter, string, dan array.  variabel di PHP tidak perlu dideklarasikan dengan tipe data, saat dieksekusi variabel sudah otomatis bertipe data sesuai isinya. variabel pada PHP dideklarasikan dengan tanda dollar ($). syntax deklarasi variabel:

$nama_variabel = nilai;

misalnya:

<?php
$txt=”Hello World!”;
$x=16;
?>

variabel $txt diberi nilai string maka nantinya bertipe data string dan variabel $x diberi nilai bilangan maka nantinya bertipe data integer.

ada beberapa aturan penamaan variabel yaitu:

  • nama variabel harus diawali huruf atau underscore ( _ )
  • nama variabel hanya bisa terdapat karakter alpha-numeric dan underscores (a-z, A-Z, 0-9,dan _ )
  • nama variabel sebaiknya tidak terdapat spasi

4. string

variabel string adalah variabel yang bernilai karakter-karakter. string bisa digunakan langsung pada suatu fungsi atau dideklarasikan dalam suatu variabel. berikut contoh deklarasi variabel string:

<?php
$txt=”Hello World”;
echo $txt;
?>

output pada browser: Hello World

dalam string pada PHP ada yang disebut concatenation operator (.) berfungsi untuk menggabungkan dua nilai string menjadi satu. contohnya:

<?php
$txt1=”Hello World!”;
$txt2=”What a nice day!”;
echo $txt1 . ” ” . $txt2;
?>

outputnya akan seperti ini: Hello World! What a nice day!

ada juga yang disebut fungsi strlen() yang digunakan untuk mengetahui jumlah karakter pada string, misalnya:

<?php
echo strlen(“Hello world!”);
?>

outputnya: 12

selain fungsi strlen(), ada juga fungsi strpos() digunakan untuk mencari karakter dalam string. jika ditemukan string yang dituju, fungsi ini akan mengembalikan posisi karakter sebelum karakter yg dicari. Contohnya akan dicari kata “world”:

<?php
echo strpos(“Hello world!”,”world”);
?>

output program diatas yaitu: 6

selain 2 fungsi di atas masih ada lagi beberapa fungsi yang berkaitan dengan string yang dapat dilihat di link ini –> http://www.w3schools.com/php/php_ref_string.asp

5. operator PHP

berikut daftar operator PHP dan kegunaannya:

a. operator aritmatika

Operator Deskripsi Contoh Hasil
+ penjumlahan x=2
x+2
4
pengurangan x=2
5-x
3
* perkalian x=4
x*5
20
/ pembagian 15/5
5/2
3
2.5
% Modulus (sisa hasil bagi) 5%2
10%8
10%2
1
2
0
++ Increment x=5
x++
x=6
Decrement x=5
x–
x=4

b. operator assignment

Operator Contoh Sama dengan
= x=y x=y
+= x+=y x=x+y
-= x-=y x=x-y
*= x*=y x=x*y
/= x/=y x=x/y
.= x.=y x=x.y
%= x%=y x=x%y

c. operator perbandingan

Operator Deskripsi Contoh
== is equal to 5==8 returns false
!= is not equal 5!=8 returns true
<> is not equal 5<>8 returns true
> is greater than 5>8 returns false
< is less than 5<8 returns true
>= is greater than or equal to 5>=8 returns false
<= is less than or equal to 5<=8 returns true

d. operator logical

Operator Deskripsi Contoh
&& and x=6
y=3(x < 10 && y > 1) returns true
|| or x=6
y=3(x==5 || y==5) returns false
! not x=6
y=3!(x==y) returns true

6. Conditional Statements di PHP

conditional statement adalah statement yang hampir selalu ada di setiap bahasa pemrograman, statement ini terbagi menjadi beberapa bagian, yaitu:

  • if statement – statement ini digunakan untuk mengeksekusi suatu kode program hanya jika kondisi yang disyaratkan benar (true)
  • if…else statement – statement ini digunakan untuk mengeksekusi suatu kode program jika suatu kondisi yang disyaratkan benar dan kondisi yg lain salah
  • if…elseif….else statement – statement ini digunakan untuk memilih salah satu kode program dari beberapa kode lainnya sesuai dengan kondisi yang disyaratkan
  • switch statement – statement ini digunakan untuk memilih salah satu kode program dari banyak kode lainnya sesuai dengan kondisi yang disyaratkan

a. statement if

statement ini digunakan untuk mengeksekusi suatu kode program hanya jika kondisi yang disyaratkan benar (true).

syntax dasar:

if (kondisi) kode yg dieksekusi jika kondisi benar;

misalnya:

ouput akan tampil “Have a nice weekend!” jika hari tersebut jumat.

<html>
<body>

<?php
$d=date(“D”);
if ($d==”Fri”) echo “Have a nice weekend!”;
?>

</body>
</html>

b. statement if…else

statement ini digunakan untuk mengeksekusi suatu kode program jika suatu kondisi yang disyaratkan benar dan kondisi yg lain salah.

syntax dasar:

if (kondisi)
kode yg akan dieksekusi jika kondisi benar;
else
kode yg akan dieksekusi jika kondisi salah;

misalnya:

ouput akan tampil “Have a nice weekend!” jika hari tersebut jumat jika tidak akan tampil “Have a nice day!”.

<html>
<body>

<?php
$d=date(“D”);
if ($d==”Fri”)
echo “Have a nice weekend!”;
else
echo “Have a nice day!”;
?>

</body>
</html>

catatan: jika kode yg akan dieksekusi lebih dari satu baris maka kode ditutup dengan tanda {….}

c. statement if…elseif….else

statement ini digunakan untuk memilih salah satu kode program dari beberapa kode lainnya sesuai dengan kondisi yang disyaratkan.

syntax dasar:

if (kondisi)
kode yg akan dieksekusi jika kondisi benar;
elseif (kondisi
)
kode yg akan dieksekusi jika kondisi benar;
else
kode yg akan dieksekusi jika kondisi salah;

misalnya:

ouput akan tampil “Have a nice weekend!” jika hari tersebut jumat dan akan tampil “Have a nice sunday!” jika hari tersebut minggu atau akan menampilkan “Have a nice day!” bila bukan keduanya.

<html>
<body>

<?php
$d=date(“D”);
if ($d==”Fri”)
echo “Have a nice weekend!”;
elseif ($d==”Sun”)
echo “Have a nice Sunday!”;
else
echo “Have a nice day!”;
?>

</body>
</html>

d. statement switch

statement ini digunakan untuk memilih salah satu kode program dari banyak kode lainnya sesuai dengan kondisi yang disyaratkan.

syntax dasar:

switch (n)
{
case
label1:
kode yg akan dieksekusi jika n=label1;
break;
case
label2:
kode yg akan dieksekusi jika n=label2;
break;
default:
kode yg akan dieksekusi jika n bukan label1 dan label2;
}

cara kerja stetement switch yaitu: pertama n dideklarasikan (biasanya berupa variabel). nilai n kemudian dibandingkan dengan nilai yang dideklarasikan pada setiap kode case (label1 dan label2) jika benar program yang sesuai akan dieksekusi. kode break digunakan agar program berhenti disitu dan tidak mengeksekusi program dibawahnya secara otomatis. kode default digunakan untuk mendeklarasikan program yang akan dieksekusi bila tidak ada nilai yg cocok.

misalnya:

<html>
<body>

<?php
switch ($x)
{
case 1:
echo “Number 1”;
break;
case 2:
echo “Number 2”;
break;
case 3:
echo “Number 3”;
break;
default:
echo “No number between 1 and 3”;
}
?>

</body>
</html>

cara kerjanya yaitu variabel $x dibandingkan dengan 1, 2, dan 3 jika nilainya sesuai maka program yg sesuai dieksekusi, misalnya jika $x berisi 1 maka program echo “Number 1” dieksekusi yang berarti output pada browser “Number 1”, sedangkan jika $x tidak bernilai 1, 2, dan 3 maka kode default dieksekusi yaitu program echo “No number between 1 dan 3” yang berarti output pada browser “No number between 1 dan 3”.

7. Array

array adalah variabel yang dapat menyimpan beberapa nilai, tidak seperti variabel biasa yang hanya bisa menyimpan satu nilai, setiap nilai pada array disebut element array dan setiap element ini memiliki nomor yang disebut index/ID, index ini bisa berupa angka atau selain angka (tergantung jenis array). Array cocok digunakan untuk menyimpan suatu list nilai yang beragam dan banyak.

array dalam PHP terbagi menjadi 3, yaitu:

  • Numeric array – array yg menyimpan nilainya dengan index numeric
  • Associative array – array dengan setiap ID berasosiasi dengan nilai (indeks bisa tidak berupa angka)
  • Multidimensional array – array yang terdiri dari satu atau beberapa array

a. numeric array

numeric array adalah array yg menyimpan nilainya dengan index numeric, ada dua cara untuk membuat numeric array, yaitu:

1. pada contoh berikut index diberikan secara otomatis (mulai dari 0):

$cars=array(“Saab”,”Volvo”,”BMW”,”Toyota”);

2. pada contoh berikut index diberikan secara manual oleh user:

$cars[0]=”Saab”;
$cars[1]=”Volvo”;
$cars[2]=”BMW”;
$cars[3]=”Toyota”;

contoh array pada script PHP:

<?php
$cars[0]=”Saab”;
$cars[1]=”Volvo”;
$cars[2]=”BMW”;
$cars[3]=”Toyota”;
echo $cars[0] . ” and ” . $cars[1] . ” are Swedish cars.”;
?>

outputnya: Saab and Volvo are Swedish cars.

pada contoh diatas array diakses dengan menggunakan index element pada array.

b. associative array

associative array adalah array dengan setiap ID berasosiasi dengan nilai (indeks bisa tidak berupa angka).

contoh 1

dalam contoh berikut akan diberikan umur ke setiap orang yang berbeda:

$ages = array(“Peter”=>32, “Quagmire”=>30, “Joe”=>34);

contoh 2

contoh 2 berikut fungsinya sama sepeti contoh 1 hanya saj menunjukan cara yg berbeda dalam membuat array:

$ages[‘Peter’] = “32”;
$ages[‘Quagmire’] = “30”;
$ages[‘Joe’] = “34”;

ID tersebut bisa digunakan dalam script, misalnya:

<?php
$ages[‘Peter’] = “32”;
$ages[‘Quagmire’] = “30”;
$ages[‘Joe’] = “34”;

echo “Peter is ” . $ages[‘Peter’] . ” years old.”;
?>

outputnya: Peter is 32 years old.

c. multidimensional array

dalam array yang seperti ini setiap element dalam array utama dapat menjadi array dan setiap element dalam sub array dapat pula menjadi array, dan seterusnya.

dalam contoh berikut dibuat array multidimensional dengan ID dideklarasikan secara otomatis:

$families = array
(
“Griffin”=>array
(
“Peter”,
“Lois”,
“Megan”
),
“Quagmire”=>array
(
“Glenn”
),
“Brown”=>array
(
“Cleveland”,
“Loretta”,
“Junior”
)
);

array diatas akan tampil seperti ini jika dituliskan ke output:

Array
(
[Griffin] => Array
(
[0] => Peter
[1] => Lois
[2] => Megan
)
[Quagmire] => Array
(
[0] => Glenn
)
[Brown] => Array
(
[0] => Cleveland
[1] => Loretta
[2] => Junior
)
)

jika ingin ditampilkan salah satu nilai maka kode programnya seperti ini:

echo “Is ” . $families[‘Griffin’][2] .
” a part of the Griffin family?”;

outputnya: Is Megan a part of the Griffin family?

dalam PHP ada beberapa fungsi yang khusus digunakan untuk manipulasi array, fungsi-fungsi tersebut dapat dilihat di http://www.w3schools.com/php/php_ref_array.asp


8. Looping

dengan looping program akan dieksekusi beberapa kali sesuai angka yg dideklarasikan atau sampai suatu kondisi benar (true).

dalam PHP ada 4 jenis looping, yaitu:

  • while – loop blok kode program selama kondisi yang dideklarasikan benar (true)
  • do…while – loop blok kode program sekali, kemudian berulang selama kondisi yang dideklarasikan benar (true)
  • for – loop blok kode program beberapa kali sesuai nomor yang dideklarasikan
  • foreach – loop blok kode program untuk setiap element pada array

a. looping while

loop blok kode program selama kondisi yang dideklarasikan benar (true).

syntax dasar:

while (kondisi)
{
kode yang akan dieksekusi;
}

misalnya:

kode berikut mendefinisikan looping yang dimulai dengan i=1, loop akan berlanjut selama i lebih kecil atau sama dengan 5, i akan bertambah 1 setiap loop berjalan.

<html>
<body>

<?php
$i=1;
while($i<=5)
{
echo “The number is ” . $i . “<br />”;
$i++;
}
?>

</body>
</html>

output:

The number is 1
The number is 2
The number is 3
The number is 4
The number is 5

b. loping do…while…

loop blok kode program sekali, kemudian berulang selama kondisi yang dideklarasikan benar (true).

syntax dasar:

do
{
kode yang dieksekusi;
}
while (
kondisi);

contoh berikut mendefinisikan loop yang dimulai dengan i=1, kemudian i akan bertambah 1 dan tampil output, selanjutnya kondisi dicek, loop akan terus berulang selama i lebih kecil atau sama dengan 5:

<html>
<body>

<?php
$i=1;
do
{
$i++;
echo “The number is ” . $i . “<br />”;
}
while ($i<=5);
?>

</body>
</html>

output:

The number is 2
The number is 3
The number is 4
The number is 5
The number is 6

c. looping for

for digunakan ketika suatu kode harus diulang sampai beberapa kali sesuai nomor yg dideklarasikan.

syntax dasar:

for (init; kondisi; increment)
{
kode yang akan dieksekusi;
}

parameter:

  • init: biasanya digunakan untuk mengatur counter (tapi bisa juga berupa kode yang dieksekusi sekali diawal loop)
  • kondisi: evaluasi setiap perulangan. jika bernilai TRUE (benar), loop berlanjut. jika bernilai FALSE (salah), loop berakhir
  • increment: biasanya digunakan untuk menaikkan counter (tapi bisa juga berupa kode yang dieksekusi diakhir loop)

parameter tersebut bisa kosong, dipisahkan oleh tanda semicolon (;).

contoh berikut mendefinisikan loop dengan i=1, loop akan berlanjut selama i lebih kecil atau sama dengan 5, i akan bertambah 1 setiap loop berjalan:

<html>
<body>

<?php
for ($i=1; $i<=5; $i++)
{
echo “The number is ” . $i . “<br />”;
}
?>

</body>
</html>

output:

The number is 1
The number is 2
The number is 3
The number is 4
The number is 5

d. looping foreach

loop foreach digunakan untuk looping pada suatu array.

syntax dasar:

foreach ($array as $value)
{
kode yang akan dieksekusi;
}

setiap iterasi looping, nilai element array dimasukkan ke variabel $value (kemudian pointer array menunjuk element array berikutnya)  dan proses berlanjut sampai element array habis.

misalnya:

<html>
<body>

<?php
$x=array(“one”,”two”,”three”);
foreach ($x as $value)
{
echo $value . “<br />”;
}
?>

</body>
</html>

output:

one
two
three

9. fungsi pada PHP

fungsi dapat diartikan sebagai suatu kumpulan kode program dengan tujuan tertentu yang akan dieksekusi ketika dipanggil.

dalam PHP ada beberapa fungsi bawaan yg bisa digunakan untuk banyak hal, link berikut menampilkan list fungsi-fungsi tersebut beserta kegunaan dasarnya –> http://www.w3schools.com/php/default.asp

selain fungsi yang sudah built-in fungsi pada PHP juga bisa dibuat sendiri, syntaxnya:

function functionName()
{
code to be executed;
}

misalnya:

<html>
<body>

<?php
function writeName()
{
echo “Kai Jim Refsnes”;
}

echo “My name is “;
writeName();
?>

</body>
</html>

output: My name is Kai Jim Refsnes

dalam fungsi juga bisa ditambahkan parameter untuk menambah fungsionalitas suatu fungsi. parameter seperti variabel. parameter dideklarasikan dalam tanda kurung suatu fungsi.

contoh berikut akan menampilkan nama pertama (first name) yang berbeda tapi nama belakang yg sama:

<html>
<body>

<?php
function writeName($fname)
{
echo $fname . ” Refsnes.<br />”;
}

echo “My name is “;
writeName(“Kai Jim”);
echo “My sister’s name is “;
writeName(“Hege”);
echo “My brother’s name is “;
writeName(“Stale”);
?>

</body>
</html>

output:

My name is Kai Jim Refsnes.
My sister’s name is Hege Refsnes.
My brother’s name is Stale Refsnes.

contoh 2, fungsi dengan menggunakan 2 parameter:

<html>
<body>

<?php
function writeName($fname,$punctuation)
{
echo $fname . ” Refsnes” . $punctuation . “<br />”;
}

echo “My name is “;
writeName(“Kai Jim”,”.”);
echo “My sister’s name is “;
writeName(“Hege”,”!”);
echo “My brother’s name is “;
writeName(“Ståle”,”?”);
?>

</body>
</html>

output:

My name is Kai Jim Refsnes.
My sister’s name is Hege Refsnes!
My brother’s name is Ståle Refsnes?

selain fungsi yang sudah dijelaskan diatas, ada juga fungsi yang dapat mengembalikan nilai, untuk membuat suatu fungsi mengembalikan nilai maka digunakan statement return, misalnya:

<html>
<body>

<?php
function add($x,$y)
{
$total=$x+$y;
return $total;
}

echo “1 + 16 = ” . add(1,16);
?>

</body>
</html>

output: 1 + 16 = 17

10. PHP form dan input user

form yang termasuk HTML element secara otomatis sudah kompatibel dengan PHP. contoh berikut menunjukkan form yang terdiri atas dua field input dan sebuah tombol submit:

<html>
<body>

<form action=”welcome.php” method=”post”>
Name: <input type=”text” name=”fname” />
Age: <input type=”text” name=”age” />
<input type=”submit” />
</form>

</body>
</html>

ketika user memasukkan data dan klik tombol submit, data tersebut dikirimkan ke file PHP bernama “welcome.php”. welcome.php akan tampil seperti ini:

<html>
<body>

Welcome <?php echo $_POST[“fname”]; ?>!<br />
You are <?php echo $_POST[“age”]; ?> years old.

</body>
</html>

outputnya kurang lebih akan seperti ini: (nilai output berubah tergantung input)

Welcome John!
You are 28 years old.

kode PHP $_GET dan $_POST akan dijelaskan setelah ini.

dalam suatu aplikasi yang membutuhkan inputan user (terutama web) sebaiknya diberikan validasi form, validasi ini biasanya berkenaan dengan ketepatan data yang diinput sebelum dikirimkan atau diinputkan ke database. validasi ini sebaiknya satu halaman dengan form agar memudahkan kontrol data.

11. PHP fungsi $_GET

fungsi $_GET berfungsi untuk menerima data dari form dengan method=get.

informasi yang dikirim dengan method get akan terlihat pada address bar pada browser sehingga memungkinkan informasi yang dikirim visible, method get juga memiliki keterbatasan yaitu 100 karakter yang bisa dikirimkan.

misalnya:

<form action=”welcome.php” method=”get”>
Name: <input type=”text” name=”fname” />
Age: <input type=”text” name=”age” />
<input type=”submit” />
</form>

katakanlah user mengisi field name dengan “john” dan field age dengan “37”, ketika user klik tombol submit, address bar pada browser (URL) akan tampil seperti ini:

http://www.w3schools.com/welcome.php?fname=Peter&age=37

kemudian pada welcome.php ditulis kode berikut untuk menampilkan data:

Welcome <?php echo $_GET[“fname”]; ?>.<br />
You are <?php echo $_GET[“age”]; ?> years old!

method get sebaiknya tidak digunakan untuk mengirim data sensitif sepeti username, password, atau ID card. method ini dapat berguna untuk hal tertentu misalnya untuk pembelajaran. mthod get juga tidak cocok untuk mengirimkan karakter yang lebih dari 100 karakter.

informasi pada method get dapat di bookmark.

12. PHP fungsi $_POST

fungsi $_GET berfungsi untuk menerima data dari form dengan method=post.

informasi yang dikirim melalui method post bersifat invisible (tidak terlihat seperti method get) dan tidak ada limit dalam pengiriman karakter, namun ada kapasitas maksimum untuk method ini yaitu (secara default) 8Mb, nilai ini dapat dirubah pada post_max_size pada file php.ini.

misalnya:

<form action=”welcome.php” method=”post”>
Name: <input type=”text” name=”fname” />
Age: <input type=”text” name=”age” />
<input type=”submit” />
</form>

ketika user klik tombol submit, address bar pada browser (URL) akan tampil seperti ini:

http://www.w3schools.com/welcome.php

kemudian pada welcome.php ditulis kode berikut untuk menampilkan data:

Welcome <?php echo $_POST[“fname”]; ?>!<br />
You are <?php echo $_POST[“age”]; ?> years old.

method post ideal digunakan untuk mengirim username, password, atau data sensitif lainnya karena bersifat invisible. method ini juga cocok untuk mengirim karakter berjumlah banyak.

informasi pada method ini tidakd apat di bookmark.

13. PHP fungsi $_REQUEST

fungsi $_request berisi konten fungsi $_GET, $_POST, dan $_COOKIE. fungsi $_REQUEST dapat digunakan untuk menerima data yang dikirim menggunakan method get dan method post.

misalnya:

Welcome <?php echo $_REQUEST[“fname”]; ?>!<br />
You are <?php echo $_REQUEST[“age”]; ?> years old.

sekian artikel ini sy tulis, bila ada kesalahan sy tunggu komentar membangunnya heheee

mudah-mudahan bermanfaat

sumber: http://www.w3schools.com/php/default.asp

Comments on: "PHP (Hypertext Preprocessor) Pendahuluan" (8)

  1. Berbakat jadi dosen nie.. hehe

  2. waaaaaaaaaaaa….apa itu va…
    saya ngga ngerti,,,:p

  3. ijin copas ya, boleh nggak?

  4. wisnu satuhu putra said:

    izin copas ya teh,,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: