BERHENTI
Memasukkan ke dalam database langsung dari pos selalu merupakan ide yang buruk. Inilah alasan mengapa PHP saat ini terjebak dengan kutipan ajaib yang sangat tidak intuitif.
Anda setidaknya harus menggunakan mysql_real_escape_string() untuk menghindari data Anda. Misalnya:
$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')
OR die(mysql_error());
$query = "INSERT INTO users VALUES (
'" . mysql_real_escape_string($_POST["username"]) . "',
'" . mysql_real_escape_string($_POST["sha_pass_hash"]) . "',
'" . mysql_real_escape_string($_POST["email"]) . "',
'2'
)";
mysql_query($query);
Alasan Anda harus melakukan ini adalah berbasis keamanan. Misalnya jika beberapa orang jahat menyetel bidang nama pengguna ke '); DROP TABLE users;
tanpa terlebih dahulu keluar dari data Anda. Anda akhirnya akan menjalankan kueri berikut secara membabi buta:
INSERT INTO users VALUES (''); DROP TABLE users;
Yang tentu saja tidak akan berakhir dengan baik untuk lamaran Anda.
Ini adalah minimum seharusnya Anda lakukan.
Pada kenyataannya Anda harus benar-benar pindah ke MySQLi Yang merupakan antarmuka MySQL yang jauh lebih modern. Berikut ini contohnya
$mysqli = new mysqli('mysql_host', 'mysql_user', 'mysql_password', 'mysql_database');
$query = "INSERT INTO users VALUES (
'" . $mysqli->real_escape_string($_POST["username"]) . "',
'" . $mysqli->real_escape_string($_POST["sha_pass_hash"]) . "',
'" . $mysqli->real_escape_string($_POST["email"]) . "',
'2'
)";
$mysqli->query($query);
Anda bahkan dapat menggunakan MySQL dalam gaya prosedural. Jadi, jika pemrograman berorientasi objek belum ada dalam jangkauan Anda, Anda tidak akan memiliki masalah dengan MySQLi.
Semoga membantu.