현재 다음 스크립트가 브라우저로 성공을 반환하지만 데이터베이스에 실제로 데이터를 삽입하지 않는 이유를 이해하는 데 현재 어려움이 있습니다. 이전의 MySQL 명령어를 사용하고 있음을 알고 있지만이 문제가 발생하지는 않을 것입니다. 덕분에 사전 알리스 테어PHP가 MySQL 데이터베이스에 삽입되지 않음
<?php
ob_start();
$host="localhost"; // Host name
$username="XXXXXX"; // Mysql username
$password="XXXXXXXXXXXXXXXXXXX"; // Mysql password
$db_name="XXXXXXXX"; // Database name
$tbl_name="XXXXXXXXXX"; // Table name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// Define Variables
$myusername=$_POST['username'];
$password1=$_POST['password1'];
$password2=$_POST['password2'];
$emailadd=$_POST['emailadd'];
if($password1==$password2){
//Ecnrypt Password Using SHA512
$password1 = hash("sha512", $password1);
}
else {
//Passwords don't match return user to form with parameter
header("location:adduser.php?pwnomatch");
}
//Check user doesn't already exist
$sqlcheckuser="SELECT * FROM $tbl_name WHERE username='$username'";
$result1=mysql_query($sqlcheckuser);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result1);
//If user exists redirect back to login form
if($count==1){
header("location:adduser.php?userexist");
}
// To protect MySQL injection (more detail about MySQL injection)
$username = stripslashes($myusername);
$password1 = stripslashes($mypassword);
$emailadd = stripslashes($emailladd);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
$emailadd = mysql_real_escape_string($emailladd);
$sqlinsertuser="INSERT INTO $tbl_name ('username', 'password', 'emailaddress' VALUES ($username, $password1, $emailadd)";
mysql_query($sqlinsertuser);
// Mysql_num_row is counting table row
$count=mysql_num_rows($result2);
// Register user then redirect to "viewuser.php" with success parameter
header("location:viewuser.php?success");
ob_end_flush();
?>
SQL 인젝션은 여기에 있습니다. :) – hjpotter92