Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Strip_标签不工作_Php_Html_Mysql - Fatal编程技术网

Php Strip_标签不工作

Php Strip_标签不工作,php,html,mysql,Php,Html,Mysql,我很难做到这一点,我想确保,如果用户在文本字段中添加HTML标记或PHP标记,它们不会被添加到数据库中。 我现在的代码将strip_标记以及HTML和PHP标记添加到数据库中 这是我的密码: <?php //Check for Valid Email function valid_email($email) { return filter_var($email, FILTER_VALIDATE_EMAIL); } //Add people Infor

我很难做到这一点,我想确保,如果用户在文本字段中添加HTML标记或PHP标记,它们不会被添加到数据库中。 我现在的代码将strip_标记以及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);
}

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

因此,您的查询需要如下所示:

$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:如果您使用字符串中的变量,请使用{$\u POST[email]}而不是$\u POST[email]来保持变量名的一致性

我要补充的是,我只在第一个条目中添加了这个函数,我还没来得及将它添加到其他条目中……你的代码对sql注入攻击非常开放。我一直在搜索google,我刚刚发现一篇帖子说关于sql注入的事情也是一样,它说我应该使用mysqli编写的语句,这样我可能会调查你无法从字符串内部调用函数。设置为“.strip_tags$\u POST[name]”,并在将值附加到查询之前对其进行转义。任何阅读此内容的人都不赞成使用mysql\u real\u escape\u字符串,另一种选择是mysqli\u real\u escape\u字符串