通过保护安全性来保存用户输入

时间:2014-02-28 07:32:22

标签: php mysql mysqli

以下是我的脚本,我用它来插入我的数据库。我没有使用stripslashes or mysqli_escape,因为我读到当你使用预准备语句时我们不需要使用它。我面临的问题是,以下方法在安全性方面是好的,每当我插入特殊字符时,垃圾文本就像下面的例子一样存储在我的数据库中。请告诉我如何修改查询,以便在用户保存时存储值。谢谢,

You shouldn’t move them to the next level of delegation.

    $storeit = $_POST['value'];
    $stmt = $con->prepare("INSERT INTO db_table  (thevalue) VALUES (?)");
    $stmt->bind_param("s", $storeit); /// s means only string input is allowed

    if ($stmt->execute())
    {
    echo "true";
    }
    else
    echo "false".$stmt->error;

2 个答案:

答案 0 :(得分:1)

你必须在连接后调用$con->set_charset(),并传递网页的实际编码,即:

$con->set_charset('utf8');

如果您的网页正在发送utf-8作为内容字符集。

答案 1 :(得分:-1)

您的问题似乎与编码有关。

请确保您具有相同的编码:

  • 数据库
  • 数据库连接
  • 用户数据(html表单)
  • 存储时的php文件

关于输入数据,您可以检查和/或调整数据到您想要使用的任何字符集。您可以查看Multibyte String功能或iconv功能。