我用Bootstrap制作了一个html表单。我使用“required”来确保在提交表单的某些字段中填充数据。此表单转到打开数据库连接的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现在对我来说有点太过分了。
最佳答案
您的代码可能会受到SQL注入http://en.wikipedia.org/wiki/SQL_injection的危害。
尝试使用htmlspecialchars或更好地使用PDO而不是旧的和危险的mysql\ux*函数。