Cara menggunakan mysql_real_escape_string not working

mysql_real_escape_string() adalah fungsi PHP yang digunakan untuk memberi backslash di beberapa kode untuk ditampilkan pada halaman, namun saat menyimpan menuju sql, kode akan tetap normal tanpa ada backslash.

Beberapa kode tersebut antara lain x00,n,r,,’,” dan x1a. Berbeda dengan fungsi addslashes() maupun stripslashes() yang kedua berkaitan dengan tanda slash, dan pada saat menyimpan beberapa kode itu akan berubah, namun tidak untuk mysql_real_escape_string() karena kegunaan-nya khusus pada MySQL dan termasuk pada pengaman.

Banyak developer CMS/Situs yang masih tidak dapat mengamankan websitenya dari para hacker yang selalu mengincar database, dan kesalahan yang dipakai adalah menampilkan konten langsung dengan mysql_fetch tanpa menambah mysql_real_escape_string. Dan sesaat dipanggil dengan menambahkan tanda petik (‘) pada url variable terlihat erorr, sehingga dapat diproses oleh hacker tersebut untuk mencari username dan password admin.

Seperti pada halaman login yang harus mencari username dan password yang cocok di database dengan fungsi SELECT, dapat diakalin juga dengan tanda berkaitan petik. dan ini dapat menimbulkan bahaya karena bisa membobol halaman admin lalu merusak website itu.

Untuk mencegahnya gunakan fungsi mysql_real_escape_string() setiap menampilkan rows dari database supaya tidak terjadi hal-hal yang tidak diinginkan pada website. Saya hanya dapat menjelaskan sedikit tentang fungsi ini dan silahkan lihat kode dibawah ini.!

BENAR

SALAH

Kode diatas memperlihatkan cara menampilkan rows database dengan benar dan salah. Jadi jika benar pada hasil akan muncul tanda backslash pada setiap tanda petik, dan untuk kode yang salah diatas tidak muncul tanda backslash sama sekali dan dapat menimbulkan SQL Injection.

Penggunaan system login dapat memakai fungsi addslashes() namun supaya aman lebih baik gunakan mysql_real_escape_string(). Jika ada yang ditanyakan tentang diatas silahkan komentar 🙂

Versi XAMPP terbaru saat ini sudah menggunakan PHP versi 7 dan Ekstensi php “mysql” sudah diganti menjadi “mysqli”.

Ekstensi “mysql” di PHP 7 sudah dihapus sehingga tidak dikenali lagi ketika kita menjalankan program tersebut di PHP versi 7.

Untuk mengatasi error ini ada 3 cara yang bisa dilakukan

1. Ubah “mysql” menjadi “mysqli”
Karena XAMPP versi terbaru sudah menggunakan PHP 7 maka semua ekstensi “mysql” sudah tidak bisa digunakan lagi, untuk itu kita harus merubah semua penulisan “mysql” pada dokumen php menjadi “mysqli”.

Jika script PHP saya yang di atas dirubah ke ekstensi php “mysqli”, maka akan menjadi seperti ini:

//koneksi
$server=”localhost”;
$username=”root”;
$password=””;
$database=”db_krs”;
mysqli_connect($server,$username,$password,$database)or die(“gagal, database tidak ditemukan”);
?>

Atau bisa juga ditulis seperti ini :

mysqli_connect(‘localhost’,’root’,”,’db_krs’)or die(“gagal, database tidak ditemukan”);
?>

Cara ini akan membuat kita menjadi repot karena harus mengganti seluruh ekstensi “mysql” yang ada di dokumen php menjadi “mysqli”.

Jika tidak mau repot, mungkin bisa pakai cara yang kedua.

2. Mengganti versi XAMPP ke versi lama (downgrade).
Kita tidak bisa asal-asalan merubah “mysql” menjadi “mysqli” begitu saja. karena secara sintaksis, “mysql” dan “mysqli” berbeda. Jadi kita harus belajar lagi tentang penulisan sintak mysqli yang tentunya akan menyita sedikit waktu.

Jika tidak mau repot, jalan satu-satunya adalah dengan mengganti XAMPP dengan versi lama (downgrade) yang masih menggunakan php versi 5 atau yang masih support dengan ekstensi mysql.

Jika ingin downgrade, silahkan download XAMPP versi 1.6 ke bawah.

3. Gunakan XAMPP Versi 1.6.8
Agar bisa menggunakan MySQL sekaligus juga MySQLi caranya adalah dengan menggunakan XAMPP versi 1.6.8.

XAMPP versi ini support untuk MySQL maupun MYSQLi, Silahkan anda download XAMPP versi 1.6.8 disini. Kemudian uninstall XAMPP yang sebelumnya terlebih dahulu hingga bersih, baru install XAMPP baru.

Begitulah cara mengatasi error Fatal error: Uncaught Error: Call to undefined function mysql_connect() pada XAMPP for windows.

Mysqli_real_escape_string untuk apa?

Fungsi mysql_real_escape_string digunakan untuk mem-bypass karakter spesial dalam query SQL, sehingga jika attacker mnyertakan karakter seperti ' ! ^ ] ” dan lain sebagainya, maka fungsi ini tidak akan membaca karakter tersebut.

Apa itu Mysql_escape_string?

Jadi sah saja jika mysql_real_escape_string() adalah fungsi PHP yang digunakan untuk memberi perlindungan atau mencegah Sql Injection dalam tanda kutip, terhadap karakter-karakter unik atau karakter khusus sebelum mengirim query ke mysql yang dapat membahayakan data termasuk dari serangan SQL injection.