FERMATI
L'inserimento in un database direttamente dalla posta è sempre una cattiva idea. Questo è il motivo per cui PHP è attualmente bloccato con le virgolette magiche molto poco intuitive.
Dovresti almeno usare mysql_real_escape_string() per sfuggire ai tuoi dati. Ad esempio:
$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);
Il motivo per cui devi farlo è basato sulla sicurezza. Ad esempio se qualche malintenzionato imposta il campo del nome utente su '); DROP TABLE users;
senza prima sfuggire ai tuoi dati. Finiresti per eseguire alla cieca la seguente query:
INSERT INTO users VALUES (''); DROP TABLE users;
Che ovviamente non andrà a buon fine per la tua applicazione.
Questo è il minimo dovresti fare.
In realtà dovresti davvero passare a MySQLi Che è un'interfaccia MySQL molto più moderna. Ecco un esempio
$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);
Puoi persino usare MySQL in uno stile procedurale. Quindi, se la programmazione orientata agli oggetti non è ancora alla tua portata, non avrai problemi con MySQLi.
Spero di esserti stato d'aiuto.