Tutorial Form PHP Part 7: Cara Mengirim Variabel (Pesan) Antar Halaman PHP

Dari cara penanganan objek form dengan method=GET, kita dapat melihat bahwa HTML mengirimkan ’isi’ form melalui alamat URL. Cara pengiriman seperti ini bisa kita manfaatkan sebagai sarana mengirim pesan (dalam bentuk variabel) antar halaman PHP. Jika ditambah dengan fungsi header(), kita bisa memanfaatkan fitur ini untuk menampilkan pesan kesalahan dari sebuah form.


Cara Mengirim Variabel Antar Halaman PHP

Dalam PHP terdapat beberapa cara untuk mengirim variabel antar halaman. Salah satunya adalah dengan memanfaatkan cara pengiriman form dengan method=GET. Jika kita mengirim form dengan metode GET, maka hasil dari form akan ditambahkan di dalam menggunakan variabel superglobal $_GET.

Sebagai contoh, jika di dalam form terdapat kotak input dengan atribut name=user_name yang diisi dengan ’duniailkom’, maka ketika dikirim untuk diproses ke halaman proses.php, di dalam URL akan menjadi:

proses.php?user_name=duniailkom

dan didalam halaman proses.php, variabel $_GET[’user_name’] akan berisi ’duniailkom’.

Dengan cara ini kita bisa mengirim variabel dari sebuah halaman ke halaman lain. Misalkan kita membuat sebuah kondisi logika dengan PHP, dan jika logikanya salah maka tampilkan sebuah link yang menyatakan bahwa alamat tidak lengkap. Pengiriman pesan ini bisa ditulis sebagai berikut:

proses.php?pesan=alamat+tidak+lengkap.

Ketika user men-klik link tersebut, pada halaman proses.php akan memiliki sebuah variabel $_GET[’pesan’] yang berisi: ’alamat tidak lengkap’.

Kita bisa memanfaatkan ini untuk berbagai hal, dan dalam tutorial kali ini kita akan menggunakan cara ini untuk menampilkan pesan kesalahan dari form.

Untuk dapat mengirimkan variabel melalui URL, terdapat beberapa aturan penggunaan karakter. Berikut adalah contoh hasil pengiriman dari sebuah halaman:

proses.php?nama=dunia_ilkom&[email protected]&pesan=welcome

perhatikan bahwa tanda ’?’ digunakan untuk mengawali pengiriman variabel, tanda ’=’ digunakan sebagai pengisi nilai variabel, tanda ’&’ untuk memisah’kan antara variabel yang satu dengan yang lain, dan tanda ’+’ sebagai pengganti karakter ’spasi’.


Redirect halaman dengan fungsi header(Location:)

Fungsi header() di dalam PHP digunakan untuk memproses HTTP header. Fungsi header() memiliki banyak fitur, namun yang akan kita manfaatkan adalah fitur untuk mengirim user ke halaman lain atau dikenal dengan istilah: redirect.

Untuk ’mengirim’ user ke sebuah halaman, kita menggunakan Location:halaman.html sebagai argumen fungsi header(). Misalkan kita ingin mengirim user ke halaman pendaftaran.html pada situs duniailkom.com, maka penulisan fungsi header() adalah sebagai berikut:

header("Location: http://www.duniailkom.com/pendaftaran.html")

Halaman yang dituju tidak harus berupa halaman HTML, tetapi juga halaman PHP, atau bahkan file multimedia seperti gambar. Fitur ini akan kita manfaatkan untuk menampilkan pesan kesalahan form dalam PHP.


Cara Menampilkan Pesan Kesalahan Form

Dalam tutorial sebelumnya tentang Validasi Form untuk Mencegah Cross-site Scripting dan HTML injection, kita telah membuat proses validasi form dan menampilkan pesan kesalahan form berdasarkan kondisi yang terjadi. Namun pesan kesalahan tersebut hanya ditampilkan pada halaman proses.php. Jika user ingin mengubah isian form, ia terpaksa kembali kehalaman form.html untuk memperbaiki kesalahan form tersebut dengan cara mengetik manual di web browser.

Salah satu fitur pengisian form yang umum digunakan adalah ketika isian form ditemukan kesalahan, maka user akan dikembalikan ke halaman awal form, beserta pesan kesalahan. Untuk menghasilkan fitur seperti ini, kita akan memanfaatkan fungsi PHP: header().

Kembali menggunakan halaman form.html dan proses.php yang kita gunakan dalam tutorial-tutorial sebelumnya, kali ini saya akan memodifikasi halaman proses.php agar bisa memanfaatkan fungsi header(). Berikut adalah modifikasi file proses.php:

<?php
if (isset($_GET['nama']) AND isset($_GET['email']))
{
   $nama=$_GET['nama'];
   $email=$_GET['email'];
   $nama=htmlspecialchars($nama);
   $email=strip_tags($email);
}
else
{
   header("Location:form.php?error=variabel_belum_diset");
}
 
if(empty($nama))
{
   header("Location:form.php?error=nama_kosong");
}
else
{
   if (is_numeric($nama))
   {
      header("Location:form.php?error=nama_harus_huruf");
   }
   else
   {
      echo "Nama: $nama <br /> Email: $email";
   }
}  
?>

Dari kode proses.php kita sebelumnya, saya hanya mengubah bagian error menggunakan fungsi header(). Namun perhatikan bahwa saya mengirimkan variabel error kepada halaman form.php, pesan inilah yang akan diproses pada halaman form.php.

Untuk halaman form.html, saya akan mengubah nama file menjadi form.php. Perubahan ini diperlukan karena pada halaman form.html memerlukan proses PHP untuk menangani variabel error yang dikirim dari halaman proses.php.

Berikut adalah kode dari halaman form.php:

<?php
//ambil nilai variabel error
if (isset($_GET['error']))
{
   $error=$_GET['error'];
}
else
{
   $error="";
}
 
//siapkan pesan kesalahan
$pesan="";
if ($error=="variabel_belum_diset")
{
   $pesan="<h3>Maaf, anda harus mengakses halaman ini dari form.php</h3>";
}
if ($error=="nama_kosong")
{
   $pesan="<h3>Maaf, anda harus mengisi nama</h3>";
}
if ($error=="nama_harus_huruf")
{
   $pesan="<h3>Maaf, nama harus berupa huruf</h3>";
}
?>
 
<!DOCTYPE html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <title>Belajar Form PHP</title>
</head>
<body>
   <h2>Tutorial Belajar Form HTML - PHP </h2>
   <?php
   echo $pesan;
   ?>
   <form action="proses.php" method="get">
      Nama: <input type="text" name="nama" />
      <br />
      E-Mail: <input type="text" name="email" />
      <br />
      <input type="submit" value="Proses Data" >
   </form>
</body>
</html>

Pada halaman form.php saya menambahkan beberapa kode PHP di awal halaman. Kode PHP ini berfungsi untuk menangani variabel error yang dikirimkan dari halaman proses.php.

Setelah memindahkan variabel $_GET[‘error’] ke dalam variabel $error agar mudah diakses, selanjutnya saya membuat beberapa logika IF untuk memeriksa pesan error, dan memberikan ‘pesan kesalahan’ yang ingin ditampilkan kedalam variabel $pesan.

Variabel $pesan ini kemudian akan disisipkan di awal tag form.

Untuk mengujinya, silahkan anda mencoba form.php tersebut dan klik tombol ‘Proses Data’ tanpa memberikan input apa-apa di dalam form, dan sekarang pesan kesalahan akan tampil di halaman form.php.

Tampilan Error di halaman Form menggunakan fungsi header

Anda bisa mengeksplorasi penggunaan fungsi header() ini lebih jauh. Misalkan jika isian form telah sesuai, maka anda bisa meneruskan user ke halaman lain, seperti sukses.php, sehingga pengaturan kode PHP lebih rapi dimana halaman proses.php murni digunakan untuk penanganan proses form. Dari halaman proses.php ini kita bisa ‘membawa‘ user ke halaman lain yang khusus menangani hal tersebut.


Penanganan cara kesalahan form seperti ini membuat form menjadi lebih user friendly. Jika anda memahami CSS, biasanya pesan kesalahan ini ditampilkan dengan style yang berbeda dari judul form agar lebih ‘pas’, namun dalam tutorial ini anda setidaknya telah mengetahui trik untuk menampilkan pesan kesalahan form dengan PHP. Silahkan berekplorasi dan menambahkan objek-objek form lain sebagai bahan latihan.

 


Tutorial Terkait:

54 Comments

  1. Syaifudin
    11 Nov 14
    • Andre
      12 Nov 14
  2. hidayat
    12 Dec 14
    • Andre
      15 Dec 14
  3. Hasan
    06 Feb 15
    • Andre
      06 Feb 15
  4. Hasan
    06 Feb 15
    • Andre
      09 Feb 15
  5. kingzen
    20 Feb 15
    • Andre
      21 Feb 15
  6. hijir isamil
    05 May 15
    • Andre
      06 May 15
  7. said
    13 Jul 15
    • Andre
      15 Jul 15
  8. agus
    30 Sep 15
    • Andre
      30 Sep 15
  9. Fahmi
    06 Nov 15
    • Andre
      08 Nov 15
      • Fahmi
        10 Nov 15
        • Andre
          10 Nov 15
  10. Azys
    24 Dec 15
    • Andre
      26 Dec 15
  11. Fahmi
    01 Jan 16
    • Andre
      01 Jan 16
  12. rendy
    04 Feb 16
    • Andre
      05 Feb 16
  13. Penyimak
    27 Feb 16
    • Andre
      25 Mar 16
  14. ibnu
    25 Mar 16
    • Andre
      25 Mar 16
  15. ibnu
    25 Mar 16
    • Andre
      25 Mar 16
  16. ariez
    27 Apr 16
    • Andre
      27 Apr 16
  17. hardi
    05 Jul 16
    • Andre
      05 Jul 16
  18. tuluss
    31 Aug 16
    • Andre
      01 Sep 16
  19. Pineda
    10 Oct 16
    • Andre
      10 Oct 16
  20. halim
    11 Dec 16
    • Andre
      06 Apr 17
  21. Ahmad Fauzi Ahsani
    04 Apr 17
    • Andre
      06 Apr 17
  22. Anonymous
    26 Jul 17
    • Andre
      27 Jul 17
  23. Sarman
    09 Sep 17
    • Andre
      10 Sep 17
  24. Diki
    30 Sep 17
    • Andre
      01 Oct 17
  25. Diki
    17 Oct 17
    • Andre
      19 Oct 17
  26. citra
    11 Nov 17
    • Andre
      12 Nov 17

Add Comment