我使用Bootstrap创建了一个html表单。我使用“必需”来确保在要提交的表单的某些字段中填充数据。此表单转到php脚本,该脚本打开数据库连接,根据提交的表单输入值,指向感谢页面并关闭连接。
这是我的第一手编码形式,我关注的是安全性。如何阻止黑客/垃圾邮件发送者?
请问,请问我的代码问题,以便在我发布之前我可以解决这些问题。请保持温和,我是一名拥有约3个月编码经验的新手。
请注意原始表格实际上有9个字段,但我省略了它,假设这些细节不适用于此讨论。
HTML代码
<form class="form-horizontal" method="post" action="vacancy.php">
<div class="form-group">
<label for="company" class="col-sm-3 control-label">Company Name *</label>
<div class="col-sm-6">
<input type="text" name="company" class="form-control" placeholder="Enter Company Name" required />
</div>
</div>
<div class="form-group">
<label for="contactperson" class="col-sm-3 control-label">Contact Person *</label>
<div class="col-sm-6">
<input type="text" name="contactperson" class="form-control" placeholder="Enter Full Name" required />
</div>
</div>
<div class="form-group">
<label for="designation" class="col-sm-3 control-label">Designation *</label>
<div class="col-sm-6">
<input type="text" name="designation" class="form-control" placeholder="Enter Designation" required />
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-6">
<button type="submit" class="btn btn-primary">Submit</button>
<button type="reset" class="btn btn-default">Clear</button>
</div>
</div>
</form>
PHP代码
<?php
$con=mysqli_connect("localhost","db2u","password","db2");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql="INSERT INTO vacancy (Company, ContactPerson, Designation)
VALUES
('$_POST[company]','$_POST[contactperson]','$_POST[designation]')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
header("Location: thankyou.html");
mysqli_close($con);
?>
编辑:所以我似乎需要验证。我在看jqBootstrapValidation。甚至考虑htmlspecialchars(这更容易)。我相信两者都能做得同样出色吗? PDO目前对我来说太过分了。
答案 0 :(得分:0)
SQL注入可能会破坏您的代码http://en.wikipedia.org/wiki/SQL_injection。
尝试使用htmlspecialchars或更好地使用PDO代替OLD和DANGEROUS mysql_ *函数。
答案 1 :(得分:0)
永远不要相信用户输入。你应该使用mysqli_real_escape_string()函数来转义字符串。 http://www.php.net/manual/en/mysqli.real-escape-string.php
$company = mysqli_real_escape_string($_POST[company]);
$contactperson = mysqli_real_escape_string($_POST[contactperson]);
$designation = mysqli_real_escape_string($_POST[designation]);
$sql="INSERT INTO vacancy (Company, ContactPerson, Designation) VALUES ('$company','$contactperson','$designation')";
答案 2 :(得分:0)
您尚未验证php代码中的任何字段, 你应该把验证放在php文件中,任何用户都可以从输入中删除“required”并发布数据。