Strip_tags PHP MySQL无法正常工作

时间:2012-10-30 02:37:33

标签: php html mysql

我无法使其工作我想确保如果用户在文本字段中添加HTML标记或PHP标记,则表单中的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);
}

?>

1 个答案:

答案 0 :(得分: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])来保持你的varnames一致!