保护PHP表单和MySQL数据库

时间:2014-07-31 08:38:06

标签: php mysql security

上周我开始使用php和MySQL,所以如果我缺乏基本的理解而感到沮丧,我会道歉。

我的网站上有一个简单的html表单,记录了姓名,电子邮件地址和短信。

<form action="insert.php" method="post">
Your full name:<input type="text" name="name">
Email address:<input type="text" name="email">
Short message:<textarea cols="30" rows="3" name="message"></textarea>

insert.php看起来像这样...

<?php 
$con=mysqli_connect();
if (mysqli_connect_errno()) {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$name = mysqli_real_escape_string($con, $_POST['name']);
$email = mysqli_real_escape_string($con, $_POST['email']);
$message = mysqli_real_escape_string($con, $_POST['message']);

$sql="INSERT INTO Donators (name, email, message, date)
VALUES ('$name', '$email', '$message', NOW())";

if (!mysqli_query($con,$sql)) {
    die('Error: ' . mysqli_error($con));
}

header('Location: thankyou.php');
exit;

mysqli_close($con);
?>

然后将其发送到我用php管理员管理的mysql数据库。

我的问题是......

  1. 代码对用户是否安全,即电子邮件地址是否受到保护?
  2. 代码对我来说是否安全,即我的数据库中提交的数据是否受到保护?
  3. 最后什么才能阻止&#34;机器人&#34;填写表格,即重新填写最好的东西来实施?我尝试使用googles recaptcha,但也许是因为我的CSS或其他东西,它没有正确显示。
  4. 非常感谢你的帮助!

    詹姆斯

1 个答案:

答案 0 :(得分:1)

1)它永远不会100%安全。代码似乎找不到,但你应该知道新的补丁和版本来更新你的MySQL实例以及PHP和HTTP服务。

2)再次......是的,不是......确保它是你的角色。因此,只要您不在任何网页上显示它们,我们就可以认为它是“安全的”

3)最好的方法是制作自己的模块,这样你就不会受到“泛型”机器人的影响。通用我指的是那些反对通用验证码模块。例如,您可以向用户提出一个简单的问题。这应该足以避免最大的垃圾邮件机器人。

最好的问候,希望这会有所帮助。