MySQL e PHP T_Variable inatteso

Ok, quindi ho scritto uno script register.php e ottengo una variabile T inattesa quando il command tenta di eseguire. L'errore si trova sulla row 15 in

('$_Post[username]','$_Post[sha_pass_hash]','$_Post[email]','2')"; 

Ho anche un secondo errore nella mia syntax secondo Dreamweaver alla row 20 per

  die('Error: ' . mysql_error()); 

Se qualcuno potesse aiutarlo sarebbe molto apprezzato. Grazie in anticipo.

STOP

L'inserimento in un database direttamente dal post è sempre una ctriggers idea. Questa è la ragione per cui PHP è attualmente bloccato con citazioni magiche molto poco intuitive.

Dovresti alless usare mysql_real_escape_string () per evitare i tuoi dati. Per 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 alcuni dannosi impostano il field username su '); DROP TABLE users; '); DROP TABLE users; senza prima sfuggire i tuoi dati. Finiresti per eseguire ciecamente la seguente query:

 INSERT INTO users VALUES (''); DROP TABLE users; 

Che naturalmente non si concluderà bene per la tua applicazione.

Questo è il minimo che dovresti fare.

In realtà dovresti davvero passare a MySQLi che è un'interface 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 è alla tua portta, non avrai problemi con MySQLi.

Spero possa aiutare.

 ($_Post["username"],$_Post["sha_pass_hash"],$_Post["email"],'2')"; 

Rimuovi le virgolette

 ($_POST["username"],$_POST["sha_pass_hash"],$_POST["email"],'2')"; 

Perdi le virgolette singole attorno alle variables 🙂

 ($_Post["username"],$_Post["sha_pass_hash"],$_Post["email"],'2')"; 

Usa questo:

 ('".$_Post[username]."','".$_Post[sha_pass_hash]."','".$_Post[email]."','2')