我有一个包含三种形式的页面,在这些表单上是单独的变量。该页面允许用户输入详细信息,并将它们插入MySQL数据库以供查看。我有脚本:
编辑:我也知道mySql_已被弃用,但为了示例,它工作正常。
编辑2:我知道你可以注入,但目前这是非常无关紧要的,我认为使用文本区域而不是简单的输入是一个问题。
编辑3:这只是一个错字。
$("#finishButton").click(function(e) { // store final value and execute script to insert into DB. On success, switch to success page
var commentsValid = $('#commentsDetailsForm').valid();
if (commentsValid) {
comments = document.getElementById('commentsInput').value;
e.preventDefault();
$.ajax({
type: "POST",
url: 'insert.php',
data: 'forenameInput=' + forename + '&surnameInput=' + surname + '&emailInput=' + email + '&telephoneInput=' + telephone + '&genderInput=' + gender + '&dobInput=' + dob + '&commentInput=' + comments,
success: function (data) {
if (data == "Error") {
$("#error").show();
$("#processing").hide();
} else {
window.location.href = "success.php";
}
}
});
} else {
}
});
这意味着将所有细节存储到数据库中。但事实上,除了注释(最终变量)之外,它将所有细节存储在数据库中。我在完成数据声明时是否存在其他根本性错误?
PHP脚本:
<?php
// Connection Details
$servername = "localhost";
$username = "root";
$password = "user10";
$dbname = "test";
// Create connection
$conn = mysql_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysql_connect_error());
}
// Select database
mysql_select_db($dbname,$conn);
// Store posted data in variables
$forename = $_POST['forenameInput'];
$surname = $_POST['surnameInput'];
$email= $_POST['emailInput'];
$telephone = $_POST['telephoneInput'];
$dob = $_POST['dobInput'];
$gender = $_POST['genderInput'];
$comments = $_POST['commentsInput'];
//Change date of birth so it's storable in mysql database
$dobAlt = date('Y-m-d',strtotime($dob));
// Insert form information into database
$sqlQuery = "INSERT INTO test (firstName, lastName, email, telephone, gender, dob, comments) VALUES ('$forename','$surname','$email','$telephone','$gender','$dobAlt', '$comments')";
// Check if query worked
if (mysql_query($sqlQuery, $conn)) {
} else {
echo "Error: " . $sql . "<br>" . mysql_error($conn);
}
// Close db
mysql_close();
?>
HTML:
<form id = "commentsDetailsForm" name = "commentsDetailsForm" method = "post">
<label for "commentsInput" id = "labels"> Comments </label>
<br>
<textarea id = "commentsInput" rows= "2" name = "commentsInput" class = "input-block-level"></textarea>
<br>
<div id = "registrationButtonWrapper">
<button id = "finishButton" class = "insertDetailsFinal" name = "finish"> finish > </button>
</div>
</form>
您还可以在http://chriswaszczuk.me/jobTest/看到它正在运行(您必须填写表单才能查看数据库)。
答案 0 :(得分:1)
你有一个拼写错误。
<强> JS 强>
'&commentInput=' + comments
- commentInput - singular
<强> PHP 强>
$comments = $_POST['commentsInput'];
- commentsInput - 复数
答案 1 :(得分:0)
问题可能是该值包含网址中不允许的字符。
您应该确保所有变量都已正确编码:
'&commentInput=' + encodeURIComponent(comments)
这适用于所有变量。
除此之外,你有一个SQL注入问题。您应该切换到PDO或mysqli并使用预准备语句。