아래 코드는 양식 데이터를 제출할 때 사용하는 코드입니다. 양식은 문제없이 잘 진행되고 리디렉션됩니다.SQL이 실제 값 대신 0을 제출합니다. 또한 @ 및. 이메일 주소
데이터베이스 내의 행 데이터를 보면 companyname, firstname 및 lastname이 0으로 삽입 된 것을 알 수 있습니다. 전자 메일 주소가 데이터베이스에 삽입되는 동안 @ 및을 (를) 삭제하는 것으로 나타났습니다. 주소에서.
어떤 도움
주시면 감사하겠습니다.<?php
include("inc/conf.inc.php"); // Includes the db and form info.
if (!isset($_POST['submit'])) { // If the form has not been submitted.
} else { // The form has been submitted.
$companyname = form($_POST['companyname']);
$firstname = form($_POST['firstname']);
$lastname = form($_POST['lastname']);
$username = form($_POST['emailaddress']);
$password1 = md5($_POST['password1']); // Encrypts the password.
$password2 = md5($_POST['password2']);
if (($companyname == "") || ($firstname == "") || ($lastname == "") || ($username == "") || ($password1 == "") || ($password2 == "")) { // Checks for blanks.
exit("There was a field missing, please correct the form.");
}
$q = mysql_query("SELECT * FROM `users` WHERE emailaddress = '$username'") or die (mysql_error()); // mySQL Query
$r = mysql_num_rows($q); // Checks to see if anything is in the db.
if ($r > 0) { // If there are users with the same username/email.
exit("That email address is already in use!");
} else {
mysql_query("INSERT INTO `users` (companyname,firstname,lastname,emailaddress,password) VALUES ('$companyname','$firstname','$lastname','$username','$password1')") or die (mysql_error()); // Inserts the user.
header("Location: thankyou.php"); // Back to login.
}
}
mysql_close($db_connect); // Closes the connection.
?>
<?php
$db_user = ""; // Username
$db_pass = ""; // Password
$db_database = ""; // Database Name
$db_host = "localhost"; // Server Hostname
$db_connect = mysql_connect ($db_host, $db_user, $db_pass); // Connects to the database.
$db_select = mysql_select_db ($db_database); // Selects the database.
function form($data) { // Prevents SQL Injection
global $db_connect;
$data = preg_replace('/[^A-Za-z0-9_]/', '', $data);
$data = mysql_real_escape_string(trim($data), $db_connect);
return stripslashes($data);
}
?>
무엇처럼'form' 보이는 기능을합니까? – jeroen
'form()'함수는 문자열을 정수로 캐스팅하는 것과 같이 이상한 작업을 수행합니다. (숫자가 아닌 문자열의 경우 0이됩니다) –
SQL 주입에 대한 잠재적 가능성을 볼 수 있습니다. http://www.tizag.com/mysqlTutorial/mysql-php-sql-injection.php를보십시오 – doublesharp