Magic quote PHP

Magic quote sudah deprecated pada php 5.3. Awalnya magic quote ada untuk alasan keamanan.

Ada beberapa special character yang memiliki arti khusus di PHP. Di antaranya adalah single quote ', double quote ", backslash \, dan NULL.

Beberapa scpecial character tersebut bisa menyebabkan kekacauan pada script dan database jika digunakan secara tidak benar.

Jika magic quote diaktifkan maka secara otomatis di depan special character tersebut ada code escape character backslash \.

Untuk mengetahui apakah magic quote sedang aktif atau tidak kita bisa menggunakan get_magic_quotes_gpc() function.

Jika get_magic_quotes_gpc() function menghasilkan angka 1 artinya magic quote sedang aktif. Sebaliknya, jika get_magic_quotes_gpc() function menghasilkan angka 0 artinya magic quote tidak aktif.

Code PHP magic quote:

if(get_magic_quotes_gpc())
   echo "Magic quotes are enabled";
else
   echo "Magic quotes are disabled";

Hasil code PHP magic quote:

Magic quotes are enabled

Menggunakan magic quote

Berikut ini adalah contoh jika magic quote sedang aktif:

Buatlah sebuah file bernama [magic-quote.php] dengan isi seperti code di bawah ini. Kemudian jalankan file tersebut.

Isi file magic-quote.php 1:

<?php
echo "Altered Text: ".$_POST['question'];
?>

<form method='post'>
Question: <input type='text' name='question'/><br />
<input type='submit'>

</form>

File ini akan memunculkan form HTML. Data yang akan disubmit akan dimasukkan ke dalam file itu sendiri.

Pada text field, masukkan text string seperti berikut ini:

Bilang bangjuju, "Ini' adalah hari yang baik\'."

Setelah kamu klik submit button maka akan muncul tampilan seperti berikut ini.

Hasil isi file magic-quote.php 2:

Bilang bangjuju, \"Ini\' adalah hari yang baik\\\'.\"

Question:

Ada yang berubah pada data string yang telah diberikan. Beberapa perubahan tersebut yaitu:

  • Backslash \ menjadi \\
  • Single quote ' menjadi \'
  • Double quote " menjadi \"

Untuk menghilangkan penambahan backslash \ pada form data yang diberikan maka kamu memiliki dua pilihan. Pertama dengan menonaktifkan magic quote dan yang kedua yaitu dengan menghapus backslash \ yang telah ditambahkan.

Menghapus backslash \

Idealnya sebelum menghapus backslash \ kamu memeriksa terlebih dahulu apakah magic quote aktif atau tidak dengan code magic quote enable di atas.

Untuk menghapus backslash \ kita bisa menggunakan stripslashes() function.

Isi file magic-quote.php 2:

<?php
echo "Removed Slashes: ";
// Remove those slashes
if(get_magic_quotes_gpc())
   echo stripslashes($_POST['question']);
else
   echo $_POST['question'];

?>

<form method='post'>
Question: <input type='text' name='question'/><br />
<input type='submit'>

</form>

Tampilan setelah form disubmit akan sama seperti di bawah ini.

Hasil isi file magic-quote.php 2:

Bilang bangjuju, "Ini' adalah hari yang baik\'."

Question:

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>