-3

我无法让它工作我想确保如果用户在表单中的文本字段中添加 HTML 标记或 PHP 标记,它们不会被添加到数据库中。我现在的代码将 strip_tags 与 HTML 和 PHP 标记一起添加到数据库中。

这是我的代码:

    <?php
      //Check for Valid Email
function valid_email($email) {
    return filter_var($email, FILTER_VALIDATE_EMAIL);
}


    //Add people Information to Database 
function addToDB ($sql, $con) {
require 'db.php';

    $sql= ("INSERT INTO people (name,email) VALUES(
            'strip_tags($_POST[name])', 
           '($_POST[email])')");

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


mysql_close($con);
}

    //Add vehicle Information to Database
function addToDB1 ($sql, $con) {
require 'db.php';

$sql="INSERT INTO vehicle (year, make, model, color)
VALUES
('$_POST[year]','$_POST[make]', '$_POST[model]', '$_POST[color]')";
if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }


mysql_close($con);
}

?>
4

1 回答 1

3

不能像在双引号字符串上显示变量那样在字符串中调用函数!

所以你的查询需要是这样的:

$sql= 'INSERT INTO people (name,email) VALUES(\''.strip_tags($_POST[name]).'\', \''.$_POST[email].'\')';

顺便说一句,您真的应该考虑转义来自 post/get 变量的输入数据!就像是:

$sql= 'INSERT INTO people (name,email) VALUES(\''.mysql_real_escape_string(strip_tags($_POST[name])).'\', \''.$_POST[email].'\')';

然而,最好的选择是使用准备好的语句来防止 sql 注入!


Eidt:如果您使用字符串中的变量,请使用 {$_POST[email]} 而不是 ($_POST[email]) 来保持您的变量名一致!

于 2012-11-19T00:11:11.373 回答